首页
社区
课程
招聘
7
[原创]定位FSD(笔记)
发表于: 2008-6-26 19:15 7409

[原创]定位FSD(笔记)

2008-6-26 19:15
7409

小弟菜虫一只 也做一次笔记试试 .内容如题.
定位方法,先从入口DriverEntry开始搜索0xC7 ? 0x58 和0x89 ? 0x58
找到位置后再根据重定位表内信息修正结果
额.大致就是这样吧.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
proc __GetFsd
    locals
        @hMem rd 1
    endl
    i ExpandEnvironmentStrings,'%WinDir%\system32\drivers\ntfs.sys',esi=strBuffer,strBuffer.size
    i ImageLoad,esi,ebx=0
    push eax
    mov esi,[eax+4*2]
    mov [@hMem],esi
    mov eax,[esi+0x3C]
    add esi,[esi+eax+0x28]
     
.reloop:
    lodsb
    cmp al,0xC7
    je @F
    cmp al,0x89
    jne .reloop
@@:
    cmp byte[esi+1],0x58    ;IRP_MJ_SET_EA
    jne .reloop
    lea ebx,[esi+2]
    mov esi,[@hMem]
    sub ebx,esi
 
    mov eax,[esi+0x3C]
    add esi,[esi+eax+0xA0]
@@:
    add esi,[esi+4]
    mov ecx,ebx
    sub ecx,[esi]
    cmp ecx,0x1000
    ja @B
    lodsd
    lodsd
 
    mov edx,ebx
    and edx,0x0FFF
@@:
    lodsw
    and eax,0x0FFF
    cmp edx,eax
    ja @B
    je @F
    mov dx,word[esi-4]
    and dx,0x0FFF
@@:
    and ebx,0xFFFFF000
    add ebx,edx
    add ebx,[@hMem]
    mov ebx,[ebx]   ;ebx = rva
    i ImageUnload,
    int3
endp   

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

收藏
免费 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
Youlor
为你点赞~
2024-1-3 04:44
伟叔叔
为你点赞~
2023-11-3 00:02
QinBeast
为你点赞~
2023-8-11 00:16
PLEBFE
为你点赞~
2023-8-10 01:50
shinratensei
为你点赞~
2023-7-18 04:42
心游尘世外
为你点赞~
2023-7-8 00:03
飘零丶
为你点赞~
2023-6-28 00:18
最新回复 (10)
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
标记下
2008-6-26 19:39
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
暴力搜索......为什么不是从历遍Driver Object来入手呢?
2008-6-29 04:49
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
Driver Object被HOOK了
2008-6-29 05:09
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
5
定位FSD的最终目的是为了检测和还原对它的HOOK,因此假设前提已经是DriverObject中的可能已经被HOOK了。
2008-6-29 05:24
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
6
搜索文件吧,你这样纵然搜到了,也不知道是否被HOOK过了呀
2008-6-29 13:53
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
我这不就是搜索文件吗...
Driver Object..那就不叫搜索了
2008-6-29 14:34
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
你的asm中哪句是Load ntfs.sys 到内存的啊?
ImageLoad啊?以前没用过这个函数。
偶汇编太菜了,看得糊涂啊。。。
2008-6-29 16:27
0
雪    币: 249
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
i ImageLoad,esi,ebx=0

第一句就是load了...
不过貌似这个api用的人少..
2008-6-29 16:30
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
10
嗯,代码都懂了。
用 ImageLoad 把 ntfs.sys 当DLL加载到内存中,定位到PE的 OEP,驱动文件的入口也就是DriverEntry了,然后开始搜索特征码,找到了,就可以计算出RVA了,然后根据实际情况进行HOOK或者恢复。


查了下指令集,
LODSB的功能是将DS:[si]中的内容取到AL中,然后SI<=SI+/-1 REP LODSB的功能是重复将DS:[si]中的内容取到AL中

-------------------------------------------------------

学习,asm写东西真是简练高效又强大啊。膜拜下洋洋洒洒大牛。123465~
2008-6-29 16:35
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
PS:
保存网页当资料刻盘
2008-6-29 16:36
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册