关于
关于我
大家好,我是 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信息解析、虚函数表分析等等
写这些文章一方面是为了整理自己的思路,因为有时候分析完一个函数过段时间就忘了具体细节。另一方面也希望能对有相同兴趣的朋友有所帮助,毕竟这方面的中文资料还是比较少的。
分析方法
我的分析流程一般是这样的:
- 动态分析 - 先用 Cheat Engine 附加到目标程序,通过搜索内存值来定位关键数据
- 代码定位 - 用 “Find out what writes to this address” 功能找到修改这些数据的汇编代码
- 静态分析 - 把地址复制到 IDA Pro 中,分析函数的具体实现逻辑
- 结构分析 - 如果涉及复杂的类结构,会用 ReClass.NET 来分析内存布局
- 验证测试 - 最后回到 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++类的继承关系
联系方式
如果你对文章内容有疑问,或者想交流相关技术,可以通过以下方式联系我:
- 邮箱: [email protected]
- GitHub: https://github.com/47bahadir
- 博客: https://bhdtec.com
声明
博客中的所有技术内容仅供学习研究使用,请不要用于任何非法用途。
感谢你的访问!