最后更新于
最后更新于
这份备忘录的部分内容基于。
通过 args
和 env
将参数列表和环境变量字典传递给 entry_state
和 full_init_state
。这些结构中的值可以是字符串或位向量,并将被序列化为状态中的参数和环境,用于模拟执行。默认的 args
是一个空列表,因此,如果您要分析的程序期望至少找到一个 argv[0]
,您应该始终提供它!
如果您希望 argc
是符号的,可以将符号位向量作为 argc
传递给 entry_state
和 full_init_state
构造函数。但要小心:如果这样做,您还应该向生成的状态添加一个约束,即您的 argc 值不能大于您传递给 args
的参数数量。
要使用调用状态,应该使用 .call_state(addr, arg1, arg2, ...)
,其中 addr
是您想要调用的函数的地址,argN
是该函数的第 N 个参数,可以是 Python 整数、字符串、数组或位向量。如果您想要分配内存并实际传递一个对象的指针,您应该将其包装在 PointerWrapper 中,即 angr.PointerWrapper("point to me!")
。这个 API 的结果可能有点不可预测,但我们正在努力改进。
此外,您可以使用proj.hook_symbol(name, hook)
,将符号的名称作为第一个参数提供,以挂钩符号所在的地址
如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看!
获取
发现,我们的独家
加入 💬 或 或 关注我们的Twitter 🐦 。
通过向和 github仓库提交PR来分享您的黑客技巧。