首页
社区
课程
招聘
HeapMagic
发表于: 2006-12-14 12:12 17450

HeapMagic

2006-12-14 12:12
17450

Themida1800 demo的HeapMagic

VM保护代码里面检测了1个标记,是在这里设置的:

00B27354    83BD AD244F03 0>cmp     dword ptr [ebp+34F24AD], 1
00B2735B    0F85 C2000000   jnz     00B27423
00B27361    83BD C1054F03 0>cmp     dword ptr [ebp+34F05C1], 0
00B27368    0F85 B5000000   jnz     00B27423
00B2736E    83BD C92F4F03 0>cmp     dword ptr [ebp+34F2FC9], 0
00B27375    0F85 A8000000   jnz     00B27423
00B2737B    8D85 04D66003   lea     eax, dword ptr [ebp+360D604]
00B27381    90              nop
00B27382    50              push    eax
00B27383    90              nop
00B27384    64:FF35 0000000>push    dword ptr fs:[0]
00B2738B    64:8925 0000000>mov     dword ptr fs:[0], esp
00B27392    64:A1 30000000  mov     eax, dword ptr fs:[30]
00B27398    8B40 0C         mov     eax, dword ptr [eax+C]
00B2739B    B9 30000000     mov     ecx, 30
00B273A0    40              inc     eax
00B273A1    8138 EEFEEEFE   cmp     dword ptr [eax], FEEEFEEE
00B273A7  ^ 0F85 F3FFFFFF   jnz     00B273A0
00B273AD    49              dec     ecx
00B273AE  ^ 0F85 ECFFFFFF   jnz     00B273A0
00B273B4    8BC0            mov     eax, eax
00B273B6    83BD 5D2C4F03 0>cmp     dword ptr [ebp+34F2C5D], 0
00B273BD    75 09           jnz     short 00B273C8
00B273BF    83BD 4D0C4F03 0>cmp     dword ptr [ebp+34F0C4D], 0
00B273C6    74 13           je      short 00B273DB
00B273C8    50              push    eax
00B273C9    53              push    ebx
00B273CA    8BC0            mov     eax, eax
00B273CC    B8 D1040000     mov     eax, 4D1
00B273D1    8D9D 674A5D03   lea     ebx, dword ptr [ebp+35D4A67]
00B273D7    FFD3            call    ebx
00B273D9    5B              pop     ebx
00B273DA    58              pop     eax
00B273DB    8BC0            mov     eax, eax
00B273DD    C785 8D1D4F03 0>mov     dword ptr [ebp+34F1D8D], 1        ; 这里
00B273E7    E9 2D000000     jmp     00B27419
00B273EC    8B5C24 0C       mov     ebx, dword ptr [esp+C]
00B273F0    50              push    eax
00B273F1    892C24          mov     dword ptr [esp], ebp
00B273F4    E8 00000000     call    00B273F9
00B273F9    5D              pop     ebp
00B273FA    81ED 11D66003   sub     ebp, 360D611
00B27400    8B83 B8000000   mov     eax, dword ptr [ebx+B8]
00B27406    8D85 31D66003   lea     eax, dword ptr [ebp+360D631]
00B2740C    8983 B8000000   mov     dword ptr [ebx+B8], eax
00B27412    5D              pop     ebp
00B27413    B8 00000000     mov     eax, 0
00B27418    C3              retn
00B27419    64:8F05 0000000>pop     dword ptr fs:[0]
00B27420    83C4 04         add     esp, 4
00B27423    8BC0            mov     eax, eax
00B27425    83BD 5D2C4F03 0>cmp     dword ptr [ebp+34F2C5D], 0
00B2742C    75 09           jnz     short 00B27437
00B2742E    83BD 4D0C4F03 0>cmp     dword ptr [ebp+34F0C4D], 0
00B27435    74 19           je      short 00B27450

如果没被调试,会产生异常,这里的代码和ap0x的例子一字不差;-)


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
谜底公开了

不过还有一半
2006-12-14 12:16
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
3
还有一半什么?我的OD只有这里过不去(还有ExeCryptor主程序对付不了)
2006-12-14 12:17
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
4
堆里面不干净的不止FEEEFEEE (虽然TMD只查了FEEEFEEE )
还有一个
2006-12-14 12:20
0
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
这些是还原出来的代码吗?还是直接copy出来的?
2006-12-14 12:20
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
6
也许我的已经免疫了?shoooo贴个测试程序上来嘛
不要闪烁其辞的
2006-12-14 12:21
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
7
最初由 girl 发布
这些是还原出来的代码吗?还是直接copy出来的?


这里是明文,不过确实还原了部分代码,不然我找不到这里
2006-12-14 12:22
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
8
老早的时候写的,当时anti Hero玩的
上传的附件:
2006-12-14 12:24
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
9
多谢,我得上班换台机器试
2006-12-14 12:25
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10

如果解决了heapmagic问题,我就可以写脱壳机了,
2006-12-14 12:33
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
11
最初由 skylly 发布

如果解决了heapmagic问题,我就可以写脱壳机了,


包括VM保护代码还原?
2006-12-14 12:35
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
我只会补区段,
2006-12-14 12:41
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
13
终于公开了,研究研究
2006-12-14 12:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这招2K3下无效,与此类似的还有ABABABAB检测,不过同样对2K3无效.
2006-12-14 13:05
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
最初由 飞段 发布
这招2K3下无效,与此类似的还有ABABABAB检测,不过同样对2K3无效.


都是和Q3一个级别的高人,
2006-12-14 13:24
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
16
膜拜,膜拜一下.
2006-12-14 13:53
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
17
谢谢shoooo的anti,我过不了第2个button,学习

原来是GetTickCount,等我学好ring0呵呵
2006-12-14 14:10
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
shoooo的anti很好玩,
第一个是heapmagic(我只知道一种方法过,强制跳转)
第三个是调用API,ZwQueryInformationProcess,两种方法过
1.强制跳,2.hook sdt
00401470  /.  55            push    ebp
00401471  |.  8BEC          mov     ebp, esp
00401473  |.  83EC 10       sub     esp, 10
00401476  |.  68 40304000   push    00403040                      ; /ProcNameOrOrdinal = "ZwQueryInformationProcess"
0040147B  |.  68 34304000   push    00403034                      ; |/pModule = "ntdll.dll"
00401480  |.  FF15 04204000 call    dword ptr [<&KERNEL32.GetModu>; |\GetModuleHandleA
00401486  |.  50            push    eax                           ; |hModule
00401487  |.  FF15 00204000 call    dword ptr [<&KERNEL32.GetProc>; \GetProcAddress
0040148D  |.  8945 F4       mov     dword ptr [ebp-C], eax
00401490  |.  B8 01000000   mov     eax, 1
00401495  |.  8945 FC       mov     dword ptr [ebp-4], eax
00401498  |.  8945 F8       mov     dword ptr [ebp-8], eax
0040149B  |.  8D85 F8FFFFFF lea     eax, dword ptr [ebp-8]
004014A1  |.  50            push    eax
004014A2  |.  6A 04         push    4
004014A4  |.  8D85 FCFFFFFF lea     eax, dword ptr [ebp-4]
004014AA  |.  50            push    eax
004014AB  |.  6A 07         push    7
004014AD  |.  6A FF         push    -1
004014AF  |.  FF55 F4       call    dword ptr [ebp-C]
004014B2  |.  8945 F0       mov     dword ptr [ebp-10], eax
004014B5  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004014B8  |.  85C0          test    eax, eax
004014BA  |.  75 18         jnz     short 004014D4
004014BC  |.  837D F8 04    cmp     dword ptr [ebp-8], 4
004014C0  |.  75 12         jnz     short 004014D4
004014C2  |.  6A 00         push    0
004014C4  |.  6A 00         push    0
004014C6  |.  68 20304000   push    00403020                      ;  ASCII "ok"
004014CB  |.  E8 14020000   call    <jmp.&MFC42.#1200>
004014D0  |.  8BE5          mov     esp, ebp
004014D2  |.  5D            pop     ebp
004014D3  |.  C3            retn
004014D4  |>  6A 00         push    0
004014D6  |.  6A 00         push    0
004014D8  |.  68 24304000   push    00403024                      ;  ASCII "Debugger Found"
004014DD  |.  E8 02020000   call    <jmp.&MFC42.#1200>
004014E2  |.  8BE5          mov     esp, ebp
004014E4  |.  5D            pop     ebp
004014E5  \.  C3            retn

第二个看不懂,
2006-12-14 15:22
0
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
1,遍历堆,BAADF00D,FEEEFEEE个数,小于等于0x0A正常

  MOV EAX,FS:[18]
  MOV EAX,[EAX+30]
  MOV EAX,[EAX+18]

2,异常0x64次后7FFE0000的内容有变化,在我的2003sp1下没变化,正常

7FFE0000  00 00 00 00                                      ....

3,api有5个字节长就可以hook,判断参数返回非调试状态
ZwQueryInformationProcess        B8 A1000000     MOV EAX,0A1

非常好的东西,谢谢shoooo
2006-12-14 16:23
0
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
最初由 飞段 发布
这招2K3下无效,与此类似的还有ABABABAB检测,不过同样对2K3无效.


在我的2k3sp1下被shoooo的anti查找BAADF00D,FEEEFEEE个数发现了

倒是第2个7FFE0000内容没变化,调试态下没被发现
2006-12-14 16:29
0
雪    币: 236
活跃值: (100)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
21
都是偶像,膜拜ing...............
2006-12-14 16:48
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
学习  
2006-12-14 18:34
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
23
最初由 skylly 发布
shoooo的anti很好玩,
第一个是heapmagic(我只知道一种方法过,强制跳转)
第三个是调用API,ZwQueryInformationProcess,两种方法过
1.强制跳,2.hook sdt
00401470 /. 55 push ebp
........


直接看看GetTickCount的代码就明白了,7FFE0000是KUSER_SHARED_AREA.在内核模式可写,只读映射到ring3
2006-12-14 18:40
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
最初由 softworm 发布
直接看看GetTickCount的代码就明白了,7FFE0000是KUSER_SHARED_AREA.在内核模式可写,只读映射到ring3


这两天弄了个驱动 根据你的方法可以过GetTIckCount  
2006-12-14 18:51
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
25
是吗,能否给我一份源码学习,我的老是蓝屏
发到softworm2003@hotmail.com或oysg2002@21cn.com,谢谢
2006-12-14 19:00
0
游客
登录 | 注册 方可回帖
返回
//