能力值:
( LV7,RANK:100 )
|
-
-
2 楼
分析原始PE文件的DriverEntry
不过要想通用所有驱动比较困难(可以自己实现指令虚拟机)
要是针对的话,搜特征码即可
|
能力值:
( LV10,RANK:160 )
|
-
-
3 楼
指令虚拟机,能说说具体的方案吗?
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
虚拟执行DriverEntry,给它个DriverObject让它填充去……
|
能力值:
( LV10,RANK:160 )
|
-
-
5 楼
教主,其实就是想探讨下具体实现,之前有想过,就是有很多问题。目的是很明确,让它载入,调用DriverEntry得到_DRIVER_OBJECT::MajorFunction,但是DriverEntry里面做的其他东西,怎么让它还原,例如有恶意代码,例如重复绑定(搞那个键盘驱动,搞到输入不了东西呢),DriverEntry里面太多未知数~。那个虚拟执行,现时有没有具体的技术实现?~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
http://hi.baidu.com/sudami/blog/item/c53b3eecd69870da2f2e21a4.html 介个……?
|
能力值:
( LV10,RANK:160 )
|
-
-
7 楼
感谢,正在测试中。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
大米PJF出品,必属精品啊……
|
能力值:
( LV10,RANK:160 )
|
-
-
9 楼
就是Naylon和教主说的思路的具体代码,不能算模拟~,其实是真实执行了,貌似只限制了以下例程的工作:
if ( FALSE == IAT_HOOK_engine( PeAddr, "KeTickCount", "ntoskrnl.exe", (int)&g_KeTickCount )
|| FALSE == IAT_HOOK_engine( PeAddr, "ExAllocatePoolWithTag", "ntoskrnl.exe", (int)fake_ExAllocatePoolWithTag )
|| FALSE == IAT_HOOK_engine( PeAddr, "RtlInitUnicodeString", "ntoskrnl.exe", (int)fake_RtlInitUnicodeString )
|| FALSE == IAT_HOOK_engine( PeAddr, "IoCreateDevice", "ntoskrnl.exe", (int)fake_IoCreateDevice )
)
只能说是按需要去实现功能,好像并不能说很通用呢~
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
个人觉得真正的通法应该是没有,因为你模拟的局限性,不信你可以试试disk.sys和ntfs.sys这两个。
|
能力值:
( LV7,RANK:100 )
|
-
-
11 楼
方法我已经想到了,不过还没实现
而且这种方法是最差的,基本思路是:
1.自己重新映射一份驱动映像到内存
2.使用开源引擎反汇编DriverEntry
3.自建堆栈、寄存器
4.解析每一条指令字符串(貌似仅仅解析push、mov、lea、pop之类的就够了,跳转类直接略)
调用之前自己模拟PUSH好每个参数,然后直接模拟执行DriverEntry即可
代码我已经写了一点,不过由于对汇编指令不熟+期中考试,暂时先不继续。。考完试再研究
|
能力值:
( LV7,RANK:100 )
|
-
-
12 楼
方法我已经想到了,不过还没实现
而且这种方法是最差的,基本思路是:
1.自己重新映射一份驱动映像到内存
2.使用开源引擎反汇编DriverEntry
3.自建堆栈、寄存器
4.解析每一条指令字符串(貌似仅仅解析push、mov、lea、pop之类的就够了,跳转类直接略)
调用之前自己模拟PUSH好每个参数,然后直接模拟执行DriverEntry即可
代码我已经写了一点,不过由于对汇编指令不熟+期中考试,暂时先不继续。。考完试再研究
|
能力值:
( LV10,RANK:160 )
|
-
-
13 楼
不知道解析效果如何,期待,如果有成果麻烦在论坛PM俺~
Naylon兄,你在解析过程中要注意一些问题:
1、WDM和WDF框架都要考虑,你说跳转指令可以忽略,万万不可,你看看WDF框架就知道了。还有就是根据条件来设置MajorFunction,你也不能忽略。
2、要考虑他是call一个函数来设置MajorFunction的,或者是嵌套几个。
3、存在地址覆盖问题,不能说一解析到修改后,就跳过解析。换句话说,就是一定要吧整个DriverEntry解析完,这个对于WDF框架很有难度~
|
能力值:
( LV7,RANK:100 )
|
-
-
14 楼
看情况啦…
完全的万能可能是比较困难,不过一般的系统驱动貌似还没那么复杂,跟进几层JMP也行
暂时还没时间做这个。。
|
|
|