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
这里非angr方法说一下
写一个python脚本 提取出套娃函数里面的所有操作(出来返回和提升堆栈语句) 然后重新弄成一个二进制文件
因为有call 我用的递归写 但是直接给我爆栈,于是抱着失望的心用angr跑了