1、为什么数组中存在边界字节(或哨兵值)0x10?如果它们在扫雷界面中不可见,它们的作用是什么?没有它们程序如何运行?
边界字节 0x10 用于确定扫雷游戏棋盘的边界和结束位置。在程序中,通过判断这些边界字节来识别棋盘的范围,从而正确处理和显示棋盘内容。
没有它们,程序难以自动确定棋盘的边界和结束位置,可能需要手动指定地址。不过,若每次运行程序时棋盘地址固定,也可手动指定地址来实现功能,但不同版本扫雷游戏的棋盘地址可能不同,手动指定会比较麻烦。
2、尝试对你喜欢的游戏的任何二进制文件进行逆向工程,包括高分文件、资源文件等。
可以采用以下方法进行逆向工程:
- 对于游戏中的变量,如子弹数量,可先对游戏内存做“快照”并备份,待变量值改变后再做一次“快照”,对比两个“快照”,找出值改变的字节所在地址。
- 由于8位游戏常用汇编编写且变量多为全局变量,可通过查找反汇编代码中该地址的引用,找到修改变量的代码段,用
NOP指令覆盖,实现作弊。 - 对于高分文件,记录分数并备份文件,分数改变后再次备份,用 DOS 实用工具
FC比较两个文件,找出改变的字节。 - 对于未知指令集架构(ISA)的二进制文件,可在 IDA、
objdump等反汇编器中尝试不同的 ISA 进行反汇编,同时要能区分正确和错误的反汇编代码。 - 还可以对比程序安装前后的 Windows 注册表,找出程序使用的注册表元素。
3、存在一些结构已知的二进制文件,如utmp/wtmp文件,尝试在没有文档的情况下理解其结构。
可通过对 utmp / wtmp 文件进行逆向工程,分析文件中的数据模式、字节序列、数据块的大小和偏移量等,还可结合对系统日志和用户登录信息的了解,推断文件结构。

最低0.47元/天 解锁文章
3474

被折叠的 条评论
为什么被折叠?



