蚯蚓翔龙 发表于 2015-2-13 16:31

修复吾爱OD的一个插件Anti-Anti-Debug问题


↑附件下载



最近总发现有利用GetStartupInfo来检测OD的,如CM区的http://www.52pojie.cn/thread-328996-1-1.html检测OD其中也有用到这个方法


以前就在看雪看过那篇利用GetStartupInfo来反调试的文章
借用大牛文章下
http://bbs.pediy.com/showthread.php?threadid=31447
http://www.52pojie.cn/thread-178161-1-1.html

OD创建进程CreateProcess
00477934|.52            push    edx                              ; /pProcessInfo
00477935|.51            push    ecx                              ; |pStartupInfo
00477936|.8D85 DCFDFFFF lea   eax,                ; |
0047793C|.8D8D 50E7FFFF lea   ecx,                 ; |
00477942|.50            push    eax                              ; |CurrentDir
00477943|.6A 00         push    0x0                              ; |pEnvironment = NULL
00477945|.8B55 FC       mov   edx,                    ; |
00477948|.81CA 22000004 or      edx, 0x4000022                   ; |
0047794E|.52            push    edx                              ; |CreationFlags
0047794F|.6A 00         push    0x0                              ; |InheritHandles = FALSE
00477951|.6A 00         push    0x0                              ; |pThreadSecurity = NULL
00477953|.6A 00         push    0x0                              ; |pProcessSecurity = NULL
00477955|.51            push    ecx                              ; |CommandLine
00477956|.6A 00         push    0x0                              ; |ModuleFileName = NULL
00477958|.E8 73760300   call    <jmp.&KERNEL32.CreateProcessA>   ; \CreateProcessA

而strongOD早就在07年解决了,但是因为advancedolly.dll问题又出现了,今天早上跟了下发现是advancedolly把地址00477958处的CreateProcessA处給 inline hook了,把OD本来要调用的CreateProcessA换成了在它自身的调用,导致SOD在创建进程所做的那些事都没用了,包括下图那三个选项怎么选都没用到的




本想nop掉advancedolly的WriteProcessMemory但因为advancedolly插件hook后接下去还做了一堆事,就只能考虑还原CreateProcess了,随便JMP到空隙的地方补上下面代码,配置advancedolly.dll 我也试了没效果

03348E8C    60            pushad
03348E8D    8B4424 44       mov   eax, dword ptr ss:
03348E91    E8 00000000   call    advanced.03348E96
03348E96    5D            pop   ebp
03348E97    3E:8985 A931000>mov   dword ptr ds:, eax
03348E9E    61            popad
03348E9F    BB D0EF4A00   mov   ebx, 0x4AEFD0                  ; 入口地址
03348EA4    90            nop
03348EA5    FFD3            call    near ebx
03348EA7    90            nop
03348EA8    90            nop
...
03348EAF^\E9 1D9BFFFF   jmp   advanced.033429D1


我改了几次了,刚开始总没考虑到重定位那些总出错,我的补丁代码没怎么考虑全面汇编也没学好,不过我的步骤就那样,有兴趣就继续完善好了


这个插件能我用得久了,总不想抛弃
这样稍微修改就能跟SOD一起用过那个GetStartupInfo检测了


没什么技巧好言,修改的后的dll在上面,我在win8 32测试成功了,其实只想发个帖...冒泡下...



w7267377 发表于 2015-2-13 16:42

支持一下 都是大神

Avenshy 发表于 2015-2-13 16:53

本帖最后由 000000 于 2015-2-13 16:57 编辑

{:301_1008:}楼主不错。针对上我的CM了。。
那CM有4个检测OD方法,这只是其中一个。

顺便送大家一个 GetStartupInfo 检测OD的源码

william2568 发表于 2015-2-13 17:07

膜拜大神,一定好好学习~

Hmily 发表于 2015-2-13 17:11

一直没搞明白,strongod用了以后,advancedolly插件还有什么互补的吗?

蚯蚓翔龙 发表于 2015-2-13 18:38

Hmily 发表于 2015-2-13 17:11
一直没搞明白,strongod用了以后,advancedolly插件还有什么互补的吗?

还是有些比较方便的小东西,比如窗口最大化,堆栈窗口中有个反汇编跟随这些吧...

117578111 发表于 2015-2-24 15:52

干嘛用的~

7515组 发表于 2016-3-28 14:56

谢谢分享,正需要。。。。。

sswockssw 发表于 2017-7-26 23:31

可是有一些程序启动后破坏od,然后导致od重新打开就无法载入文件了,这个是什么鬼
页: [1]
查看完整版本: 修复吾爱OD的一个插件Anti-Anti-Debug问题