吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4258|回复: 4
收起左侧

[原创] OD反调试遭遇战 《不完全解决纪实报告文学》:一个菜鸟是这样脱离魔掌的

[复制链接]
冥界3大法王 发表于 2014-3-13 12:59

虽然上次的那个我们用内存补丁彻底注册成功了,
本着深入学习的目的,我们要把它本身的自校验 跟 反调试器部分K掉
然后呢,让这软件:我们故意不注册,让它上面的显示试用时间每次自动+1天
娱乐中,学习嘛~~

1.开OD断在这里

776D9E49    8BFF            mov     edi, edi
776D9E4B    55              push    ebp
776D9E4C    8BEC            mov     ebp, esp
776D9E4E    FF75 0C         push    dword ptr [ebp+0xC]
776D9E51    FF75 08         push    dword ptr [ebp+0x8]
776D9E54    E8 FD000000     call    776D9F56
776D9E59    6A 01           push    0x1
776D9E5B    FF75 08         push    dword ptr [ebp+0x8]
776D9E5E    E8 7D60FEFF     call    776BFEE0
776D9E63    50              push    eax
776D9E64    E8 3CD00000     call    776E6EA5
776D9E69    CC              int3

2.由于我们先前知道,它使用的IsDebuggerPresent
API侦测我们的OD
3.shift+f9
我来能来到
00403CAD    E8 D4876F00     call    <jmp.&KERNEL32.IsDebuggerPresent>

跟入后不久 会看到一PUSH
你会找到
00403CAD    E8 D4876F00     call    00AFC486
00403CB2    85C0            test    eax, eax
00403CB4    74 11          je      short 00403CC7

4.类似上面 je      short 00403CC7这样的几句,因为返回值eax必须=0 才能侦测不到我们的OD
所以全改成JMP
  call nop掉
地址忘了,一会补充吧,反正是三句啦
5.来到
00403DBA   /EB 03           jmp     short 00403DBF
00403DBC   |8B5D F8         mov     ebx, dword ptr [ebp-0x8]
00403DBF   \66:C745 D4 0C00 mov     word ptr [ebp-0x2C], 0xC
00403DC5    A1 DC87C800     mov     eax, dword ptr [0xC887DC]
00403DCA    B2 01           mov     dl, 0x1
00403DCC    8B00            mov     eax, dword ptr [eax]
00403DCE    E8 09D32C00     call    006D10DC
00403DD3    8B0D DC87C800   mov     ecx, dword ptr [0xC887DC]                      ; 4444.00CE4350
00403DD9    8B01            mov     eax, dword ptr [ecx]
00403DDB    8B0D E880C800   mov     ecx, dword ptr [0xC880E8]                      ; 4444._FormMainEudic
00403DE1    8B15 64CEB400   mov     edx, dword ptr [0xB4CE64]                      ; 4444.00B4CEBC
00403DE7    E8 E8B52C00     call    006CF3D4                                       ; 出来个 关闭程序的玩意 ,当然F7了(开始走迷宫了
00403DEC    E8 7B301C00     call    005C6E6C
00403DF1    48              dec     eax
00403DF2    7E 68           jle     short 00403E5C
00403DF4    66:C745 D4 3C00 mov     word ptr [ebp-0x2C], 0x3C
6.006CF3D4    55              push    ebp
006CF3D5    8BEC            mov     ebp, esp
006CF3D7    83C4 F4         add     esp, -0xC
006CF3DA    53              push    ebx
006CF3DB    56              push    esi
006CF3DC    57              push    edi
006CF3DD    894D F8         mov     dword ptr [ebp-0x8], ecx
006CF3E0    8BDA            mov     ebx, edx
006CF3E2    8945 FC         mov     dword ptr [ebp-0x4], eax
006CF3E5    8B45 FC         mov     eax, dword ptr [ebp-0x4]
006CF3E8    8378 48 00      cmp     dword ptr [eax+0x48], 0x0
006CF3EC    75 11           jnz     short 006CF3FF
006CF3EE    8B15 10C76B00   mov     edx, dword ptr [0x6BC710]                      ; 4444.006BC768
006CF3F4    8BC3            mov     eax, ebx
006CF3F6    E8 91A1EFFF     call    005C958C
006CF3FB    84C0            test    al, al
006CF3FD    75 04           jnz     short 006CF403
006CF3FF    33C0            xor     eax, eax
006CF401    EB 02           jmp     short 006CF405
006CF403    B0 01           mov     al, 0x1
006CF405    8B55 FC         mov     edx, dword ptr [ebp-0x4]
006CF408    8882 D5000000   mov     byte ptr [edx+0xD5], al
006CF40E    33C0            xor     eax, eax
006CF410    8945 F4         mov     dword ptr [ebp-0xC], eax
006CF413    33F6            xor     esi, esi
006CF415    55              push    ebp
006CF416    68 2AF56C00     push    006CF52A
006CF41B    64:FF36         push    dword ptr fs:[esi]
006CF41E    64:8926         mov     dword ptr fs:[esi], esp
006CF421    8BC3            mov     eax, ebx
006CF423    FF50 F4         call    dword ptr [eax-0xC]
006CF426    8945 F4         mov     dword ptr [ebp-0xC], eax
006CF429    8B45 F8         mov     eax, dword ptr [ebp-0x8]
006CF42C    8B55 F4         mov     edx, dword ptr [ebp-0xC]
006CF42F    8910            mov     dword ptr [eax], edx
006CF431    33C0            xor     eax, eax
006CF433    55              push    ebp
006CF434    68 57F46C00     push    006CF457
006CF439    64:FF30         push    dword ptr fs:[eax]
006CF43C    64:8920         mov     dword ptr fs:[eax], esp
006CF43F    8B4D FC         mov     ecx, dword ptr [ebp-0x4]
006CF442    83CA FF         or      edx, 0xFFFFFFFF
006CF445    8B45 F4         mov     eax, dword ptr [ebp-0xC]
006CF448    8B18            mov     ebx, dword ptr [eax]
006CF44A    FF53 38         call    dword ptr [ebx+0x38]                          
; 是一个关闭

当然 还得F7,不然完蛋
006CF44A    FF53 38         call    dword ptr [ebx+0x38]                           ; 是一个关闭,又一个,还是F7

0044DDB4    E8 DB8A6900     call    00AE6894
0044DDB9    66:C745 E4 0C00 mov     word ptr [ebp-0x1C], 0xC
0044DDBF    8BCE            mov     ecx, esi
0044DDC1    33D2            xor     edx, edx
0044DDC3    8B07            mov     eax, dword ptr [edi]
0044DDC5    E8 860AFEFF     call    0042E850
0044DDCA    8345 F0 12      add     dword ptr [ebp-0x10], 0x12
0044DDCE    8B17            mov     edx, dword ptr [edi]                           ; 到这时,右下角托盘看到图标了
0044DDD0    81C2 28050000   add     edx, 0x528
0044DDD6    52              push    edx
0044DDD7    E8 28C7FEFF     call    0043A504
0044DDDC    59              pop     ecx

0044DE24    85C0            test    eax, eax
0044DE26    74 1B           je      short 0044DE43                                 ; 这可能是最后一个了?
0044DE28    66:C745 E4 3000 mov     word ptr [ebp-0x1C], 0x30
0044DE2E    8B4D F8         mov     ecx, dword ptr [ebp-0x8]
0044DE31    51              push    ecx
0044DE32    E8 519AFEFF     call    00437888
0044DE37    59              pop     ecx
0044DE38    66:C745 E4 1800 mov     word ptr [ebp-0x1C], 0x18
0044DE3E    8B4D F8         mov     ecx, dword ptr [ebp-0x8]
0044DE41    EB 03           jmp     short 0044DE46
0044DE43    8B4D F8         mov     ecx, dword ptr [ebp-0x8]
0044DE46    8B07            mov     eax, dword ptr [edi]
0044DE48    8988 90050000   mov     dword ptr [eax+0x590], ecx
0044DE4E    8B17            mov     edx, dword ptr [edi]
0044DE50    33C0            xor     eax, eax
0044DE52    8982 98050000   mov     dword ptr [edx+0x598], eax
0044DE58    8B17            mov     edx, dword ptr [edi]
0044DE5A    33C9            xor     ecx, ecx
0044DE5C    898A B4050000   mov     dword ptr [edx+0x5B4], ecx
0044DE62    8B07            mov     eax, dword ptr [edi]
0044DE64    8988 B0050000   mov     dword ptr [eax+0x5B0], ecx
0044DE6A    8B07            mov     eax, dword ptr [edi]
0044DE6C    8988 AC050000   mov     dword ptr [eax+0x5AC], ecx
0044DE72    8B07            mov     eax, dword ptr [edi]
0044DE74    8988 A8050000   mov     dword ptr [eax+0x5A8], ecx
0044DE7A    8B07            mov     eax, dword ptr [edi]
0044DE7C    8988 A4050000   mov     dword ptr [eax+0x5A4], ecx
0044DE82    8B07            mov     eax, dword ptr [edi]
0044DE84    8988 A0050000   mov     dword ptr [eax+0x5A0], ecx
0044DE8A    8B07            mov     eax, dword ptr [edi]
0044DE8C    8988 9C050000   mov     dword ptr [eax+0x59C], ecx
0044DE92    8B17            mov     edx, dword ptr [edi]
0044DE94    C682 C0050000 0>mov     byte ptr [edx+0x5C0], 0x0
0044DE9B    8B4D D4         mov     ecx, dword ptr [ebp-0x2C]
0044DE9E    64:890D 0000000>mov     dword ptr fs:[0], ecx
0044DEA5    8B07            mov     eax, dword ptr [edi]
0044DEA7    84DB            test    bl, bl
0044DEA9    74 05           je      short 0044DEB0                                 ; 所以这个得JMP
0044DEAB    E8 25BF6A00     call    00AF9DD5                                       ; 又出来报错框了,
0044DEB0    5F              pop     edi
0044DEB1    5E              pop     esi
0044DEB2    5B              pop     ebx
0044DEB3    8BE5            mov     esp, ebp
0044DEB5    5D              pop     ebp
0044DEB6    C3              retn

00403DF2   /7E 68           jle     short 00403E5C
00403DF4   |66:C745 D4 3C00 mov     word ptr [ebp-0x2C], 0x3C
00403DFA   |8D45 F4         lea     eax, dword ptr [ebp-0xC]
00403DFD   |E8 FE000000     call    00403F00
00403E02   |8BD0            mov     edx, eax
00403E04   |FF45 E0         inc     dword ptr [ebp-0x20]
00403E07   |B8 01000000     mov     eax, 0x1
00403E0C   |E8 BB301C00     call    005C6ECC
00403E11   |8D55 F4         lea     edx, dword ptr [ebp-0xC]
00403E14   |52              push    edx
00403E15   |BA 8731B000     mov     edx, 00B03187                                  ; ASCII "/min"
00403E1A   |8D45 F0         lea     eax, dword ptr [ebp-0x10]
00403E1D   |E8 8A576F00     call    00AF95AC
00403E22   |FF45 E0         inc     dword ptr [ebp-0x20]
00403E25   |8D55 F0         lea     edx, dword ptr [ebp-0x10]
00403E28   |58              pop     eax
00403E29   |E8 BA5A6F00     call    00AF98E8
00403E2E   |84C0            test    al, al
00403E30   |8D45 F0         lea     eax, dword ptr [ebp-0x10]
00403E33   |0F95C1          setne   cl
00403E36   |83E1 01         and     ecx, 0x1
00403E39   |BA 02000000     mov     edx, 0x2
00403E3E   |51              push    ecx
00403E3F   |FF4D E0         dec     dword ptr [ebp-0x20]
00403E42   |E8 CD596F00     call    00AF9814
00403E47   |FF4D E0         dec     dword ptr [ebp-0x20]
00403E4A   |8D45 F4         lea     eax, dword ptr [ebp-0xC]
00403E4D   |BA 02000000     mov     edx, 0x2
00403E52   |E8 BD596F00     call    00AF9814
00403E57   |59              pop     ecx
00403E58   |85C9            test    ecx, ecx
00403E5A   |75 64           jnz     short 00403EC0                                 ; 那这个也就很关键了
00403E5C   \6A 00           push    0x0
00403E5E    BA 9631B000     mov     edx, 00B03196                                  ; UNICODE "StartMin"
00403E63    8D45 E8         lea     eax, dword ptr [ebp-0x18]
00403E66    83C9 FF         or      ecx, 0xFFFFFFFF
00403E69    E8 1A596F00     call    00AF9788
00403E6E    FF45 E0         inc     dword ptr [ebp-0x20]
00403E71    BA 8C31B000     mov     edx, 00B0318C                                  ; UNICODE "FORM"


00403E7F    E8 04596F00     call    00AF9788                                             ; 下面 那句又死了,所以,这里我们得进去看下是否还有机会翻身?
00403E84    FF45 E0         inc     dword ptr [ebp-0x20]
00403E87    8B10            mov     edx, dword ptr [eax]
00403E89    8B43 5C         mov     eax, dword ptr [ebx+0x5C]
00403E8C    59              pop     ecx
00403E8D    E8 F6530800     call    Fastinifile::TFastIniFile::ReadBoolean         ; 又出来一个报错
00403E92    84C0            test    al, al
00403E94    BA 02000000     mov     edx, 0x2

总之一句话,就是多注意CALL   跳转  RET 还有 是否有坏蛋的API
程序往东,我们就往西,总跟它别着较儿来,我们的希望就有了
Snap51.gif
这个程序 被我们搞的,从活到死,又有死到生,又到出生入死,
从 随便改一个代码运行时 提示词库坏==〉到运行时报错==〉又到右上角托盘显示小图标==〉再到初始化进入界面,
难道不值得记录下么???
说明我们离彻底 成功不远了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

caijunqill 发表于 2014-3-13 13:09
新手 学习学习 感谢楼主分享
吾爱破处 发表于 2014-3-13 13:12 来自手机
xiaomaoshou 发表于 2014-3-13 13:50
www52pojiecn 发表于 2014-3-13 13:58
谢谢啦,跟进
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 03:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表