当前位置: 首页 > news >正文

射击训练项目逆向纪实

射击训练项目逆向纪实:从缺失头文件到成功获取游戏源码

前言

这个一个单片机射击训练小游戏从书上拿到的源码是不全的,缺少关键的头文件lcd_160128.h。官方组件也找不到了,没法直接补全。不过好在压缩包里提供了编译好的 HEX 文件,于是决定走一条“曲线救国”的路——反编译 + AI 辅助还原。下面记录整个过程,也算是一份另类的逆向教程。


一、初编译:头文件报错

首先,将书中源码截图交给 AI 提取文字(懒得手打)。

得到源码之后,先编译看看什么情况。

可以发现头文件lcd_160128.h报错,——源码里根本没给出这个文件。这个头文件本应定义 160128 液晶屏的显示相关代码和宏,缺少它就没法直接编译。

二、另辟蹊径:反编译 HEX 文件

由于压缩包中有编译之后的HEX文件,那么我们可以另辟蹊径,曲线救国—求救于”那个女人”!!!。

掏出 IDA 将 HEX 文件转为汇编代码,然后再用 AI 把汇编翻译成 C 语言。


三、AI 翻译汇编 → C 代码

拿到汇编代码后,将书上原始的残缺源码和汇编一起喂给 AI,让它试着写出完整的 C 代码。
这里推荐的工具:

  • Kimi 2.6智谱 GLM4.7(国内代码效率数一数二,没充值时可能需要排队)
  • 有学生免费额度的话,可以试试Google Gemini
  • 预算充足的话,ChatGPT Plus(Codex)Claude Code也很给力,顺便一提,DeepSeek 在这个场景下表现也不错。

不过目前还没有哪个 AI 能一次成功。用 Gemini 生成的代码也编译不过,这时候就需要下一步:结合电路图


四、结合电路图,让 AI 补全 LCD 驱动

把 Proteus 电路图的接线信息告诉 AI。
如果是 DeepSeek 这种没有视觉能力的模型,你需要手动描述:哪个芯片的哪个引脚接了屏幕的哪个引脚。

接着让 AI 根据书中源码逻辑和仿真运行效果,推测并补全lcd_160128.clcd_160128.h两个文件,然后添加到 Keil 工程里。
多调试几次,基本就能成功。

小技巧:可以使用Trae这类 AI Agent,它能直接操控电脑和项目文件,不用手动上传文件给 AI,还能节省 token。

经过几轮调试,终于成功得到了完整的游戏源码。


五、字模与图片处理

有了源码,接下来要处理显示用的字模和图片。

5.1 汉字字模

160128 屏幕上需要显示汉字,可以用字模软件或在线网站提取。
推荐两个在线工具:

  • 单片机汉字在线取模
  • LCD/OLED汉字字模提取软件(HZK16宋体)

输入汉字,得到一串十六进制数据,然后粘贴到lcd_160128.c文件的code struct typFNT_GB16 GB_16[]数组中。
需要注意:数组里不能直接用汉字,得先查到汉字的区位码,再转成十六进制。

5.2 图片(BMP 转数组)

图片处理更简单,同样可以用在线转换工具,或者 GitHub 上开源的 Python 脚本。
将转换得到的两组数组分别粘贴到main.c中:

  • code uchar const Game_Surface[](游戏界面)
  • code uchar const Gun_Image[](枪的图案)

射击目标那个方块也能自定义,对应数组code uchar Target_Image[]


六、“老六”环节:破解玩法

如果不想看代码细节,可以直接让 Trae 帮忙改。
手动改其实也差不多,无非是调整一些碰撞判定、得分逻辑或子弹速度等参数。
这部分就留给各位自由发挥了~


总结

这次逆向经历算是典型的“缺文件 → 反编译 → AI 辅助还原”流程。
虽然一开始头文件缺失让人头大,但借助 IDA 和各类 AI 工具,最终还是把完整的游戏源码给“捞”了回来。
如果你也遇到类似的老项目缺文件问题,不妨试试这条路。

工具链回顾

  • 反编译:IDA
  • AI 翻译:Gemini / Kimi / GLM4.7 / ChatGPT
  • 自动补全调试:Trae
  • 字模/图片:在线取模工具 + 开源转换脚本

希望这篇记录对你有帮助,祝你也能顺利“救活”那些看似无解的老项目。
有需要的我已经把源码放到gitee:
源码仓库

http://www.cnnetsun.cn/news/2613634.html

相关文章:

  • claude code(六):【Claude Code官方最佳实践4️⃣】:常见的工作流程
  • Keil PK51 V9.55栈分配问题解析与解决方案
  • 别再自己造轮子了!用Avue-data快速搞定企业级数据大屏(附前后端联调避坑指南)
  • 【ChatGPT广告文案生成实战指南】:20年营销技术专家亲授7大高转化模板与避坑清单
  • 从IMU到机器人定位:手把手教你用ESKF融合IMU与GPS数据(附Python代码)
  • [题材选股] “长鑫”退潮,“材料”接棒:锁定10只主升浪核心股!QTYX-V3.4.8量化复盘
  • 免费获取米哈游游戏字体:11款精美架空文字字体完整指南与创意应用
  • 终极指南:5步在Mac上解锁QQ音乐加密文件,实现全平台播放自由
  • 解放你的音乐收藏:qmcdump实战解密QQ音乐加密文件
  • NHSE终极指南:5步轻松打造你的专属动物森友会岛屿
  • 终极Wand增强指南:三步免费解锁专业游戏修改功能 [特殊字符]
  • 机房运维实战:用清华同方同方易教V2.4给50台学生机批量装系统,20分钟搞定一桌
  • Kali Linux磁盘扩容避坑指南:搞定fstab和resume配置,开机唤醒不再‘转圈圈’
  • 混合模型路由:让 Agent 在质量与成本之间自动平衡
  • 从GWR到GTWR再到mGTWR:时空地理加权回归模型演进与Python实战选型指南
  • 【技术解析】基于Node.js与Session管理的EduCoder答案接口自动化实践
  • Windows鼠标指针美化终极指南:免费获取macOS风格指针完整教程
  • 3分钟掌握Python金融数据获取:告别爬虫,轻松获取同花顺问财数据
  • 保姆级教程:用VSCode+Verilog插件实现代码自动例化和Testbench生成(含ctags配置避坑)
  • IMU融合定位实战:手把手教你用ESKF搞定无人机状态估计(附Python代码)
  • 终极魔兽争霸III增强插件:15+实用功能一站式配置指南
  • 从‘理想模型’到‘抗扰实战’:深入聊聊扰动观测器(DOB)设计中的三个经典陷阱与调参心得
  • 用Simulink复现异步电机V/F控制:从理论到模型搭建的保姆级指南(含SPWM模块详解)
  • 从低代码平台迁移到自主部署:破解供应商锁定,重获增长自由
  • CMAQ模型配置避坑指南:从WRF输出到CCTM运行,我的16线程MPI调试记录
  • Coze机器人集成REST API实战:5分钟实现The Colony论坛发帖
  • 从ScrollView到高性能列表:CocosCreator中drawcall合并与对象池的保姆级配置流程
  • Downkyi技术深度解析:B站视频下载架构与性能优化指南
  • 智能媒体捕获工具深度解析:5个专业技巧提升资源获取效率
  • 跨平台资源下载工具res-downloader:高效获取全网视频音频素材