BUU-EzObfus-Chapter2

写题解之前我只想说     angr yyds

这里可以确定输入字符串长度为22

直接把标准输入放内存 因为对该内存对值有改变,所以我们存两份到不同到地方

然后开一下优化 

sm.one_active.options.add(options.LAZY_SOLVES)

直接跑,然后,然后就出了

这里用的是windows python2.7

from angr import *

p = Project('./attachment.exe',auto_load_libs = False)
state = p.factory.blank_state(addr=0x004164F8)
simfd = state.posix.get_fd(0)
data,real_size = simfd.read_data(22)
state.memory.store(0x0042612C,data)
state.memory.store(0x00426020,data)
sm = p.factory.simulation_manager(state)
sm.one_active.options.add(options.LAZY_SOLVES)
sm.explore(find = 0x00416609,avoid = 0x004165EA)
text = sm.one_found.solver.eval(sm.one_found.memory.load(0x0042612C,22),cast_to = bytes)
print text
View Code

这里非angr方法说一下

写一个python脚本 提取出套娃函数里面的所有操作(出来返回和提升堆栈语句) 然后重新弄成一个二进制文件

因为有call 我用的递归写 但是直接给我爆栈,于是抱着失望的心用angr跑了

原文地址:https://www.cnblogs.com/lxy8584099/p/13721868.html