假设我们有一个函数,其中包含以下变量:
不同类型的堆栈上的局部变量,包括在局部类型窗口中定义的类型
不同类型的局部变量映射到寄存器
不同类型的功能参数
我有2个IDB,它们基于相同的二进制文件具有相同的功能,我想将此数据从一个IDB传递给另一个。让我们还假设我有一个在数据库之间传递相关数据类型的解决方案。
我也知道有一个函数save_user_lvar_settings通过使用相同的迭代器类user_lvar_visitor_t来设置这些变量。
我对此有以下疑问:
我应该从第一个数据库收集哪些数据以在第二个数据库中正确创建这些变量(使用IDAPython,IDA版本为6.8)?
我如何在第二个数据库中创建这些变量以使用save_user_lvar_settings或restore_user_lvar设置(使用IDAPython,IDA版本是6.8)?
更新:在问这个问题之前,我回顾了以下IDA协作解决方案:
Collabreate
ida2sql
IDA工具包
IDAsynergy
IDAsync
另一个更新
Diaphora
和找不到任何解决方案。
评论
不是答案,而是可能的帮助:ida2sql,请参见github.com/zynamics/ida2sql-plugin-ida。您可以看一下它们如何处理变量。至少可以解决第一个问题。不幸的是,他们不使用与hexrays相关的数据。但是您是对的,在提出这个问题之前,我不得不用我查看过的软件包列表来更新我的问题。
也许Diaphora吗?他们在比较数据库时确实使用HexRays数据。
@ tmr232是的,它们使用HexRays,但是我无法找到它们如何在数据库之间传递局部变量。据我所知,他们在AST树比较的基础上比较了2次十六进制反编译。