破解的本质:数据解析!十六进制数据解析!Code->Human!
在逆向工程中,包含两种数据:静态数据和动态数据。
数据,包含操作指令和内容。内容数据通常由header,data, tail组成。
header中常包含:version,size, chunck_offsets tail中常包含:checksum
对整体数据而言,又可进行加密、压缩操作
(crypto (zip (data)))
静态数据分析
静态数据包括:资产(Level, Audio, Model, Texture, Animation、Layout…)、游戏存档、游戏逻辑(exe, 脚本)、文本文件(配置、日志…)等。
在游戏发行中,通常以静态数据为主。
动态数据分析
动态数据包括:网络通信数据、临时生成数据等
攻击
攻击:边缘数据;涌入数据;数据污染;伪造数据;越权访问;
- int 值溢出
- memcpy 负长度
- 缓冲区溢出
- 数组越界
- 非法内存访问
- 多次释放
- 悬挂指针
- 访问空指针
- 内存泄漏
- 爆栈
- 除0
-
无限循环
- 注入,hook
- 内存dump
- 网络嗅探、拦截
游戏常见的作弊:
- 修改数值,让游戏更简单。如金币、血量
- 获得能力:如穿墙、跳得更高、开放地图等
- 解锁隐藏项
- 辅助,提供游戏中未提供的功能。如UI扩展
-
机器人。刷游戏资源,用以虚拟道具交易
- 加密.text段,进行混淆;附加checkpoint,追踪反调试手段
- 内存值在改变时,进行移动,而非固定于地址内
- 对数据进行各种不同的加密