第十四章 讲解如何去除和锁定网络验证暗装

讲解如何去除和锁定网络验证暗装
 
暗桩,通常被运用在网络验证过后的功能里或者启动时的验证里,长期使用,也没有一个固定的特性,所以需要我们大家有相应的判断能力,这里我们将以VB的某程序做为一个暗装的讲解,主要讲解的就是VB的暗装以及部分暗装的去除方法
 
其实在第十三课我们所解的那个程序,他呼出时,所出现的那个错误也就是暗装所导致的
还有我们所接触的那个街头篮球外挂也是暗装所导致的
 
当我们破解了程序发现没有功能,那么就是暗装导致的
当我们破解程序突然间关机,那么就是暗装导致的
当我们破解程序突然被格盘,那么就是暗装导致的
当我们破解时,出现暗装那么是系统错误或者内存错误,都有可能,但是也并不是绝对
部分程序他是由各自系统不兼容所导致,所以在选择破解程序时遇见暗装可以给多几个人测试
是否正常
 
第一层代码像C++、
100CD243 >/$  55            push ebp
100CD244  |.  8BEC          mov ebp,esp
100CD246  |.  6A FF         push -0x1
100CD248  |.  68 406F0F10   push wed.100F6F40
100CD24D  |.  68 80CF0C10   push wed.100CCF80                        ;  SE 处理程序安装
100CD252  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
100CD258  |.  50            push eax
100CD259  |.  64:8925 00000>mov dword ptr fs:[0],esp
100CD260  |.  83EC 58       sub esp,0x58
100CD263  |.  53            push ebx
100CD264  |.  56            push esi
100CD265  |.  57            push edi                                 ;  ntdll.7C930738
100CD266  |.  8965 E8       mov [local.6],esp
100CD269  |.  FF15 88110F10 call dword ptr ds:[<&KERNEL32.GetVersion>;  kernel32.GetVersion
100CD26F  |.  33D2          xor edx,edx                              ;  ntdll.KiFastSystemCallRet
100CD271  |.  8AD4          mov dl,ah
100CD273  |.  8915 30860F10 mov dword ptr ds:[0x100F8630],edx        ;  ntdll.KiFastSystemCallRet
 
 
第二层DIE给的提示是DELPHI
 
 
运行附加后发现是VB
C:\WINDOWS\system32\msvbvm60.dll
C:\WINDOWS\system32\VB6CHS.DLL
 
第二层极为相似DELPHI入口
 
1000423C >  55              push ebp
1000423D    8BEC            mov ebp,esp
1000423F    83C4 F0         add esp,-0x10
10004242    53              push ebx
10004243    56              push esi
10004244    B8 E4410010     mov eax,UnPacked.100041E4                ; \n
10004249    E8 3AE1FFFF     call UnPacked.10002388
1000424E    33C0            xor eax,eax
10004250    55              push ebp
10004251    68 11440010     push UnPacked.10004411
10004256    64:FF30         push dword ptr fs:[eax]
10004259    64:8920         mov dword ptr fs:[eax],esp
1000425C    EB 08           jmp short UnPacked.10004266
 
第三次脱壳载入程序后,明显发现是VB编译
 
 
00403C9E   .- FF25 88134000 jmp dword ptr ds:[<&MSVBVM60.__vbaI4ErrV>;  msvbvm60.__vbaI4ErrVar
00403CA4   .- FF25 88114000 jmp dword ptr ds:[<&MSVBVM60.#561>]      ;  msvbvm60.rtcIsNumeric
00403CAA   .- FF25 BC104000 jmp dword ptr ds:[<&MSVBVM60.__vbaVarXor>;  msvbvm60.__vbaVarXor
00403CB0   .- FF25 F0114000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_QueryInterface
00403CB6   .- FF25 64114000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_AddRef
00403CBC   .- FF25 CC114000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_Release
00403CC2   .- FF25 00114000 jmp dword ptr ds:[<&MSVBVM60.#304>]      ;  msvbvm60.GetMemVar
00403CC8   .- FF25 E4114000 jmp dword ptr ds:[<&MSVBVM60.#310>]      ;  msvbvm60.PutMemVar
00403CCE   .- FF25 04124000 jmp dword ptr ds:[<&MSVBVM60.#312>]      ;  msvbvm60.SetMemVar
00403CD4   $- FF25 E4124000 jmp dword ptr ds:[<&MSVBVM60.#100>]      ;  msvbvm60.ThunRTMain
00403CDA      00            db 00
00403CDB      00            db 00
00403CDC > $  68 B8464000   push Cracked.004046B8
00403CE1   .  E8 EEFFFFFF   call
00403CE6   .  0000          add byte ptr ds:[eax],al
00403CE8   .  0000          add byte ptr ds:[eax],al
00403CEA   .  0000          add byte ptr ds:[eax],al
00403CEC   .  3000          xor byte ptr ds:[eax],al
00403CEE   .  0000          add byte ptr ds:[eax],al
00403CF0   .  3800          cmp byte ptr ds:[eax],al
00403CF2   .  0000          add byte ptr ds:[eax],al
00403CF4   .  0000          add byte ptr ds:[eax],al
00403CF6   .  0000          add byte ptr ds:[eax],al
00403CF8      C7            db C7
00403CF9      1C            db 1C
00403CFA      1B            db 1B
00403CFB      2F            db 2F                                    ;  CHAR ‘/’
00403CFC      A0            db A0
 
 
 
0012F218   001B4BD4  UNICODE “?r=8750514&sn2=C1B891369B&id=11111111&v=2032&a=l”
 
ds:[0040128C]=73519CAF (msvbvm60.__vbaNew2)
在VB中这个API是不可以NOP的,否则将引起下标越界
 
00596A65   .  8B95 3CFEFFFF mov edx,dword ptr ss:[ebp-0x1C4]
00596A6B   .  8951 0C       mov dword ptr ds:[ecx+0xC],edx           ;  ntdll.KiFastSystemCallRet
00596A6E   .  FF97 B0020000 call dword ptr ds:[edi+0x2B0]            ;  msvbvm60.73544348
 
跟踪到这里时发现调用出外挂界面
 
当VB出现循环调用一个地址时,可以采用NOP把他解决
 
当VB出现循环报错时,可以采用NOP把他解决
 
不要被工具所迷惑,所有程序的入口点,和程序的代码特征需要自己背熟和长期的磨练培养