首页
社区
课程
招聘
[原创]pediy 打造专属的 Malware Defender
发表于: 2010-11-30 18:29 15851

[原创]pediy 打造专属的 Malware Defender

2010-11-30 18:29
15851

【文章标题】: pediy 打造专属的 Malware Defender
【文章作者】: FishSeeWater
【作者邮箱】: FishSeeWater@gmail.com
【软件名称】: Malware Defender
【下载地址】: 自己搜索下载
【使用工具】: ollyice ,lordPe,010Editor
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  Malware Defender 是一个主动防御软件,也就是HIPS。以下简称MD, 很早以前使用这个软件,给作者提过不少建议。
其中一个加入“暂停保护”的功能,却没有提供热键支持,最近心起,使用这个软件时,感觉太需要这个功能了,没办法只好自己动手解决了:).

  绝无恶意,作者莫怪~~:)
  最新版是2.7.2.0001
  
  下载安装后,把主程序拷贝出来,扔到IDA中直接加工。生成MAP文件,然后用OD载入开始分析。
  开始前我们先理一下思路:
       暂停保护的功能作者已经加入了(1,5,15,30,60,自定义 6项功能),
  只是需要在托盘用鼠标操作。我们只要找到这些消息的处理过程,用我们注册的热键来调用就OK了。
  
  具体分步如下:
           1。找到响应“暂停保护XX分钟”鼠标操作的消息处理例程
           2。找到MD中注册热键的例程,加入我们定义的新热键。
                        SHITF+CTRL+ALT+1......6来调用作者提供的6项功能。
           3。找到MD中反注册热键的例程,反注册我们的热键.
           4。找到MD中响应热键的消息处理例程,加入我们的热键处理代码,在这里调用1的入口
  首先进行一步:
  OD载入MD,
  在“暂停保护”选项处有个“自定义”选项,选这个功能会跳出一个对话框
  
  这时按“F12,Alt+F9”再点击确定,程序会断在下图中:
  
  返回后,
  
  我们可以看到,00490821 这一行,F7进
  

  00490683   /$ >push    ebp                                
  00490684   |. >mov     ebp, esp
  00490686   |. >push    ecx
  
  0049079B <>/$ >push    1                                    ;  stop_1_Minute
  0049079D   |. >call    MalwareD.00490683
  004907A2   |. >xor     eax, eax
  004907A4   \. >retn    10
  004907A7 <>/$ >push    5                                    ;  stop_5_Minute
  004907A9   |. >call    MalwareD.00490683
  004907AE   |. >xor     eax, eax
  004907B0   \. >retn    10
  004907B3 <>/$ >push    0A                                   ;  stop_15_Minute
  004907B5   |. >call    MalwareD.00490683
  004907BA   |. >xor     eax, eax
  004907BC   \. >retn    10
  004907BF <>/$ >push    1E                                   ;  Stop_30_Minute
  004907C1   |. >call    MalwareD.00490683
  004907C6   |. >xor     eax, eax
  004907C8   \. >retn    10
  004907CB <>/$ >push    3C                                   ;  Stop_60_Minute
  004907CD   |. >call    MalwareD.00490683
  004907D2   |. >xor     eax, eax
  004907D4   \. >retn    10
 ......省略一些
  
  0049079B <>/$ >push    1                                     ;  stop_1_Minute
  004907A7 <>/$ >push    5                                     ;  stop_5_Minute
  004907B3 <>/$ >push    0A                                    ;  stop_15_Minute
  004907BF <>/$ >push    1E                                    ;  Stop_30_Minute
  004907CB <>/$ >push    3C                                    ;  Stop_60_Minute
  004907D7 <>/$ >mov     eax, <MalwareD.loc_581A60>            ;  StopCustomTime
  
  0047BDF7   |. >test    ax, ax
  0047BDFA   |. >je      short <MalwareD.loc_47BE70>
  0047BDFC   |. >mov     ebx, [arg.2]
  0047BDFF   |. >movzx   ecx, di
  0047BE02   |. >push    ecx                            ; /Key
  0047BE03   |. >movzx   eax, ax                        ; |
  0047BE06   |. >push    eax                            ; |Modifiers
  0047BE07   |. >push    ebx                            ; |HotKeyID
  0047BE08   |. >push    dword ptr ds:[esi+4]           ; |hWnd
  0047BE0B   |. >call    dword ptr ds:[<&USER32.Registe>; \RegisterHotKey
  0047BE11   |. >test    eax, eax
  0047BE13   |. >jnz     short <MalwareD.loc_47BE83>
  
  0047BE8D <>/$ >mov     eax, <MalwareD.loc_580D22>     ;  _ProcessHotKey
  0047BE92   |. >call    <MalwareD.__EH_prolog>
  0047BE97   |. >push    ecx
  0047BE98   |. >push    ecx
  0047BE99   |. >push    esi
  0047BE9A   |. >mov     esi, ecx
  0047BE9C   |. >call    <MalwareD._UnAllHotKey>
  ...............
  0047BEBB   |. >lea     eax, [local.4]
  0047BEBE   |. >push    eax
  0047BEBF   |. >push    dword ptr ds:[<_HotKey_Ctrl_1>>
  0047BEC5   |. >mov     ecx, esi
  0047BEC7   |. >push    1
  0047BEC9   |. >push    offset <MalwareD._HotKey_1>
  0047BECE   |. >call    <MalwareD._RegHotKey>
  .............
  0047BF7F   |. >push    dword ptr ds:[<_HotKey_Ctrl_9>]
  0047BF85   |. >mov     ecx, esi
  0047BF87   |. >push    9
  0047BF89   |. >push    offset <MalwareD._HotKey_9>
  0047BF8E   |. >call    <MalwareD._RegHotKey>
  0047BF93      >mov     edi, dword ptr ss:[ebp-10]
  0047BF96      >cmp     dword ptr ds:[edi-8], 0
  0047BF9A   |. >je      short <MalwareD.loc_47BFE6>     ;这里判断是否注册成功,否则弹框提示
  ..........
  0047BFCE   |. >push    30                                    ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
  0047BFD0   |. >push    0                                     ; |Title = NULL
  0047BFD2   |. >push    [local.5]                             ; |Text
  0047BFD5   |. >push    dword ptr ds:[esi+4]                  ; |hOwner
  0047BFD8   |. >call    dword ptr ds:[<&USER32.MessageBoxW>]  ; \MessageBoxW
  0047BFDE   |. >lea     ecx, [local.5]
  
  0047BF7B   |. >lea     eax, [local.4]                      
  0047BF7E   |. >push    eax		           ;压入this
  0047BF7F   |. >push    dword ptr ds:[<_HotKey_Ctrl_9>];压入热键码,高位VK,低位fsModifiers
  0047BF85   |. >mov     ecx, esi
  0047BF87   |. >push    9		           ;压入ID
  0047BF89   |. >push    offset <MalwareD._HotKey_9>  ;压入一个变量,用来保存ID的,在UnhotKey时需要用到这个变量
  0047BF8E   |. >call    <MalwareD._RegHotKey>           ;调用注册CALL
  
  0047BF8E   |. >call    <MalwareD._RegHotKey>这一行是最后一个热键的注册,从下一行0047BF93跳到我们的代码中注册新的热键。
  
  004628F9 <>/$ >push    esi                                   ;  _UnAllHotKey
  004628FA   |. >push    offset <MalwareD._HotKey_1>
  004628FF   |. >mov     esi, ecx
  00462901   |. >call    <MalwareD._UnregisterHotKey>
  00462906   |. >push    offset <MalwareD._HotKey_2>
  0046290B   |. >mov     ecx, esi
  0046290D   |. >call    <MalwareD._UnregisterHotKey>
  00462912   |. >push    offset <MalwareD._HotKey_3>
  00462917   |. >mov     ecx, esi
  .........
  00462955   |. >call    <MalwareD._UnregisterHotKey>
  0046295A   |. >push    offset <MalwareD._HotKey_9>
  0046295F      >mov     ecx, esi
  00462961      >call    <MalwareD._UnregisterHotKey>
  00462966   |. >pop     esi
  00462967   \. >retn
  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 3145
活跃值: (3704)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
又是一篇精华哦,楼主功底很好,羡慕
2010-11-30 18:42
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
3
一直用Malware Defender来辅助分析病毒,感觉还不错,现在已经被360收购了……
2010-11-30 18:59
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有意思。
2010-12-1 09:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一直在用的软件 很不错
2010-12-1 11:40
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
精品文章················
2010-12-1 11:44
0
雪    币: 149
活跃值: (171)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
文章很强大。看完了。获益不少。
2010-12-1 13:37
0
雪    币: 303
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
又见牛文。学飞迸了。。。
2010-12-1 14:05
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
好文章 整理上用了不少时间 思路很好 Up~
2010-12-1 14:13
0
雪    币: 169
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
算了, 数字产品~
2010-12-1 14:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我就是来学习的&&&……
2010-12-1 16:50
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
顶起来
2010-12-1 17:41
0
雪    币: 768
活跃值: (535)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
13
用了好几个小时~ 汗
2010-12-1 19:16
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
今天静不下心来,下次再来学习
2010-12-1 22:14
0
雪    币: 6790
活跃值: (4446)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
15
学习学习..
2010-12-1 22:28
0
雪    币: 266
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不错 mark一下吧
2010-12-2 14:10
0
雪    币: 197
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
Mark下,改天来学习
2010-12-2 14:19
0
雪    币: 228
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习了。

MD是不错的产品,  可惜的是……
2010-12-2 22:40
0
雪    币: 563
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习了!!!
2010-12-4 11:54
0
雪    币: 100
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好东西,学习学习
2010-12-4 12:10
0
游客
登录 | 注册 方可回帖
返回
//