此文存档于看雪论坛和本人的博客原视频在此原幻灯片在此
阅读《Reversing:逆向工程揭密》从阅读Eldad Eilam的《Reversing:逆向工程揭密》开始。虽然这本书并不完美,但这是一个很好的开始。你会学到:
学习汇编学习至少一种架构的汇编。x86是一个不错的开始。这不是因为它简单、格式统一、易于理解,或是“最好的架构”,事实上它一点也不是这样。但学习x86可以教会你很多东西。它是非常流行的,而且学习这种从某种意义上来说相当丑陋的汇编会让你对以后碰到的东西驾轻就熟。
逆向一个游戏游戏对于逆向分析来说是很好的素材。
阅读《编译原理》阅读Aho等人著的“龙书”——《编译原理》。这不是一本最好的书,但是我个人没有读过那些可能更好的书,无法直接推荐。至少,这本书的确提供了一个很好的基础。你会学到:
编写一个源到源编译器源到源编译器又被称为“转译器”(这可能是科技圈里最糟糕的术语)。这是接触编译器开发的一个很好的方式,甚至比阅读《编译原理》还要有价值。
编写一个汇编器编写汇编器其实并不是非常有价值的练习,但是这种简单和短小的练习最终会对你有好处。花上几天或几周把这件事干完。
编写另一个将源码转化为汇编代码的编译器这次,你将会将源码转化为汇编代码。这可能是你在这整个列表中将要做的最难的事,这也是我们第二年要做的第一件事,因为这很有价值。
阅读《C语言逆向编译技术——Reverse Compilation Techniques》理解反编译器原理的好处是说都说不完的。这会为开发反编译器和反混淆器、对代码进行逆向工程、破解任何东西打好基础。
编写一个字节码反编译器Android的Dalvik和.NET的通用中间语言(CIL)都很易于理解和上手。不像其他字节码,Dalvik和CIL真实地反映了源语言的样子。这使得它们成为入门的最佳选择。
编写一个机器码反编译器反编译机器码与反编译字节码是彻底不同的。源语言,如C、C++、Rust等等,是与目标架构(机器码)完全不同的。这意味着你的反编译器需要更多地去推断程序行为。这也意味着你在这个过程中会学到更多。
阅读OSDev wikiOSDev wiki绝对是网上最佳的关于内核和操作系统的信息的来源。它涵盖了目标系统的细节、如何编写启动引导程序(bootloader)、基础的图形学和中断的原理、或其他内容。
编写一个“玩具”内核这可能是对于大部分人来说最陌生的一件事。这与你(无论是在本篇指南中还是在你的职业生涯中)做过的任何事都不同,但是你会学到许多东西。这也是相当有趣的。
阅读OSDev wiki
重新编写你的“玩具”内核既然你已经编写过一次内核了,那么就以一种更好的方式再做一次。你知道你第一次犯了一些可怕的错误,以及你把内核写成了完全不可移植的。是时候改改了。
编写一个微内核你的第一个内核几乎肯定是一团糟,很可能没有任何分开的地址空间,或许还没有进程。是时候改改了。
编写一个解释模拟器编写游戏系统的模拟器可以让你真正地将所学知识运用于实践。让我们从简单的东西开始。
编写一个重编译模拟器现在我们可以尝试一些编译器的开发工作。重编译器是一个有趣的课题,只有极其少数人研究重编译器。
为一个黑盒平台编写一个模拟器现在很少有文档不完善的平台,但还是存在的。比如说原来的Xbox的文档就是不完善的。事实上,如果一个东西是特别老或特别新的,那么它有完善文档或好的现有的模拟器的可能性就更小。大多数从80年代末期到00年代中期的平台都有着比较完善的文档或模拟器。所以,你可以选择孩子的玩具,比如Vtech的手持设备,并尝试把代码从设备中拖下来并模拟它。这些代码几乎是没人碰过的。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
看血大叔 这一套搞完了能做英雄联盟和地下城的外挂么?
找一个老的3D游戏,年份最好是从90年代末期到00年代中期,而且是在自制引擎上运行的。一定要选择自制引擎的游戏,因为现成的引擎一般有着更开放的格式,这不是我们想要的。通过逆向工程了解它的数据存档格式。编写一个解密器。通过逆向工程了解他的模型格式。写一个渲染器。加分项:在OpenGL或WebGL上写这个渲染器并移植到Vulkan。理解3D API对于以后是非常有用的。
我希望通过 30 天的定制学习计划来完成以上任务。作为一个渴望不断进步的 进阶学习者,我希望你能帮我制定一个个性化的学习路线,以帮助我有效地掌握以上技能。在这个学习计划中,包括具体的学习目标、每日的学习任务、适用的学习资源以及评估进展的方式。请在下面的回答中提供详细的指导和建议,使我能够在这 30 天内取得最佳的学习效果。
GPT-4
基于您的需求,以下是一个为期30天的定制学习计划:
学习目标:理解并掌握游戏逆向工程的基本知识和技能,包括数据存档格式,加密/解密技术,模型格式,以及3D渲染技术。
学习资源:
每日学习任务与进度评估:
第1-5天:选择一个适合的3D游戏。阅读《逆向工程核心原理》的基础篇章,理解逆向工程的基本概念。尝试使用IDA Pro或Ghidra分析游戏的可执行文件。评估:能否理解并操作逆向工程工具。
第6-10天:研究游戏的数据存档格式。尝试使用逆向工程工具识别和解析文件格式。评估:是否能理解和分析游戏的数据存档格式。
第11-15天:编写一个解密器。根据已经获取的数据存档格式,使用C++或Python编写一个解密器。评估:能否编写出能够解密游戏数据的程序。
第16-20天:研究游戏的模型格式。尝试使用逆向工程工具识别和解析模型格式。评估:是否能理解和分析游戏的模型格式。
第21-25天:学习OpenGL或WebGL,开始编写一个渲染器。阅读《OpenGL超级宝典》,或者跟随Learn OpenGL的教程。评估:能否理解3D图形的基本概念,是否已经开始编写渲染器。
第26-30天:继续编写渲染器,尝试将其移植到Vulkan。阅读《Vulkan编程指南》,或者跟随Vulkan Tutorial的教程。评估:渲染器的开发进度,是否已经开始学习和使用Vulkan。
注意:这个计划假设您已经有了一定的编程基础,特别是C++。如果您在学习过程中遇到困难,不要灰心,这是正常的。逆向工程是一个复杂的技能,需要时间和实践来掌握。请不要急于求成,而是专注于理解和学习。祝您学习顺利!
请给我推荐一个符合以上要求的游戏
选择一个适合的游戏进行逆向工程分析,确实不是一件容易的事情。不过,考虑到您的要求,我推荐您尝试逆向分析"Quake III Arena"。
"Quake III Arena"是一款在1999年由id Software开发的第一人称射击游戏,它是基于id Tech 3引擎(也称为Quake III引擎)开发的。这款引擎是id Software自己开发的,而且在2005年以后,它的源代码已经在GPL许可证下开源了。这意味着,您可以在GitHub等地方找到它的源代码,这对于您理解游戏的内部工作原理和数据格式等方面可能会有所帮助。
但是值得注意的是,即使有了源代码,理解和逆向分析一个游戏引擎仍然是一项非常复杂的任务。游戏引擎中涉及到很多不同的技术和概念,包括图形渲染,物理模拟,音频处理,网络编程等等。此外,逆向工程也需要相当高的技巧和耐心。所以,我建议您在开始这项任务之前,先确保您已经具备了足够的编程知识和逆向工程技能。
另外,尽管"Quake III Arena"的源代码是开源的,但是游戏的内容(比如纹理,模型,声音等)仍然是受版权保护的。所以,在进行逆向分析的时候,您需要遵守相应的法律和规定,不要将分析的结果用于非法的用途。
祝您学习顺利!
有没有同道一起学习的,私聊
qj111111 有没有同道一起学习的,私聊