laok2 发表于 2021-4-4 11:54

angr,符号执行时,提示错误,如何处理

大家好,我在解CTF题目时候,想通过 angr的符号执行找到答案。
我的angr脚本如下 :

import angr
import claripy
import logging

proj = angr.Project("E:\\CrackMe03.exe",
                  auto_load_libs=False)


# @proj.hook(0x7ffefead)
# def print_flag(state):
#   print("hook")

init_state = proj.factory.full_init_state(add_options=angr.options.unicorn)

simgr = proj.factory.simulation_manager(init_state)

simgr.run(until=lambda sm_: len(sm_.active) > 1)

#因为没有else分支,所以没有void参数
simgr.explore(find=0x004013B9)

print(simgr.errored)
if len(simgr.found) == 0 :
    print("no is found")
else :
    flag = simgr.found[0].posix.dumps(0).strip(b'\n')


执行结果是:
[<State errored with "IR decoding error at 0x7ffefead. You can hook this instruction with a python replacement using project.hook(0x7ffefead, your_function, length=length_of_instruction).">]
no is found


意思是有问题,于是我加了一个hook,就是图中注释的部分,只打印一行字符。再次执行,结果变为:

hook
[<State errored with "Empty IRSB passed to HeavyVEXMixin.">]
no is found


请问,我该如何才能修复上面的错误提示呢?

如果我修改auto_load_libs=True,那么结果为:


WARNING | 2021-04-04 11:52:07,161 | angr.procedures.win32.dynamic_loading | GetProcAddress: forwarding failed for SetDefaultDllDirectories from kernel32.dll
[<State errored with "Can't handle callback function in FlsAlloc">]
no is found

请问这个又应该如何处理啊?

符号执行,有什么好的书籍可以推荐啊?

谢谢各位大侠。







whyida 发表于 2021-4-8 13:14

0x7ffefead 是系统函数,绕过这个函数或者hook后仿制一个类似功能的函数。

laok2 发表于 2021-4-12 13:32

whyida 发表于 2021-4-8 13:14
0x7ffefead 是系统函数,绕过这个函数或者hook后仿制一个类似功能的函数。

嗯嗯
我加了hook后,还是走不通啊。

我是在windows平台上面跑的
页: [1]
查看完整版本: angr,符号执行时,提示错误,如何处理