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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9390|回复: 41
收起左侧

[原创] 某高强度CM的简单分析

[复制链接]
xjun 发表于 2017-8-9 19:43
本帖最后由 xjun 于 2017-8-9 20:48 编辑

本人特此声明,此贴不针对任何人。
仅做技术交流.表达不好还请大牛拍砖。
一、初步分析
程序拿到手先拖入exeinfo 看看信息
QQ截图20170809171134.jpg
从基本的PE信息来看 IAT表是完整的,资源表也是完整的。 我们在来拖入OD看看
QQ截图20170809171306.jpg
入口点进来 直接解密程序的 .text 代码区段解密完之后跳向一段内存加载DLLshellcode,这个DLL就是他的核心DLL,使用VMP全部加密了。并且兼容性比较差,我WIN10系统跑不起来,WIN7系统跑起来还随机卡死和崩溃现象,啥都没开呢 --
图片1.png
-----------------------------------------------------------------------------------------------------------
我们此时跳向程序的代码领空发现程序已经解码了,并且各个地方调用IAT也正常,我们直接来到代码段分析.
1.       所有标记的代码段起始地址到结束地方都被抽取掉了,开始地址的地方都是int3,所以必定是利用异常跳转了。
2.       易语言按钮事件,易语言启窗事件,以及命令调用的地方,都把代码变形了
3.       入口点被抽取了,并且还在易语言几个内部的地方设置了暗坑
4.     我找到易语言 FF25 处,随便找了一个jmp跟了十几步,发现代码只是被简单的变形了,并且里面还时不时的有int3
QQ截图20170809171957.jpg
二、思路整理
1.       我们得还原OEP回去。
2.       还原他易语言内部的几个暗坑
3.       还原用户代码段int3 到正常的跳转 <- 这个是他模拟的jmp
4.       还原变形代码里面的int3 <-这里他用来模拟call (如何辨别jmp|all esp是否被减了4)
5.       整理变形的代码,还原变形代码
6.       验证分析与破解
三、开始还原         
1. 还原OEP            
我们来到0046BC53地址,找个易语言程序对照还原回去即可。
图片2.png
2.还原暗坑
从入口点开始我正常的跑过来,发现进入易语言启动事件的代码被retn掉了。
图片3.png
还有一处暗坑在启窗事件那
图片4.png
那么我是如何分析到 他这2处暗坑的呢? 因为我把OEP还原之后,连启窗事件都没跑完就蹦了,所以这中间必定有问题,然后你只要跟到那个call蹦了,一直这样跟进去,几次就出来了。
因为我对易语言程序比较熟悉,所以能区别哪些是易原体的 哪些是用户自写的代码。

3. 还原用户代码段的 int3被标记的变形代码

首先我们让他进程跑起来,断住KiUserExceptionDispatcher,设置EIPint3地址代码,单步跟下,发现个VEH异常处理(也可以提取出他的DLL E-Debug2.0分析),这个时候我们先记录下他这个VEH异常处理子程序的地址,后面有用。
我们知道 从ff25 那里开始就是用户自学代码的结尾,从00401004开始是用户自写代码段开始.有了大小,我们首先来整理下全部的用户代码段int3 (就是jmp指令)
搜索 VA00401004 - 00408FA7
第一种:
0040100C    55              push    ebp
0040100D    8BEC            mov     ebp, esp
0040100F    81EC 04000000   sub     esp, 0x4
00401015    CC            
int3搜索特征为 -> 81EC????????CC
第二种:
0040114F    55              push    ebp
00401150    8BEC            mov     ebp, esp
00401152    81EC 10000000   sub     esp, 0x10
00401158    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0
0040115F    CC              int3                                 
搜索特征为 -> C745??????????CC
第三种:
004023BF    55              push    ebp
004023C0    8BEC            mov     ebp, esp
004023C2    CC              int3
搜索特征为 -> 558BECCC            

然后我们自己构造个EXCEPTION_POINTERS结构去call他的这个异常处理程序,我们还需要判断ESP是否被减了4,如果被减了4,这个int3模拟的就是call指令,并且里面带有返回地址。
DWORD GetAddr(DWORD dwInt3,DWORD *pushdata){        
EXCEPTION_POINTERS ExceptInfo;      
  CONTEXT con = { 0 };     
   EXCEPTION_RECORD ex = { 0 };     
   ExceptInfo.ContextRecord = &con;      
  ExceptInfo.ExceptionRecord = &ex;      
   char espbuf[4 * 8] = { 0 };     
    ExceptInfo.ContextRecord->Esp = (DWORD)&espbuf[4];   
      ExceptInfo.ContextRecord->Eip = dwInt3;   
     ExceptInfo.ExceptionRecord->ExceptionAddress = (PVOID)dwInt3;   
    ExceptInfo.ExceptionRecord->ExceptionCode = 0x80000003;   
     ExceptInfo.ExceptionRecord->NumberParameters = 1;      
   pfnEVehHandle(&ExceptInfo);   
    memcpy(pushdata, espbuf, 4);     
    return ExceptInfo.ContextRecord->Eip;
}

效果如下
111111.jpg

这样他的所有用户代码段的代码就被我们还原了,我们打印出MUltIMATE Assembler的格式,一键还原上去。一键还原上去以后在搜索一下用户代码段还存在int32个漏修情况,同理还原上去。

4.还原壳区段的int3 代码,当用户代码正常的jmp到变形的代码后,里面还有很多int3指令,这个指令是用来模拟call

图片6.png
我们可以提取特征 CC420D0A 都是这个特征,如果没这个特征的话,我们也可以直接搜索CC来遍历。搜索出来后,我们也打印出MUltIMATE Assembler格式,一键还原上去。
图片7.png
至此,程序已经能脱离他的核心DLL 独立运行了。


5. 整理变形代码与还原

Push Imm32
jmp xxxxxxxx  ->  还原为 call指令
----------------------------------------------------------------
mov r32,Imm
not r32   ->还原为 mov r32,xxxxx
-----------------------------------------------------------------
pushfd
push    eax
mov     eax, 0x1D022C
xor     eax, 0x76BB29
mov     eax, dword ptr [eax]
mov     dword ptr [esp-0x4], 0xFE435F2A
xor     dword ptr [esp-0x4], eax
not     dword ptr [esp-0x4]  此条指令可能存在
pop     eax
popfd
call    dword ptr [esp-0xC]  -> 还原为 call指令
-----------------------------------------------------------------
mov     dword ptr [esp-0x4], 0x7FFFFCFE
not     dword ptr [esp-0x4]
push    dword ptr [esp-0x4]  -> 还原为push 指令
-----------------------------------------------------------------
push    ecx
mov     ecx, 0xFFB45D9B
not     ecx
mov     eax, dword ptr [ecx]
pop     ecx         ->还原为  mov r32,dword [constants]
-----------------------------------------------------------------
遇到 jmp short 短跳指令,直接进行下一条。
如果没有遗漏的话大概就这么多。
我使用BEA反汇编引擎 ,在加上以上的变形还原规则,
如下效果:
截图的时候。还原工具有BUG,但后面提供下载的还原工具是没有的。
TIM截图20170809193853.jpg

基本已经可以完整的还原出来原始指令。
到这个时候,顺带把易语言的命令调用地方,按钮事件 启窗事件也一并还原了吧(你也可以参考其他易语言程序来还原)

6.验证的破解与分析
机器码部分:
0040776D    55              push    ebp
0040776E    8BEC            mov     ebp, esp
00407770    81EC 04000000   sub     esp, 0x4
00407776    E8 A79DFFFF     call    00401522                         ; <-- 取机器码
0040777B    8945 FC         mov     dword ptr [ebp-0x4], eax
0040777E    68 04000080     push    0x80000004
00407783    6A 00           push    0x0
00407785    8B45 FC         mov     eax, dword ptr [ebp-0x4]
00407788    85C0            test    eax, eax
0040778A    0F85 05000000   jnz     <seg00>
00407790    B8 74D04800     mov     eax, 0048D074
00407795 >  50              push    eax
00407796    6A 01           push    0x1
00407798    BB 40A44000     mov     ebx, <置剪辑板文本>
0040779D    E8 61180000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004077A2    83C4 10         add     esp, 0x10
004077A5    8B5D FC         mov     ebx, dword ptr [ebp-0x4]
004077A8    85DB            test    ebx, ebx
004077AA    0F84 09000000   je      <seg01>
004077B0    53              push    ebx
004077B1    E8 41180000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004077B6    83C4 04         add     esp, 0x4
004077B9 >  BB 06000000     mov     ebx, 0x6
004077BE    E8 4198FFFF     call    00401004
004077C3    68 01030080     push    0x80000301
004077C8    6A 00           push    0x0
004077CA    6A 00           push    0x0
004077CC    68 04000080     push    0x80000004
004077D1    6A 00           push    0x0
004077D3    68 25D24800     push    0048D225                         ; ASCII "已复制"
004077D8    6A 04           push    0x4
004077DA    BB D0A44000     mov     ebx, <信息框>
004077DF    E8 1F180000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004077E4    83C4 34         add     esp, 0x34
004077E7    8BE5            mov     esp, ebp
004077E9    5D              pop     ebp
004077EA    C3              retn


call    00401522 为主要取机器码地方
还原后进去看看

00401522    55              push    ebp
00401523    8BEC            mov     ebp, esp
00401525    81EC 24000000   sub     esp, 0x24
0040152B    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0
00401532    C745 F8 0000000>mov     dword ptr [ebp-0x8], 0x0
00401539    C745 F4 0000000>mov     dword ptr [ebp-0xC], 0x0
00401540    6A 01           push    0x1
00401542    6A 00           push    0x0
00401544    6A 01           push    0x1
00401546    8D45 F8         lea     eax, dword ptr [ebp-0x8]
00401549    50              push    eax
0040154A    6A 01           push    0x1
0040154C    8D45 FC         lea     eax, dword ptr [ebp-0x4]
0040154F    50              push    eax
00401550    E8 85010000     call    004016DA   <-硬盘序列号
00401555    E8 A01B0000     call    004030FA   <- CPU制造厂商
0040155A    8945 F0         mov     dword ptr [ebp-0x10], eax
0040155D    E8 AE1C0000     call    00403210    <- CPU名称
00401562    8945 EC         mov     dword ptr [ebp-0x14], eax
00401565    E8 121E0000     call    0040337C     <- CPUID
0040156A    8945 E8         mov     dword ptr [ebp-0x18], eax
0040156D    E8 241F0000     call    00403496  <- 计算机名
00401572    8945 E4         mov     dword ptr [ebp-0x1C], eax
00401575    E8 F71F0000     call    00403571   <- 当前登录用户名
0040157A    8945 E0         mov     dword ptr [ebp-0x20], eax
0040157D    FF75 E0         push    dword ptr [ebp-0x20]
00401580    68 75D04800     push    0048D075
00401585    FF75 E4         push    dword ptr [ebp-0x1C]
00401588    68 75D04800     push    0048D075
0040158D    FF75 F8         push    dword ptr [ebp-0x8]
00401590    68 75D04800     push    0048D075
00401595    FF75 FC         push    dword ptr [ebp-0x4]
00401598    68 75D04800     push    0048D075
0040159D    FF75 E8         push    dword ptr [ebp-0x18]
004015A0    68 75D04800     push    0048D075
004015A5    FF75 EC         push    dword ptr [ebp-0x14]
004015A8    68 75D04800     push    0048D075
004015AD    FF75 F0         push    dword ptr [ebp-0x10]
004015B0    B9 0D000000     mov     ecx, 0xD
004015B5    E8 39FBFFFF     call    <文本相加>
004015BA    83C4 34         add     esp, 0x34
004015BD    8945 DC         mov     dword ptr [ebp-0x24], eax
004015C0    8B5D F0         mov     ebx, dword ptr [ebp-0x10]
004015C3    85DB            test    ebx, ebx
004015C5    0F84 09000000   je      <seg00>
004015CB    53              push    ebx
004015CC    E8 267A0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004015D1    83C4 04         add     esp, 0x4
004015D4 >  8B5D EC         mov     ebx, dword ptr [ebp-0x14]
004015D7    85DB            test    ebx, ebx
004015D9    0F84 09000000   je      <seg01>
004015DF    53              push    ebx
004015E0    E8 127A0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004015E5    83C4 04         add     esp, 0x4
004015E8 >  8B5D E8         mov     ebx, dword ptr [ebp-0x18]
004015EB    85DB            test    ebx, ebx
004015ED    0F84 09000000   je      <seg02>
004015F3    53              push    ebx
004015F4    E8 FE790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004015F9    83C4 04         add     esp, 0x4
004015FC >  8B5D E4         mov     ebx, dword ptr [ebp-0x1C]
004015FF    85DB            test    ebx, ebx
00401601    0F84 09000000   je      <seg03>
00401607    53              push    ebx
00401608    E8 EA790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
0040160D    83C4 04         add     esp, 0x4
00401610 >  8B5D E0         mov     ebx, dword ptr [ebp-0x20]
00401613    85DB            test    ebx, ebx
00401615    0F84 09000000   je      <seg04>
0040161B    53              push    ebx
0040161C    E8 D6790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
00401621    83C4 04         add     esp, 0x4
00401624 >  8B45 DC         mov     eax, dword ptr [ebp-0x24]
00401627    50              push    eax
00401628    8B5D F4         mov     ebx, dword ptr [ebp-0xC]
0040162B    85DB            test    ebx, ebx
0040162D    0F84 09000000   je      <seg05>
00401633    53              push    ebx
00401634    E8 BE790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
00401639    83C4 04         add     esp, 0x4
0040163C >  58              pop     eax
0040163D    8945 F4         mov     dword ptr [ebp-0xC], eax
00401640    68 04000080     push    0x80000004
00401645    6A 00           push    0x0
00401647    8B45 F4         mov     eax, dword ptr [ebp-0xC]
0040164A    85C0            test    eax, eax
0040164C    0F85 05000000   jnz     <seg06>
00401652    B8 74D04800     mov     eax, 0048D074
00401657 >  50              push    eax
00401658    6A 01           push    0x1
0040165A    BB 809D4000     mov     ebx, <到字节集>
0040165F    E8 9F790000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
00401664    83C4 10         add     esp, 0x10
00401667    8945 F0         mov     dword ptr [ebp-0x10], eax
0040166A    68 05000080     push    0x80000005
0040166F    6A 00           push    0x0
00401671    8B45 F0         mov     eax, dword ptr [ebp-0x10]
00401674    85C0            test    eax, eax
00401676    0F85 05000000   jnz     <seg07>
0040167C    B8 77D04800     mov     eax, 0048D077
00401681 >  50              push    eax
00401682    6A 01           push    0x1
00401684    B8 02000000     mov     eax, 0x2
00401689    BB 50824600     mov     ebx, <取数据摘要>
0040168E    E8 7C790000     call    0040900F                         ; jmp to <WH本地验.三方库命令调用>
00401693    83C4 10         add     esp, 0x10
00401696    8945 EC         mov     dword ptr [ebp-0x14], eax
00401699    8B5D F0         mov     ebx, dword ptr [ebp-0x10]
0040169C    85DB            test    ebx, ebx
0040169E    0F84 09000000   je      <seg08>
004016A4    53              push    ebx
004016A5    E8 4D790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004016AA    83C4 04         add     esp, 0x4
004016AD >  8B45 EC         mov     eax, dword ptr [ebp-0x14]
004016B0    E9 00000000     jmp     <seg09>
004016B5 >  50              push    eax
004016B6    8B5D FC         mov     ebx, dword ptr [ebp-0x4]
004016B9    85DB            test    ebx, ebx
004016BB    0F84 09000000   je      <seg10>
004016C1    53              push    ebx
004016C2    E8 30790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004016C7    83C4 04         add     esp, 0x4
004016CA >  8B5D F8         mov     ebx, dword ptr [ebp-0x8]
004016CD    85DB            test    ebx, ebx
004016CF    0F84 09000000   je      <seg11>
004016D5    53              push    ebx
004016D6    E8 1C790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004016DB    83C4 04         add     esp, 0x4
004016DE >  8B5D F4         mov     ebx, dword ptr [ebp-0xC]
004016E1    85DB            test    ebx, ebx
004016E3    0F84 09000000   je      <seg12>
004016E9    53              push    ebx
004016EA    E8 08790000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004016EF    83C4 04         add     esp, 0x4
004016F2 >  58              pop     eax
004016F3    8BE5            mov     esp, ebp
004016F5    5D              pop     ebp
004016F6    C3              retn

机器码 =MD5(硬盘序列号 + CPU制造商 + CPU名称 + CPUID + 计算机名 + 当前登录用户)
这个就是机器码

验证部分:
0040114F    55              push    ebp
00401150    8BEC            mov     ebp, esp
00401152    81EC 10000000   sub     esp, 0x10
00401158    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0
0040115F    6A 00           push    0x0
00401161    6A 01           push    0x1
00401163    6A FF           push    -0x1
00401165    6A 06           push    0x6
00401167    68 35000116     push    0x16010035
0040116C    68 01000152     push    0x52010001
00401171    E8 937E0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
00401176    83C4 18         add     esp, 0x18
00401179    E8 A4030000     call    00401522
0040117E    8945 F8         mov     dword ptr [ebp-0x8], eax
00401181    6A FF           push    -0x1
00401183    6A 08           push    0x8
00401185    68 34000116     push    0x16010034
0040118A    68 01000152     push    0x52010001
0040118F    E8 8D7E0000     call    00409021                         ; jmp to <WH本地验.获取窗口组件内容>
00401194    83C4 10         add     esp, 0x10
00401197    8945 F4         mov     dword ptr [ebp-0xC], eax
0040119A    8D45 F4         lea     eax, dword ptr [ebp-0xC]
0040119D    50              push    eax
0040119E    8D45 F8         lea     eax, dword ptr [ebp-0x8]
004011A1    50              push    eax
004011A2    E8 A5240000     call    0040364C
004011A7    8945 F0         mov     dword ptr [ebp-0x10], eax
004011AA    8B5D F8         mov     ebx, dword ptr [ebp-0x8]
004011AD    85DB            test    ebx, ebx
004011AF    0F84 09000000   je      <seg00>
004011B5    53              push    ebx
004011B6    E8 3C7E0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004011BB    83C4 04         add     esp, 0x4
004011BE >  8B5D F4         mov     ebx, dword ptr [ebp-0xC]
004011C1    85DB            test    ebx, ebx
004011C3    0F84 09000000   je      <seg01>
004011C9    53              push    ebx
004011CA    E8 287E0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004011CF    83C4 04         add     esp, 0x4
004011D2 >  8B45 F0         mov     eax, dword ptr [ebp-0x10]
004011D5    8945 FC         mov     dword ptr [ebp-0x4], eax
004011D8    837D FC 00      cmp     dword ptr [ebp-0x4], 0x0
004011DC    0F85 A0000000   jnz     <seg02>
004011E2    6A 00           push    0x0
004011E4    6A 00           push    0x0
004011E6    6A FF           push    -0x1
004011E8    6A 06           push    0x6
004011EA    68 39000116     push    0x16010039
004011EF    68 01000152     push    0x52010001
004011F4    E8 107E0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
004011F9    83C4 18         add     esp, 0x18
004011FC    6A 00           push    0x0
004011FE    6A 00           push    0x0
00401200    6A FF           push    -0x1
00401202    6A 06           push    0x6
00401204    68 3B000116     push    0x1601003B
00401209    68 01000152     push    0x52010001
0040120E    E8 F67D0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
00401213    83C4 18         add     esp, 0x18
00401216    6A 00           push    0x0
00401218    6A 00           push    0x0
0040121A    6A FF           push    -0x1
0040121C    6A 06           push    0x6
0040121E    68 3C000116     push    0x1601003C
00401223    68 01000152     push    0x52010001
00401228    E8 DC7D0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
0040122D    83C4 18         add     esp, 0x18
00401230    6A 00           push    0x0
00401232    6A 00           push    0x0
00401234    6A FF           push    -0x1
00401236    6A 06           push    0x6
00401238    68 74050116     push    0x16010574
0040123D    68 01000152     push    0x52010001
00401242    E8 C27D0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
00401247    83C4 18         add     esp, 0x18
0040124A    BB 06000000     mov     ebx, 0x6
0040124F    E8 B0FDFFFF     call    00401004
00401254    68 01030080     push    0x80000301
00401259    6A 00           push    0x0
0040125B    6A 00           push    0x0
0040125D    68 04000080     push    0x80000004
00401262    6A 00           push    0x0
00401264    68 04D04800     push    0048D004                         ; ASCII "验证成功"
00401269    6A 04           push    0x4
0040126B    BB D0A44000     mov     ebx, <信息框>
00401270    E8 8E7D0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
00401275    83C4 34         add     esp, 0x34
00401278    E9 60020000     jmp     <seg03>
0040127D    E9 41020000     jmp     <seg04>
00401282 >  837D FC FF      cmp     dword ptr [ebp-0x4], -0x1
00401286    0F85 33000000   jnz     <seg05>
0040128C    BB 06000000     mov     ebx, 0x6
00401291    E8 6EFDFFFF     call    00401004
00401296    68 01030080     push    0x80000301
0040129B    6A 00           push    0x0
0040129D    6A 00           push    0x0
0040129F    68 04000080     push    0x80000004
004012A4    6A 00           push    0x0
004012A6    68 0DD04800     push    0048D00D                         ; ASCII "机器码或注册码不符合长度"
004012AB    6A 04           push    0x4
004012AD    BB D0A44000     mov     ebx, <信息框>
004012B2    E8 4C7D0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004012B7    83C4 34         add     esp, 0x34
004012BA    E9 04020000     jmp     <seg04>
004012BF >  837D FC FE      cmp     dword ptr [ebp-0x4], -0x2
004012C3    0F85 33000000   jnz     <seg06>
004012C9    BB 06000000     mov     ebx, 0x6
004012CE    E8 31FDFFFF     call    00401004
004012D3    68 01030080     push    0x80000301
004012D8    6A 00           push    0x0
004012DA    6A 00           push    0x0
004012DC    68 04000080     push    0x80000004
004012E1    6A 00           push    0x0
004012E3    68 26D04800     push    0048D026                         ; ASCII "请检测网络"
004012E8    6A 04           push    0x4
004012EA    BB D0A44000     mov     ebx, <信息框>
004012EF    E8 0F7D0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004012F4    83C4 34         add     esp, 0x34
004012F7    E9 C7010000     jmp     <seg04>
004012FC >  837D FC FD      cmp     dword ptr [ebp-0x4], -0x3
00401300    0F85 33000000   jnz     <seg07>
00401306    BB 06000000     mov     ebx, 0x6
0040130B    E8 F4FCFFFF     call    00401004
00401310    68 01030080     push    0x80000301
00401315    6A 00           push    0x0
00401317    6A 00           push    0x0
00401319    68 04000080     push    0x80000004
0040131E    6A 00           push    0x0
00401320    68 31D04800     push    0048D031                         ; ASCII "验证失败"
00401325    6A 04           push    0x4
00401327    BB D0A44000     mov     ebx, <信息框>
0040132C    E8 D27C0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
00401331    83C4 34         add     esp, 0x34
00401334    E9 8A010000     jmp     <seg04>
00401339 >  837D FC FC      cmp     dword ptr [ebp-0x4], -0x4
0040133D    0F85 33000000   jnz     <seg08>
00401343    BB 06000000     mov     ebx, 0x6
00401348    E8 B7FCFFFF     call    00401004
0040134D    68 01030080     push    0x80000301
00401352    6A 00           push    0x0
00401354    6A 00           push    0x0
00401356    68 04000080     push    0x80000004
0040135B    6A 00           push    0x0
0040135D    68 3AD04800     push    0048D03A                         ; ASCII "网络超时"
00401362    6A 04           push    0x4
00401364    BB D0A44000     mov     ebx, <信息框>
00401369    E8 957C0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
0040136E    83C4 34         add     esp, 0x34
00401371    E9 4D010000     jmp     <seg04>
00401376 >  837D FC FB      cmp     dword ptr [ebp-0x4], -0x5
0040137A    0F85 33000000   jnz     <seg09>
00401380    BB 06000000     mov     ebx, 0x6
00401385    E8 7AFCFFFF     call    00401004
0040138A    68 01030080     push    0x80000301
0040138F    6A 00           push    0x0
00401391    6A 00           push    0x0
00401393    68 04000080     push    0x80000004
00401398    6A 00           push    0x0
0040139A    68 43D04800     push    0048D043                         ; ASCII "注册码已过期"
0040139F    6A 04           push    0x4
004013A1    BB D0A44000     mov     ebx, <信息框>
004013A6    E8 587C0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004013AB    83C4 34         add     esp, 0x34
004013AE    E9 10010000     jmp     <seg04>
004013B3 >  837D FC FA      cmp     dword ptr [ebp-0x4], -0x6
004013B7    0F85 33000000   jnz     <seg10>
004013BD    BB 06000000     mov     ebx, 0x6
004013C2    E8 3DFCFFFF     call    00401004
004013C7    68 01030080     push    0x80000301
004013CC    6A 00           push    0x0
004013CE    6A 00           push    0x0
004013D0    68 04000080     push    0x80000004
004013D5    6A 00           push    0x0
004013D7    68 50D04800     push    0048D050                         ; ASCII "机器码不符合"
004013DC    6A 04           push    0x4
004013DE    BB D0A44000     mov     ebx, <信息框>
004013E3    E8 1B7C0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004013E8    83C4 34         add     esp, 0x34
004013EB    E9 D3000000     jmp     <seg04>
004013F0 >  837D FC F9      cmp     dword ptr [ebp-0x4], -0x7
004013F4    0F85 33000000   jnz     <seg11>
004013FA    BB 06000000     mov     ebx, 0x6
004013FF    E8 00FCFFFF     call    00401004
00401404    68 01030080     push    0x80000301
00401409    6A 00           push    0x0
0040140B    6A 00           push    0x0
0040140D    68 04000080     push    0x80000004
00401412    6A 00           push    0x0
00401414    68 5DD04800     push    0048D05D                         ; ASCII "禁止试用"
00401419    6A 04           push    0x4
0040141B    BB D0A44000     mov     ebx, <信息框>
00401420    E8 DE7B0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
00401425    83C4 34         add     esp, 0x34
00401428    E9 96000000     jmp     <seg04>
0040142D >  68 01030080     push    0x80000301
00401432    6A 00           push    0x0
00401434    FF75 FC         push    dword ptr [ebp-0x4]
00401437    6A 01           push    0x1
00401439    BB 30A34000     mov     ebx, <到文本>
0040143E    E8 C07B0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
00401443    83C4 10         add     esp, 0x10
00401446    8945 F8         mov     dword ptr [ebp-0x8], eax
00401449    FF75 F8         push    dword ptr [ebp-0x8]
0040144C    68 66D04800     push    0048D066                         ; ASCII "错误返回值0x:"
00401451    B9 02000000     mov     ecx, 0x2
00401456    E8 98FCFFFF     call    <文本相加>
0040145B    83C4 08         add     esp, 0x8
0040145E    8945 F4         mov     dword ptr [ebp-0xC], eax
00401461    8B5D F8         mov     ebx, dword ptr [ebp-0x8]
00401464    85DB            test    ebx, ebx
00401466    0F84 09000000   je      <seg12>
0040146C    53              push    ebx
0040146D    E8 857B0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
00401472    83C4 04         add     esp, 0x4
00401475 >  BB 06000000     mov     ebx, 0x6
0040147A    E8 85FBFFFF     call    00401004
0040147F    68 01030080     push    0x80000301
00401484    6A 00           push    0x0
00401486    6A 00           push    0x0
00401488    68 04000080     push    0x80000004
0040148D    6A 00           push    0x0
0040148F    8B45 F4         mov     eax, dword ptr [ebp-0xC]
00401492    85C0            test    eax, eax
00401494    0F85 05000000   jnz     <seg13>
0040149A    B8 74D04800     mov     eax, 0048D074
0040149F >  50              push    eax
004014A0    6A 04           push    0x4
004014A2    BB D0A44000     mov     ebx, <信息框>
004014A7    E8 577B0000     call    00409003                         ; jmp to <WH本地验.核心库命令调用>
004014AC    83C4 34         add     esp, 0x34
004014AF    8B5D F4         mov     ebx, dword ptr [ebp-0xC]
004014B2    85DB            test    ebx, ebx
004014B4    0F84 09000000   je      <seg04>
004014BA    53              push    ebx
004014BB    E8 377B0000     call    00408FF7                         ; jmp to <WH本地验.内存释放>
004014C0    83C4 04         add     esp, 0x4
004014C3 >  6A 00           push    0x0
004014C5    6A 00           push    0x0
004014C7    6A FF           push    -0x1
004014C9    6A 06           push    0x6
004014CB    68 35000116     push    0x16010035
004014D0    68 01000152     push    0x52010001
004014D5    E8 2F7B0000     call    00409009                         ; jmp to <WH本地验.设置窗口组件内容>
004014DA    83C4 18         add     esp, 0x18
004014DD >  8BE5            mov     esp, ebp
004014DF    5D              pop     ebp
004014E0    C3              retn

004011A2    E8 A5240000     call    0040364C <-就是验证的call了 直接让他返回0 就可以通过。
其他几个按钮就会  禁止=假 了。
后面他有个解密数据的命令,因为没有一组正确注册码的原因,玩到后面解不开被加密的 PE文件。 他后面应该是把这个文件给内存加载了弹出破解成功的信息。就是对应的 初始化和开启HOME
其他几个验证功能按钮 就是读几个全局变量,该Patch的都Patch了。

PS:临时写的还原工具已经基本可以还原出全部指令了,但BUG肯定有,而且只针对此类程序有效。所以用出问题别找我,别找我,别找我。重要的话说三遍。 ^ _^ .

WH本地验证CM_原始文件.rar (1.4 MB, 下载次数: 17)
WH本地验证CM_还原部分 脱壳破解.rar (1.06 MB, 下载次数: 17)
还原工具与视频:http://pan.baidu.com/s/1hr9Ht9i

点评

膜拜了!小俊师傅  发表于 2017-8-10 08:57

免费评分

参与人数 11威望 +2 吾爱币 +22 热心值 +11 收起 理由
kkkwz + 1 + 1 xjun师傅很厉害,大家都知道
泽雨天下 + 1 + 1 谢谢@Thanks!
凉游浅笔深画眉 + 3 + 1 厉害了我的俊
Sound + 2 + 7 + 1 已经处理,感谢您对吾爱破解论坛的支持!
664330793 + 1 + 1 日常膜拜~
七宗罪丶 + 1 + 1 日常膜拜~
xiaowenyu945 + 1 + 1 俊师傅66的
W丶零度 + 1 + 1 我很赞同!
by厕所 + 2 + 1 日常膜拜~
2217936322 + 3 + 1 俊师傅66的
Aperodry + 1 + 1 日常膜拜~

查看全部评分

本帖被以下淘专辑推荐:

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

Sound 发表于 2017-8-11 15:15
回帖内容讨论归讨论 再次重申 5: 本版禁止点将,挑衅,侮辱 等言辞。
chimaodeshu 发表于 2017-8-10 00:04
哈哈 分析倒是差不多 下次再次在吾爱发CM时 就不会让你标题打简单分析了

这个加密代码只是很简单的静态而且 复杂的加密思路已经有 但完全没时间写

但是方法用的好 你脱壳修复 也还是解密不出最终PE

给你个正版注册码 你能算出来也正常 我就算加你觉得很吊的VMP壳 也一样可以逆 只是时间问题

你说他垃圾 对于某些人来说 比VMP还难 你让一个破过VMP exe的人来脱这个壳未必他能脱

用最简单的方法 就是最好的方法 这个壳漏洞我知道 算出JMP跳转地址 差不多就可以完成脱离DLL的步骤了

我有个思路 代码模拟执行的思路 {:1_934:} 完成后 不会让你这么简单分析的

最后的最后 我肯定也知道你一定破不到验证 所以你要正版注册码破解?  不存在滴,8字节长度的密钥 普通电脑可能要算几个月时间




点评

八字节你说多久 RSA1024都不用太长时间  发表于 2017-8-10 07:54
Pizza 发表于 2017-8-10 00:38
chimaodeshu 发表于 2017-8-10 00:04
哈哈 分析倒是差不多 下次再次在吾爱发CM时 就不会让你标题打简单分析了

这个加密代码只是很简单的静态 ...

小兄弟你是真不知天高地厚吧 会逆vmp的完虐这种程度的加密

点评

小兄弟你是真不知天高地厚吧 会逆vmp的完虐这种程度的加密  发表于 2017-8-11 15:13
panzb88 发表于 2017-8-10 09:51
看到楼主的帖子,虽然我都没看懂但是我很感兴趣,但是无从下手,本人对计算机语言这方面0基础,想问问楼主如果想学习破解这些,就好比楼主作出这样的分析,需要学习什么?我现在无从下手,不知道先从什么开始再到什么,是不是要先学习语言java或者c或者c+那些先,楼主推荐我怎么学,先从哪再到哪,希望楼主回答我,谢谢您,本人今年27  0基础~
chimaodeshu 发表于 2017-8-10 15:03
八子节要多久? 这么无知的点评也好意思发出来 256的八次方 你给我用你电脑解个我看看 我就用一层加密 你都要解好久 无脑

免费评分

参与人数 1热心值 +1 收起 理由
KaQqi + 1 我很赞同!

查看全部评分

zbnysjwsnd8 发表于 2017-8-9 19:54
支持一下
对了
师傅你看看你的排版。。乱套了

点评

我也郁闷啊,排了好多次都是这样,我是先写好文档,在从WPS拷贝过来就这样了。  发表于 2017-8-9 20:00
zhengpengxin 发表于 2017-8-9 19:57
太难啦  哈哈
头像被屏蔽
2217936322 发表于 2017-8-9 20:15
提示: 该帖被管理员或版主屏蔽
Crack-L 发表于 2017-8-9 20:31
xjun师傅就6   ..
吓死宝宝了 发表于 2017-8-9 20:53
糊里糊涂的哈哈哈
七宗罪丶 发表于 2017-8-9 20:53
膜拜师傅 这操作我一年都学不会
MiLanX 发表于 2017-8-9 21:28
厉害厉害
michaelnin 发表于 2017-8-9 22:53
我先保存,抽空学习一下,呵呵!
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-3-28 23:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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