参考链接:https://www.52pojie.cn/thread-962068-1-1.html?tdsourcetag=s_pctim_aiomsg
WebAssembly 或者 wasm 是一个可移植、体积小、加载快并且兼容 Web 的全新格式。
我自己认为的wasm 是将c代码进行转换而得出的,它不是作为开发人员进行一行一行进行开发的,更多的是调用,以弥补JS自身存在的不足。当然,wasm本身的不易解读的特性,也对与网站的安全起到的好的促进的作用(个人见解,如有错误,欢迎指导)
现在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
[吐槽]:图片贴不上去,只能使用markDown插件
3、使用Cmake编译
注:如果出现类似报错,使用以下命令,然后重新编译
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
相关命令:
> mkdir build
> cd build
> cmake .. -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_INSTALL_PREFIX=..\ -G "Visual Studio 14 2015"
> cmake --build . --config DEBUG --target install
完成以上操作,会发现在路劲下出现了一个bin文件,我们所使用的工具都在里面
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与我们得到的两个文件放置在同一个文件夹内
使用IDA进行逆向
以上就是我找到的如何优雅的进行wasm文件的逆向的方式
重新梳理以下思路,就是将wasm变的可读性更高
.wasm文件 ----> .c文件 ----> .o文件 ----> 使用IDA进行静态分析
|