从没有源代码的内存转储中提取结构

时间:2017-03-22 19:05:03

标签: c++ debugging assembly reverse-engineering stack-trace

问题摘要
我们公司与已停产的计划合作 我们显然有.exe.pdb(可能它不包含结构)。
exe是已编译的VC++ 当软件崩溃时,它将内存转储到.dmp,我可以通过Visual Studio打开,但由于我们拥有源代码 - 我可以提取的信息非常少。 /> 我们可以看到堆栈和异常是什么(内存违规)但我们需要找出传递给函数的参数是什么,以便了解导致崩溃的原因。 参数是指向保存有价值信息的结构的指针。

图片
以下是我可以通过Visual Studio 2017(企业版)查看的内容 - 注意:没有可用的托管内存调试。

转储摘要(重量2.4gb,150mb压缩):

反编译
所有都是通过ida pro并按堆栈排序:
(0)StructItem::deletePendingItem(void)
(1)StructItem::PendFreeItem_(struct StructItem *a1, const char *a2, int a3)
(2)onTakeItem(struct StructPlayer *a1, struct TS_CS_TAKE_ITEM *a2)

深入了解
A rar with the exe and pdb,我担心我无法在此处发布内存转储,但请随时直接与我联系。

我正在寻找什么
有两种我感兴趣的结构:
StructPlayerStructItem都可以为我提供一个指向数据库索引的整数 StructItem的字符串可能存储在数据库中,只有对其索引的引用。

我的知识和技能
老实说,我几乎不知道集会 - 我对如何以及如何有一个大致的了解 如果答案可以指向逆向工程初学者 - 那将是非常棒的。

问题

  1. 从内存转储exepdb - 我如何提取 来自被调用函数的结构数据(显示在堆栈中) 直接来自转储。
  2. 如何从pdbexe
  3. 中找出结构数据顺序
  4. 哪些程序可以帮助我做到这一点以及如何做。

0 个答案:

没有答案