《蜘蛛侠(Neversoft)反编译项目进度检查点 - 2024 年 7 月》

主要观点:作者自上次帖子以来在游戏代码分解方面取得了进展,分享了相关内容,包括进度概述、全局变量解读、处理移位指针、理解特定汇编指令、验证虚方法、编译器和反编译器的怪癖以及在其他平台上构建等方面。
关键信息

  • 仓库提交次数达 700 多次,有不同类型的待办事项。
  • 分解进度约 12%-16%,计划通过特定脚本测量。
  • 学会通过 Init/Find/Clear 函数解读全局变量,了解不同编译器在数组生成代码和指针处理上的差异。
  • 遇到移位指针问题,通过文章解决并得到更易读的伪代码。
  • 纠正了对某些汇编指令的错误理解,添加了虚方法验证框架。
  • 注意到编译器和反编译器的一些奇异性,需采取措施避免优化导致代码不匹配。
  • 在其他平台上构建代码时遇到一些编译器问题。
    重要细节
  • 分解进度计算时需考虑 IDA 对函数的识别和内联情况。
  • 微软 Visual C++编译器在代码优化方面有特定行为,如合并冗余检查和避免重复汇编。
  • 反编译器 IDA 能识别逗号运算符,但在某些函数的反编译中可能出错。
  • 为避免编译器优化导致代码不匹配,需采取特定措施,如将比较操作中的变量赋值给局部变量。
  • 在其他平台构建时,g++和 Clang++在处理特定表达式时可能出错,可通过常量折叠或加括号解决。
阅读 17
0 条评论