首页
社区
课程
招聘
[原创]文件Fuzz教程之四:Peach Pit模版调试技巧
发表于: 2013-7-31 16:47 6519

[原创]文件Fuzz教程之四:Peach Pit模版调试技巧

2013-7-31 16:47
6519

RT
文件Fuzz教程第四篇

文件 Fuzz 教程之四:Peach Pit 模版调试技巧

Author:dragonltx

写好 Peach Pit 模版后,还需对 Peach Pit 模版进行调试。Peach 提供了命令可以对 Peach Pit进行调试:peach.bat -1 --debug wav.xml。下面将会演示几个常见的错误,起到抛砖引玉的作用。

语法错误

实例一


根据提示可以知道是的开头申明不规范,查看 wav.xml,



可以发现,<?xml version="1.0" encoding="utf-8"?>这个申明不在第一行,因此报错。将它移至第一行即可。解析完,会提示如下红色方框的信息,说明样本已经全部解析完成。



注:解析完之后,还需要 010 Editor 的文件比较工具比较样本文件跟生成后的文件是不是一样的,如果是一模一样,说明 Peach Pit 工作正常,否则,说明 Peach Pit 还有 Bug。



从红色方框可以看出 sample.wav 跟 0.wav 是一模一样的,因此 wav 模版大功告成。

实例二


从提示可以看出 15 行第 5 列,标记不匹配,查看 wav.xml,



可以看到第 9 行少了个/,导致标记不匹配报错。

实例三


从提示可以看出 BloB 元素写错,应该是 Blob。

表达有误

实例一


从提示可以看出 Peach 只解析了 36 字节,将生成的 wav 与模版进行对比,



发现生成的文件只有一个 chunk,查找相应的 Peach 模型,



发现将 maxOccurs 写成 maxoccurs,导致 Peach 认为 Choice 没有属性,变成<Choice>,导致Peach 只会从中选取一个满足条件的 Chunk,选到满足的 Chunk 后就退出,不再选择其他的Chunk。

实例二


从图中可以看出,只解析了 647 字节,依旧先用 010 Edit 进行比较,



通过比较可以发现样本文件的 entrycount 为 41,而生成的 entrycount 只有 1,查看相应的 Peach模型,可以看到:



ctts_table 这个 Block 没指定生成的个数,导致 Peach 认为最多为 1 个,因此生成的 entrycount为 1,导致后面解析出错。加上 maxOccurs=“1024”即可。



实例三


可以看出,只解析了 16 字节就退出,还是用 010 Edit 对比一下,



可以发现 padding 数据不对,查看 Peach 的调试信息



Object_version=1,但是 When 都是返回 False,应该是这里出问题了,查看模版



self.find('object_version').getInternalValue()返回的是字符串,因此 self.find('object_version').getInternalValue()前需加上 int,否则进行解析时,when 结果都为 false。加上 int 之后接解析正常。

总结:

基本上,Peach Pit 模版调试的方法为先看是否解析完整个文件,如果是,还需用 010 Editor对比下是否和样本一样,如果没完整解析,还是需要 010 Editor 对比,看解析到哪里,配合Peach 的 debug 信息来定位问题。本篇文章只是对 Peach Pit 的调试进行抛砖引玉,具体的经验积累还需在实战中进行积累。

注:本帖由看雪论坛志愿者PEstone 重新将PDF整理排版,若和原文有出入,以原作者附件为准


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (6)
雪    币: 1904
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
下载看看。。。
2013-7-31 16:49
0
雪    币: 97697
活跃值: (200839)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
+1
2013-8-1 13:15
0
雪    币: 124
活跃值: (469)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
get it
2013-8-1 13:36
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很给力啊~~~~
2014-9-12 14:51
0
雪    币: 158
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好强大啊,楼主。顶一下哟。
2014-9-14 15:46
0
雪    币: 80
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了。
2014-12-27 15:59
0
游客
登录 | 注册 方可回帖
返回
//