unicorn教程三

本文深入解析混淆的shellcode,展示如何使用pwntools进行反汇编,识别并模拟系统调用。通过实例演示了如何修改二进制程序逻辑及在ARM架构下模拟执行程序,获取计算结果。

题目给了下列的shellcode
\xe8\xff\xff\xff\xff\xc0\x5d\x6a\x05\x5b\x29\xdd\x83\xc5\x4e\x89\xe9\x6a\x02\x03\x0c\x24\x5b\x31\xd2\x66\xba\x12\x00\x8b\x39\xc1\xe7\x10\xc1\xef\x10\x81\xe9\xfe\xff\xff\xff\x8b\x45\x00\xc1\xe0\x10\xc1\xe8\x10\x89\xc3\x09\xfb\x21\xf8\xf7\xd0\x21\xd8\x66\x89\x45\x00\x83\xc5\x02\x4a\x85\xd2\x0f\x85\xcf\xff\xff\xff\xec\x37\x75\x5d\x7a\x05\x28\xed\x24\xed\x24\xed\x0b\x88\x7f\xeb\x50\x98\x38\xf9\x5c\x96\x2b\x96\x70\xfe\xc6\xff\xc6\xff\x9f\x32\x1f\x58\x1e\x00\xd3\x80
这个shellcode是被混淆了的
我们可以使用pwntools自带的disasm快速根据shellcode返汇编代码
在这里插入图片描述
可以看到是x86-32的,而且调用了系统调用
所以思路类似于上一题,执行这段代码,然后对系统调用打hook,把参数print出来,然后再跳过去。
调用号放在eax寄存器,参数的顺序是:ebx,ecx,edx,esi,edi。在hook函数中使用reg_read读这几个寄存器
可以Hook一个int 80h指令,它由cd 80表示
hook函数如下
在这里插入图片描述
完整代码在6.py,运行后如下所示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值