动态二进制插桩技术与实践
1. 二进制文件处理与分析
在处理特定二进制文件时,有一系列操作步骤:
1. 枚举 6 字节结构,直至找到特定错误编号。
2. 获取当前 6 字节块中第一个字符的位置。
3. 获取下一个 6 字节块中最后一个字符的位置。
4. 加载此范围内消息的所有字符。
下面是一个用于解包 .MSB 文件的 C 程序示例。同时,在示例中还使用了两个文件(Oracle RDBMS 11.1.0.6)。
这里介绍的方法可能对于现代计算机来说有些过时。推测这种文件格式是在 80 年代中期由为大型计算机编码的人开发的,当时需要考虑内存和磁盘空间的经济性。不过,在不查看 Oracle RDBMS 代码的情况下,理解这种专有文件格式是一项有趣且简单的任务。
2. 相关练习
可以尝试对喜欢的游戏的二进制文件进行逆向工程,包括高分文件、资源文件等。此外,还有一些已知结构的二进制文件,如 utmp/wtmp 文件,可以在没有文档的情况下尝试理解其结构。
对于 JPEG 文件中的 EXIF 头,虽然有文档说明,但也可以通过在不同日期、时间和地点拍摄照片,尝试在 EXIF 中找到日期、时间和 GPS 位置,甚至尝试修改 GPS 位置,将 JPEG 文件上传到 Facebook,看看它如何在地图上显示图片。
还可以尝试修改 MP3 文件中的任何信息,观察喜欢的 MP3 播放器的反应。
3. 进一步阅读资料
- Pierre Capillon – Black-box cryptanalysis of home-made