【发布时间】:2011-06-08 07:57:38
【问题描述】:
我正在尝试拆解并了解一个旧游戏的启动器(http://pastebin.com/raw.php?i=6Z4Xu3Cg 上的 asm 列表)。它是使用 Borland C++ 1995 构建的,并且在 asm 列表中有四个具有名称和 dtor 地址的类。如何找出其他函数属于哪个类?如何识别 vtable?毕竟,它应该包含所有内容。
顺便说一句,这与破坏复制保护无关。游戏太老了,没有任何形式的保护。我正在尝试做的事情与 OpenTTD 开发人员所做的一样。
谢谢你, 硬盘
【问题讨论】:
-
你为什么假设所有函数都属于类? C++ 是一种多范式语言,并且允许按照 C 的非成员函数。类似地,可能没有 vtable - 它们仅为具有虚拟函数的类生成,并且仅用于运行时多态性。如果游戏只有 4 个类,则它们很可能对系统的正交方面进行建模并且没有继承关系。无论如何,vtable 只有指向虚函数(也许还有 RTTI)的指针——这不是理解整体的魔法钥匙。
标签: c++ assembly decompiling borland-c++