Vico Bill< 刘 利 波 > 的个人网站

记录关于学习、工作中的技术点滴

C,C++,Rust,Ruby爱好者;热衷于游戏开发、任务自动化与跨平台;沉迷于游戏引擎与图形表现;深信'简单、多元'哲学的力量。


访问主页

游戏开发-逆向工程

破解的本质:数据解析!十六进制数据解析!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,追踪反调试手段
  • 内存值在改变时,进行移动,而非固定于地址内
  • 对数据进行各种不同的加密
最近的文章

游戏设计-参考游戏项目列表

控制台游戏 游戏(控制台) 要求 文字RPG(题材不限) 1. 10分钟玩法时间 2. 至少3个关卡 3. 至少7只怪 俄罗斯方块   贪吃蛇   乒乓球   打砖块   飞机大战   坦克大战   ...…

继续阅读
更早的文章

游戏开发-开发知识汇总

CMakeXMakeC++ Treat warning as error: WX -> WX-库开发: 避免全局状态,否则其生命周期的管理会相当麻烦 不要在公共头文件中定义通用类型,否则不同编译器的字节对齐会出现问题 不要在公共头文件中包含windows.h 小心对待自己的命名空间,不要导出你不想公开的符号 尝试建立稳定的 ABI 不要对结构体太疯狂 允许别人自定内存分配器。如果不能对每个context这样做,至少在每个库中这样做 不要强迫用户使用你所喜欢的构建工具...…

继续阅读