-
-
[求助]关于逆向过程中使用fuzzer进行准确性验证的求助
-
发表于:
2008-11-7 16:48
4093
-
[求助]关于逆向过程中使用fuzzer进行准确性验证的求助
各位大牛,我在逆向一个较大型软件的时候遇到一个问题,以下是问题来源描述:
1、程序比较大,函数比较多,单人不可能完成
2、多人协同完成,对包含很多函数的单个可执行程序进行分块,每人分配一个或者多个函数
3、逆向人员水平有差异,对逆向结果的准确性不好验证和把握
(1)、如果采用人工审核,工作量太大
(2)、依靠逆向人员自行把握函数逆向准确性,人为因素太多,不好控制
4、可执行程序的宿主系统非常见系统,没有调试器(调试器只适用于debug版本,对发行版本的可执行文件不可调试)
所以我想利用fuzzer来解决逆向过程中的准确性问题,设想的解决方法如下:
[*]1 编译逆向人员完成的单个函数,人工设置函数的传入参数。
[*]2 在调用其他用户函数的地方,对用户函数的返回值进行人工设置。
[*]3 fuzzer函数的传入参数和其他函数的返回值。
**********************************************
以下是fuzzer待逆向程序的部分,难点在这里
**********************************************
[*]4 我想实现一个程序,当执行待逆向程序的时候,能够获取到这个待逆向程序中的我们需要fuzzer的函数,只让他执行,并且可以控制函数的传入参数和调用用户函数的返回值,对系统函数不做控制。
[*]5 对两个程序fuzzer过程中的返回值和关键结点进行监视,对比大量数据,验证逆向的准确性
[*]6 以下是一个图形示例:
[COLOR="Red"]待逆向可执行程序[/COLOR]
-----------------
| |
| |
| |
| |
| _________ |<------函数开头
| |
| fuzzer的函数 |
| |
| |
| |
| |
|———————|<-----函数结尾
| |
| |
| |
| |
| |
| |
____________
[COLOR="Red"]我们要实现的fuzzer程序盒子:[/COLOR]
1、fuzzer盒子要加载上面所示的函数,这个可以通过指定函数开头和结尾地址来确定
2、[COLOR="Red"]难点[/COLOR]
[LIST=1]
[*]1 如何实现fuzzer程序,让他加载指定地址的函数?
[*]2 如何让这个函数执行?
[*]3 这个想法是否可行?
[*]4 有无更加简便的方法来验证逆向结果的准确性?
(因为程序比较大,不可能在全部逆向完成之后再进行验证,这样返工起来会花费大量人力和时间)
[/LIST]
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课