wasm是基于堆栈的虚拟机的二进制指令格式。在这次比赛中遇到,记录一下。

IDA反编译插件

食用方法:

install the python module:

python.exe setup.py install

manually install the WebAssembly file loader:

mv loaders\wasm_loader.py %IDADIR%\loaders\wasm_loader.py

manually install the WebAssembly processor:

mv procs\wasm_proc.py %IDADIR%\procs\wasm_proc.py

WASM编译环境搭建

git clone https://github.com/juj/emsdk.git

cd emsdk

./emsdk install --build=Release sdk-incoming-64bit binaryen-master-64bit

./emsdk activate --global --build=Release sdk-incoming-64bit binaryen-master-64bit

source ./emsdk_env.sh

编译C为WASM

emcc biu.c -s WASM=1 -o biu.html -g4 -O2

-s WASM=1指定输出为wasm形式,Emscripten默认为asm.js的形式

-o biu.html可以指定生成html文件、以及wasm文件

-g4指定debug信息等级,详情看—-help

-O2指定优化等级,详情看—-help

WABT工具包

WABT(我们将其称为“ wabbit”)是用于WebAssembly的一套工具,包括:

wat2wasm:从WebAssembly文本格式转换为WebAssembly二进制格式

wasm2wat:的逆函数,从二进制格式转换回文本格式(也称为.wat)

wasm-objdump:显示有关wasm二进制文件的信息。与objdump类似。

wasm-interp:使用基于堆栈的解释器解码并运行WebAssembly二进制文件

wasm-decompile:将wasm二进制文件反编译为可读的类似C的语法。

wat-desugar:解析规范解释程序支持的.wat文本格式(S表达式,平面语法或混合格式)并打印“规范”平面格式

wasm2c:将WebAssembly二进制文件转换为C源代码和标头

wasm-strip:删除WebAssembly二进制文件的部分

wasm-validate:验证WebAssembly二进制格式的文件

wast2json:将wasm spec测试格式的文件转换为JSON文件和关联的wasm二进制文件

spectest-interp:读取Spectest JSON文件,然后在解释器中运行其测试

将wasm转换为C语言,主要用到wasm2c

食用方法

git clone --recursive https://github.com/WebAssembly/wabt

cd wabt

mkdir build

cd build

cmake ..

cmake--build .

wasm2c使用

/home/ubuntu/wabt/build/wasm2c chall.wasm -o out.c

将chall.wasm转换为out.c

此时的C代码并不直观。

优化

将之前反编译出来的wasm.c,wasm.h,以及wabt项目内的wasm-rt.h,wasm-rt-impl.c,wasm-rt-impl.h三个文件放到同一个文件夹。

gcc -c out.c -o out.o

这样得到的源文件在IDA中分析就会轻松一些

i32_load形式的函数为取值函数,第一个参数为取值对象,第二个参数为偏移

i32_store形式的函数为操作存储函数,第一个参数为存储对象,第二个参数为存储位置,第三个参数为操作方式

动态调用

Python开启服务器

全局安装

npm i http-server -g

快速使用

http-server

默认端口8080,指定端口

http-server -a 127.0.0.1 -p 8090

如果路径中有index.html,默认为主页

HTML调用

Simple template

.then(res=>res.arrayBuffer()

).then(bytes=>WebAssembly.instantiate(bytes, importObject)

).then(results=>{

results.instance.exports.exported_func();

});

chall.wasm放在与index.html同目录

其他

python wasm_WASM逆向分析相关推荐

  1. Python爬虫:逆向分析某酷音乐请求参数

    文章目录 前言 1. 请求分析 2. 获取参数 3. 提取信息 结束语 前言   免责声明:     本篇博文的初衷是分享自己学习逆向分析时的个人感悟,所涉及的内容仅供学习.交流,请勿将其用于非法用途 ...

  2. Python爬虫:逆向分析酷我音乐请求参数(支持SQ超品音质)

    文章目录 前言 1. 请求分析 2. 获取参数 3. 完整代码 结束语 前言   免责声明:     本篇博文的初衷是分享自己学习逆向分析时的个人感悟,所涉及的内容仅供学习.交流,请勿将其用于非法用途 ...

  3. Python爬虫从入门到精通:(44)JS逆向:试客联盟的逆向分析_Python涛哥

    我们来看下试客联盟的逆向分析,切换到密码登陆. JS代码解析 我们进行抓包.经过分析,我们看到密码可能在这个js里实现 点进去后,我们发现源码里有一段var key = new RSAKeyPair( ...

  4. Python爬虫从入门到精通:(42)JS逆向-闭包:凡科网逆向分析_Python涛哥

    JS源码分析 直接请求抓包如下: 我们看到密文就是一个MD5的形式. 那么我们来分析下JS代码. 搜索pwd的时候,我们看到有49个.为了方便,我们可以试着搜索pwd:.pwd :.pwd=.pwd ...

  5. Python爬虫:逆向分析某云音乐加密参数

    文章目录 前言 1. 请求分析 2. 参数分析 3. 加密分析 4. 模拟加密 5. 获取ID 6. 代码框架 结束语 前言   免责声明:     本篇博文的初衷是分享自己学习逆向分析时的个人感悟, ...

  6. NSA释出逆向工程工具GHIDRA针对恶意软件逆向分析

    2019独角兽企业重金招聘Python工程师标准>>> 美国国安局(National Security Agency,NSA)准备在今年3月举行的RSA安全会议上免费释出名为GHID ...

  7. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  9. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. 【ACM】杭电OJ 2090
  2. 知乎 高级操作系统_知乎高赞:Linux!为何他一人就写出这么强的系统,中国却做不出来?...
  3. python爬虫必会的23个项目
  4. HDU 5828 Rikka with Sequence (线段树+剪枝优化)
  5. 第0章:战胜恐惧和懊悔
  6. P6860-象棋与马【欧拉函数,杜教筛】
  7. vector c++ 赋值_面对拷贝赋值时发生的自我赋值的正确态度时接受而不是防止
  8. VC++ 读取和保存文件对话框及默认目录
  9. textarea回车不换行 小程序_微信小程序商城到底值得不值得开通?
  10. 完全用 gnu/linux 工作,怎样完全用 GNU/Linux 工作
  11. 理解lua中 . : self
  12. WordPress 响应式全站 AJAX 主题:Beginning
  13. Linux 文件系统相关的命令
  14. 异步通知《来自Linux驱动程序开发实例》
  15. 使用supervisor提高nodejs调试效率
  16. pythonplot绘图xrd_学术干货 | 手把手教你如何快速绘制XRD标准图
  17. 网课答案公众号搭建过程详解
  18. 深入理解快速排序和STL的sort算法
  19. nginx容器通过docker内置DNS实现动态负载
  20. 基于RV1126 Video分析-----链接 isp 与mipi csi 的media模块

热门文章

  1. android最新市场占比,2020年安卓手机市场占比情况公布
  2. SS, DSDS, DR-DSDS,DSDA 区别与理解
  3. 阿里云OSS-大文件-分片上传
  4. Power BI瀑布图
  5. 循环改变数组长度时的对策
  6. hbase查看表结构_HBase语法
  7. 将 JSON 文件导入 Excel
  8. 为什么唱吧iOS 6.0选择了Mantle
  9. linux 系统开启ssh连接
  10. 买天猫网店转让商标是一起转让吗?