关于

关于我

大家好,我是 bahadir,一个对逆向工程和代码分析比较感兴趣的程序员。

我在做什么

平时主要研究一些软件的内部实现机制,特别是游戏相关的技术。最近在深入分析《杀手5》这款游戏,已经写了好几篇关于它的逆向分析文章,涵盖了生命值系统、射击机制、后坐力控制、得分系统等各个方面。

每次分析一个新功能都会先用 Cheat Engine 来定位内存地址和相关的汇编代码,然后把可执行文件拖到 IDA Pro 里进行静态分析,看看函数的具体实现逻辑。有时候还会用 ReClass.NET 来分析一些复杂的数据结构,特别是那些类指针和继承关系比较复杂的地方。

用得比较多的工具:

  • IDA Pro - 静态分析的主力工具,主要用来看函数逻辑和调用约定
  • Cheat Engine - 动态调试和内存分析,找内存地址基本靠它
  • ReClass.NET - 结构体分析,分析类的内存布局很有用
  • Visual Studio - 写代码和调试
  • Class Informer - IDA的插件,用来解析RTTI信息

编程语言方面主要用 C/C++,因为分析的游戏大多是用这些语言写的。偶尔也写点 Python 脚本来辅助分析,比如批量处理一些数据什么的。

这个博客

这里记录一些我在学习过程中的发现和思考,主要包括:

  • 游戏逆向分析 - 目前主要在写《杀手5》的系列分析,从生命值、射击、后坐力到得分系统都有涉及
  • Windows API 使用 - 比如如何获取进程PID和模块基址,这些在逆向分析中经常用到
  • 工具使用技巧 - IDA Pro、Cheat Engine、ReClass.NET 这些工具的一些使用心得
  • 遇到的坑和解决方案 - 比如补码存储负数、RTTI信息解析、虚函数表分析等等

写这些文章一方面是为了整理自己的思路,因为有时候分析完一个函数过段时间就忘了具体细节。另一方面也希望能对有相同兴趣的朋友有所帮助,毕竟这方面的中文资料还是比较少的。

分析方法

我的分析流程一般是这样的:

  1. 动态分析 - 先用 Cheat Engine 附加到目标程序,通过搜索内存值来定位关键数据
  2. 代码定位 - 用 “Find out what writes to this address” 功能找到修改这些数据的汇编代码
  3. 静态分析 - 把地址复制到 IDA Pro 中,分析函数的具体实现逻辑
  4. 结构分析 - 如果涉及复杂的类结构,会用 ReClass.NET 来分析内存布局
  5. 验证测试 - 最后回到 Cheat Engine 验证分析结果,比如修改关键参数看效果

这套流程用下来基本能把大部分游戏功能的实现原理搞清楚。

技术栈

  • 系统编程: Windows API, C/C++
  • 逆向分析: IDA Pro, x64dbg, Cheat Engine
  • 结构分析: ReClass.NET, Class Informer 插件
  • 调试工具: Process Monitor, API Monitor
  • 开发工具: Visual Studio, Git
  • 脚本语言: Python, JavaScript

最近在研究

  • 《杀手5》逆向分析系列 - 已经分析了生命值、射击、后坐力、得分等系统,还在继续深入
  • 游戏反作弊机制 - 研究一些游戏是如何检测和防止内存修改的
  • DLL注入技术 - 内部注入和外部注入的不同实现方式
  • RTTI信息解析 - 通过Class Informer插件来分析C++类的继承关系

联系方式

如果你对文章内容有疑问,或者想交流相关技术,可以通过以下方式联系我:

声明

博客中的所有技术内容仅供学习研究使用,请不要用于任何非法用途。


感谢你的访问!