首页
社区
课程
招聘
[原创]利用StrongOD漏洞反调试
发表于: 2014-6-19 12:51 48992

[原创]利用StrongOD漏洞反调试

2014-6-19 12:51
48992

004001C8    00000000    DD 00000000    ;  TLS Table address = 0

004001CC    00000000    DD 00000000    ;  TLS Table size = 0

004AEFA6    jmp dword ptr ds:[<&ADVAPI32.RegOpenKeyA>]    ; ADVAPI32.RegOpenKeyA

004AEFAC    jmp dword ptr ds:[<&ADVAPI32.RegQueryValueExA>]    ; ADVAPI32.RegQueryValueExA

004AEFB2    jmp dword ptr ds:[<&ADVAPI32.RegSetValueExA>]    ; ADVAPI32.RegSetValueExA

004AEFB8    jmp dword ptr ds:[<&KERNEL32.CloseHandle>]    ; KERNEL32.CloseHandle

004AEFBE    jmp dword ptr ds:[<&KERNEL32.ContinueDebugEvent>]    ; StrongOD.7084EE50

004AEFC4    jmp dword ptr ds:[<&KERNEL32.CreateDirectoryA>]    ; KERNEL32.CreateDirectoryA 

004AEFCA    jmp dword ptr ds:[<&KERNEL32.CreateFileA>]    ; KERNEL32.CreateFileA

004AEFD0    jmp dword ptr ds:[<&KERNEL32.CreateProcessA>]    ; StrongOD.70844340

004AEFD6    jmp dword ptr ds:[<&KERNEL32.DebugActiveProcess>]    ; StrongOD.7084B250
ContinueDebugEvent


The ContinueDebugEvent function enables a debugger to continue a thread that previously reported a debugging event.

BOOL ContinueDebugEvent(
 
DWORD dwProcessId,  // process to continue

DWORD dwThreadId,  // thread to continue

DWORD dwContinueStatus  // continuation status

);

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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (29)
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发我来
2014-6-19 12:52
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
3
占个小板凳...
2014-6-19 12:53
0
雪    币: 1234
活跃值: (302)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好东西,sod作者看了应该会修复
2014-6-19 13:19
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
5
顶个~!
2014-6-19 13:23
0
雪    币: 74
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
AddressOfEntryPoint = 0

<<windows anti-debugger reference>> 有讲过

(3) EntryPoint RVA set to 0(入口点RVA偏移量设置为0)
一些加壳的文件把入口点RVA设置为0, 这意味着它们将会开始执行 'MZ...' 对应于'dec ebx / pop edx ...'.
这本身并不是一个反调试技术, 但是如果使用软件断点中断在入口点就会变得让人苦恼.
如果创建一个挂起的进程, 然后设置 INT3 于 RVA 0, 将会擦除 MZ 值('M'). 这个魔术标志在进程创建时被检查, 但是当进程恢复(希望到达入口点)时它会再次在ntdll 中被检查. 哪样的话, 一个 INVALID_IMAGE_FORMAT 异常将会产生.
如果你创建自己的跟踪或者调试工具, 可以使用硬件断点避免这个问题.
2014-6-19 13:24
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
7
感谢,学习了.
2014-6-19 13:40
0
雪    币: 1895
活跃值: (1672)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8


学习了。
2014-6-19 15:47
0
雪    币: 5347
活跃值: (3744)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
9
学习了,多谢分享。我在xp32位下记事本改了下PE头和oep,没能测试成,修改后程序不能运行了。
2014-6-19 16:13
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
10
你可以把你修改的,发上来,看一下.
2014-6-19 18:09
0
雪    币: 341
活跃值: (85)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
八两头像越来越妖娆了
2014-6-19 18:19
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
12
Ollydbg,无法在RVA=0的地方下CC断点
AddressOfEntryPoint =0这个问题,基本上很难处理
不过,对于PE里面AddressOfEntryPoint = 0,这个配置,实在太特殊了,反过来说,也很好解决啊

另外,如果DLL的AddressOfEntryPoint = 0,DllMain无法执行
所以感觉关系不大,就没去处理这个

处理方法也有,不过感觉没啥意义,就是在RVA=0的地方下硬件执行断点,就可以断下来了
2014-6-19 19:37
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好吧,风月献身说法...嘿嘿
2014-6-19 19:41
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
,你貌似对八两的头像很感兴趣...嘿嘿
2014-6-19 19:42
0
雪    币: 341
活跃值: (85)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
15
经过测试对console的无效,有界面的C0000142失败。
貌似没有sod的od也有这个问题。
2014-6-19 21:38
0
雪    币: 5347
活跃值: (3744)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
16
发上来了,帮忙看下哪里不对啊,多谢了。
上传的附件:
2014-6-20 10:03
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
17
我这边测试了,是没有问题的.



你测试的时候,需要把strongod 的 badpe 勾起来才行的.~

上传的附件:
2014-6-20 10:41
0
雪    币: 5347
活跃值: (3744)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
18
我这里程序根本不能运行啊,我没有用OD加载,楼主那里可以运行吗?
2014-6-20 11:07
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
19
原来你是说运行啊.
运行确实不能运行.
那是因数你jump oep的代码写的是错误的.
你是 jmp [oep]
你跳到OEP不应该有 "[]"
要么直接 jmp oep
要么jmp [mem]  mem指向OEP也行.

你可以参考一下我发的那个计算器的 demo.

错误写法:
01000000    4D              dec ebp
01000001    5A              pop edx
01000002    52              push edx
01000003  - FF25 9D730001   jmp dword ptr ds:[100739D]
01000009    0000            add byte ptr ds:[eax],al
0100000B    00FF            add bh,bh
0100000D    FF00            inc dword ptr ds:[eax]
0100000F    00B8 00000000   add byte ptr ds:[eax],bh
01000015    0000            add byte ptr ds:[eax],al


正确写法:
01000000    4D              dec ebp
01000001    5A              pop edx
01000002    52              push edx
01000003  - FF25 1A000001   jmp dword ptr ds:[100001A]               ; 复件_NOT.0100739D
01000009    0000            add byte ptr ds:[eax],al
0100000B    00FF            add bh,bh
0100000D    FF00            inc dword ptr ds:[eax]
0100000F    00B8 00000000   add byte ptr ds:[eax],bh
01000015    0000            add byte ptr ds:[eax],al
01000017    0040 00         add byte ptr ds:[eax],al
0100001A    9D              popfd
0100001B    73 00           jnb short 复件_NOT.0100001D
0100001D    0100            add dword ptr ds:[eax],eax
0100001F    0000            add byte ptr ds:[eax],al
01000021    0000            add byte ptr ds:[eax],al


希望能帮到你.
2014-6-20 11:54
0
雪    币: 5347
活跃值: (3744)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
20
多谢,多谢了
2014-6-20 12:56
0
雪    币: 170
活跃值: (187)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
新技能get√
2014-6-20 18:00
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
22
这个很久之前的技术了了,不过还是很感谢LZ分享自己的成果~~~~
2014-6-24 09:35
0
雪    币: 175
活跃值: (2561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主的精品,收藏一个。
2014-6-29 17:06
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好有技术的文章,致敬
2014-7-1 23:30
0
雪    币: 16455
活跃值: (1725)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
又见大牛出来活动……
2014-7-5 17:28
0
游客
登录 | 注册 方可回帖
返回
//