秃子 发表于 2019-11-7 20:17:44

wasm 文件逆向

参考链接:https://www.52pojie.cn/thread-962068-1-1.html?tdsourcetag=s_pctim_aiomsg

WebAssembly 或者 wasm 是一个可移植、体积小、加载快并且兼容 Web 的全新格式。
我自己认为的wasm 是将c代码进行转换而得出的,它不是作为开发人员进行一行一行进行开发的,更多的是调用,以弥补JS自身存在的不足。当然,wasm本身的不易解读的特性,也对与网站的安全起到的好的促进的作用(个人见解,如有错误,欢迎指导)

![](https://img2018.cnblogs.com/blog/1158320/201811/1158320-20181108142841917-1620766146.png)

现在wasm 越来越流行,以至于在CTF比赛中也出现了类似的题目(虽然我没怎么做过),所以今天我来介绍一下如何优雅的逆向wasm 文件

1、开始前的准备
        *安装CMake:https://cmake.org/
        *安装MinGW:https://osdn.net/projects/mingw/releases/

2、从github 上克隆下来wabt:https://github.com/WebAssembly/wabt
git clone https://github.com/WebAssembly/wabt.git
!(https://i.loli.net/2019/11/07/NL8YJjHx4mCFSuQ.png)

[吐槽]:图片贴不上去,只能使用markDown插件


3、使用Cmake编译
!(https://i.loli.net/2019/11/07/HRdaLS2jGBi7Kck.png)

注:如果出现类似报错,使用以下命令,然后重新编译

CMake Error at CMakeLists.txt:446 (message):
Can't find third_party/gtest.Run git submodule update --init, or disable
with CMake -DBUILD_TESTS=OFF.


命令:git submodule update --init


!(https://i.loli.net/2019/11/07/2cRPnMbeWGvNHa8.png)

相关命令:


> mkdir build
> cd build
> cmake .. -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_INSTALL_PREFIX=..\ -G "Visual Studio 14 2015"
> cmake --build . --config DEBUG --target install



完成以上操作,会发现在路劲下出现了一个bin文件,我们所使用的工具都在里面
!(https://i.loli.net/2019/11/07/Ds6GIuCHtNnkiF7.png)

4、使用wasm2c将wasm文件转换成c文件并保存为.c
wasm2c C:\Users\JJR\Desktop\a.wasm -o wasm.c
然后会得到两个文件,分别是wasm.c和wasm.h

我们可以尝试打开文件,发现里面的c语言可读性非常高,但是局限就是如果文件太大,代码量太大,也不利于我们分析,所以有一种优雅的方式就是使用MinGW将c文件编译成.o文件,使用IDA进行逆向,查看伪代码

5、使用MinWG
将wasm-rt.h、wasm-rt-impl.c、wasm-rt-impl.h与我们得到的两个文件放置在同一个文件夹内

gcc -c wasm.c -o wasm.o

使用IDA进行逆向
!(https://i.loli.net/2019/11/07/CMwHhL2zpk7fvs1.png)


以上就是我找到的如何优雅的进行wasm文件的逆向的方式
重新梳理以下思路,就是将wasm变的可读性更高
.wasm文件 ----> .c文件 ----> .o文件 ----> 使用IDA进行静态分析

roger 发表于 2019-11-8 14:43:53

这个可以动态调试吗?需要用什么工具?

秃子 发表于 2019-11-8 23:57:03

xuenixiang 发表于 2019-11-8 14:43
这个可以动态调试吗?需要用什么工具?

这个是使用的IDA pro 反汇编的gcc 编译的.o文件,动态调试的化没尝试过,大佬可以try try

agongzuoshi 发表于 2021-9-15 11:39:49

非常不错啊,感谢楼主无私的共享精神!
页: [1]
查看完整版本: wasm 文件逆向