首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angr模拟状态下分配(malloc)内存?

如何在angr模拟状态下分配(malloc)内存?
EN

Stack Overflow用户
提问于 2019-12-02 16:08:39
回答 1查看 524关注 0票数 2

我成功地找到了如何使用angr运行程序,首先从内核转储(请参阅如何在加载elfcore后端后使用angr运行程序?)定义的状态开始,但现在我想知道:

如何在程序的SimulationState?中使用malloc内存?

我正在运行程序的起始状态是一个函数的开始,它有一个指针和一个长度。我希望能够以任意长度更新malloc内存,并将这个指针(和适当的长度)传递到函数中。

我发现有一个插件类,angr.state_plugins.heap.heap_libc.SimHeapLibc (文档),它有一个malloc方法,但是我如何使用这个插件,它实际上是我需要的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 15:59:27

好吧,想清楚了。

首先,您需要的插件类是angr.state_plugins.heap.heap_ptmalloc.SimHeapPTMalloc。原来angr.state_plugins.heap.heap_libc.SimHeapLibc只是基类。

然后,用例变成:

代码语言:javascript
复制
simstate = angr.factory.AngrObjectFactory(proj).blank_state()

# IMPORTANT NOTE: you need to register the plugin with the name heap or it will break
simstate.register_plugin("heap", angr.state_plugins.heap.heap_ptmalloc.SimHeapPTMalloc())

# Voila, malloc and use arbitrary amounts of memory in the simulation space.
ptr = self.simstate.heap.malloc(data_len)
simstate.memory.store(ptr, simstate.solver.BVV(data_bytes, data_len*8))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59142699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档