我们以这道题举例
题目在
buuctf上
前面我就不说了,主要分享知识点
首先第一步肯定就是找到加密函数
1.动调(推荐)
下断点在动调后
确保程序可以执行在这里!()()(重要)
来到汇编解密
可以看见开始是1500
然后for循环是187
地址选择就是1500-1500+hex(187)
其实到那个地方,有明显界限
按u重新转换为字节码
回到1500开头
按p进行编译
成功!
2.IDApython
跟上面一样,先锁定加密过程和加密地址
观察加密逻辑
简单的异或
shift+F2
打开IDApython
import idc
addr = 0x401500 # encrypt函数的地址
for i in range(187):
b = get_bytes(addr + i, 1)
idc.patch_byte(addr + i, ord(b) ^ 0x41)
固定写法,保存就是
在地址上重新UP一下
成功!
因为没有重新编译
所以动调也是可以很好看见
3.ollydug
把文件拖入Ollydug中
点击plugins-中文搜索引擎-智能搜索
找到当前字符串
同时我们可以打开IDA,观察
因为IDA的汇编更清楚
我们找到SMC后
在这里
然后在OD里面找到一样的位置
实在不行,可以选择看地址
然后我们F2下断点
因为他会执行这个函数,所以我们断在下面的Call
然后单步F7步入
在这个界面点击plugins-od dump-第一个
脱壳,
得到一个exe文件
IDA打开
OK!