编辑:我也在搜索文档,但.PDB格式(v2.0)和有关VC ++ 6.0生成的.OBJ和.LIB文件。
#1 楼
鉴于您还没有.obj文件,因此尝试从.exe和.pdb文件生成.obj文件,然后对生成的.obj文件进行反向工程是没有意义的。如果要执行此操作,则.obj文件中将没有.exe或.pdb文件中没有的任何信息。因此,最好只使用.exe和.pdb文件。对于代码的反向工程,当尝试将x86代码反向工程回C时,Hex-Rays非常有用。 / C ++源代码。
评论
感谢您的回答,但是反编译每个.obj文件不是更容易和更有条理。我的意思是可执行文件不仅由.obj文件创建,而且也由.lib文件创建。应用程序使用的API中也包含一些.obj。因此,如果我直接使用可执行文件,则应该区分什么是用户编写的代码以及什么已经编码的API函数。编辑:我已经使用了Hex-Rays-顺便说一句,它对我有很大帮助。
–sasho648
13年7月14日在8:34
所以您已经有了.obj文件?
–詹森·格夫纳(Jason Geffner)
13年7月14日在17:20
否,但是我想我可以提取它们(它们的文件名存储在PDB文件中,我怀疑它们在PE文件中的组成部分也已描述,但不幸的是,我找不到它的格式的很好解释- PDB之一)。我的观点是,反编译和测试可执行文件的一小部分可能比编译整个测试可执行文件容易得多。
–sasho648
13年7月14日在17:45
因此,听起来您正在询问如何从PDB文件中提取信息。您最好开始一个新问题,因为您的原始问题已经得到回答。但是,对于FWIW,请参见此处以获取可以从PDB中提取的值:msdn.microsoft.com/en-us/library/4sy4ebfw.aspx
–詹森·格夫纳(Jason Geffner)
13年7月14日在19:07
#2 楼
如果您打算对游戏进行反向工程,是为了学习游戏的制作方式,那么您很可能最终会重新创建C / C ++文件(至少是主要组件)。恐怕没有固定的组装方法,您无法扭转某些事情并充分了解内部工作原理。有几种工具可以帮助您的工作。您可以使用几个出色的调试器:OllyDBG和Immunity Debugger。显然有Hex-Rays,它提供几种产品。有IDA,它是出色的多处理器分解器。 IDA有2个版本:免费版和商业版。还有Hex-Rays反编译器评论
抱歉,这里没有新信息。无论如何,谢谢你的回答。
–sasho648
13年7月14日在8:38
#3 楼
如果您对真正消化PE格式感兴趣,则绝对希望在此处查看参考:http://blog.dkbza.org/2012/08/pe-file-format-graphs.html这些图非常完美,即使分析标题以阻止RE,也可以绝对帮助您分析PE格式的未知文件。
评论
嗯,一个奇怪的解释。顺便说一句,我想拥有一些有关.PDB文件格式(v2.0)的文档,但本书《 Windows 2000 Undocumented secrets》已经读过它的描述,但不幸的是它并不完整(无处提及)流实际上代表。)。我也想了解更多有关VC ++ 6.0生成的.OBJ和.LIB文件的信息。谢谢。
–sasho648
13年7月14日在8:40
评论
关于机器代码可执行文件的反编译以及为什么这不是一件容易的事,请参阅此问题。