[易语言] 东方系统备份专家 脱壳,注册算法分析

 

00423633     68 A4529500          push 9552A4
00423638     E8 50BDFFFF          call 脱壳1111.0041F38D
0042363D     8945 F4              mov dword ptr ss:[ebp-C],eax
00423640     837D F4 01           cmp dword ptr ss:[ebp-C],1
00423644     0F85 07000000        jnz 脱壳1111.00423651
0042364A     B8 01000000          mov eax,1
0042364F     EB 02                jmp short 脱壳1111.00423653
00423651     33C0                 xor eax,eax
00423653     85C0                 test eax,eax
00423655     0F84 15010000        je <脱壳1111.文本型(基本数据类型)>
00423638     E8 50BDFFFF          call 脱壳1111.0041F38D
核心比较过程
跟入:
0041F38D     55                   push ebp
0041F38E     8BEC                 mov ebp,esp
0041F390     81EC 38000000        sub esp,38
0041F396     68 18000000          push 18
0041F39B <>  E8 296B0000          call 脱壳1111.00425EC9                               ; 从堆上分配内存空间(调用6号服务)
0041F3A0     83C4 04              add esp,4                                          ; 结构
0041F3A3     8945 FC              mov dword ptr ss:[ebp-4],eax
0041F3A6     8BF8                 mov edi,eax
0041F3A8 <>  BE 305E4000          mov esi,脱壳1111.00405E30                            ; (常量)
0041F3AD     AD                   lods dword ptr ds:[esi]
0041F3AE     AB                   stos dword ptr es:[edi]
0041F3AF     AD                   lods dword ptr ds:[esi]
0041F3B0     AB                   stos dword ptr es:[edi]
0041F3B1     33C0                 xor eax,eax
0041F3B3     B9 04000000          mov ecx,4
0041F3B8     F3:AB                rep stos dword ptr es:[edi]
0041F3BA     E8 AD020000          call 脱壳1111.0041F66C                               ; 得到变换后的机器吗
跟入。
0041F66C     55                   push ebp
0041F66D     8BEC                 mov ebp,esp
0041F66F     81EC 10000000        sub esp,10
0041F675     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F67B     E8 97C6FFFF          call 脱壳1111.0041BD17
0041F680     B8 00000000          mov eax,0
0041F685     3BC1                 cmp eax,ecx
0041F687     7C 0D                jl short 脱壳1111.0041F696
0041F689     68 01000000          push 1
0041F68E <>  E8 42680000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F693     83C4 04              add esp,4
0041F696     C1E0 02              shl eax,2
0041F699     03D8                 add ebx,eax
0041F69B     895D FC              mov dword ptr ss:[ebp-4],ebx
0041F69E <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F6A3     6A 00                push 0
0041F6A5     68 55C22B15          push 152BC255
0041F6AA <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F6AF     6A 00                push 0
0041F6B1     FF35 7C529500        push dword ptr ds:[95527C]
0041F6B7     68 02000000          push 2
0041F6BC <>  BB CC000000          mov ebx,0CC                                        ; 位异或(系统核心支持库)
0041F6C1 <>  E8 09680000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F6C6     83C4 1C              add esp,1C
0041F6C9 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F6CE     6A 00                push 0
0041F6D0     50                   push eax
0041F6D1     68 01000000          push 1
0041F6D6 <>  BB D4010000          mov ebx,1D4                                        ; 取十六进制文本(系统核心支持库)
0041F6DB <>  E8 EF670000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F6E0     83C4 10              add esp,10
0041F6E3     8945 F4              mov dword ptr ss:[ebp-C],eax
0041F6E6 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F6EB     6A 00                push 0
0041F6ED     68 04000000          push 4
0041F6F2 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F6F7     6A 00                push 0
0041F6F9     68 02000000          push 2
0041F6FE <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F703     6A 00                push 0
0041F705     8B45 F4              mov eax,dword ptr ss:[ebp-C]
0041F708     85C0                 test eax,eax
0041F70A     75 05                jnz short 脱壳1111.0041F711
0041F70C <>  B8 09564000          mov eax,脱壳1111.00405609                            ; (常量)
0041F711     50                   push eax
0041F712     68 03000000          push 3
0041F717 <>  BB 3C010000          mov ebx,13C                                        ; 取文本中间(系统核心支持库)
0041F71C <>  E8 AE670000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F721     83C4 28              add esp,28
0041F724     8945 F0              mov dword ptr ss:[ebp-10],eax
0041F727     8B5D F4              mov ebx,dword ptr ss:[ebp-C]
0041F72A     85DB                 test ebx,ebx
0041F72C     74 09                je short 脱壳1111.0041F737
0041F72E     53                   push ebx
0041F72F <>  E8 8F670000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F734     83C4 04              add esp,4
0041F737     8B45 F0              mov eax,dword ptr ss:[ebp-10]
0041F73A     50                   push eax
0041F73B     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F73E     8B1B                 mov ebx,dword ptr ds:[ebx]
0041F740     85DB                 test ebx,ebx
0041F742     74 09                je short 脱壳1111.0041F74D
0041F744     53                   push ebx
0041F745 <>  E8 79670000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F74A     83C4 04              add esp,4
0041F74D     58                   pop eax
0041F74E     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F751     8903                 mov dword ptr ds:[ebx],eax
0041F753     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F759     E8 B9C5FFFF          call 脱壳1111.0041BD17
0041F75E     B8 01000000          mov eax,1
0041F763     3BC1                 cmp eax,ecx
0041F765     7C 0D                jl short 脱壳1111.0041F774
0041F767     68 01000000          push 1
0041F76C <>  E8 64670000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F771     83C4 04              add esp,4
0041F774     C1E0 02              shl eax,2
0041F777     03D8                 add ebx,eax
0041F779     895D FC              mov dword ptr ss:[ebp-4],ebx
0041F77C <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F781     6A 00                push 0
0041F783     68 FDF9BA3A          push 3ABAF9FD
0041F788 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F78D     6A 00                push 0
0041F78F     FF35 7C529500        push dword ptr ds:[95527C]
0041F795     68 02000000          push 2
0041F79A <>  BB CC000000          mov ebx,0CC                                        ; 位异或(系统核心支持库)
0041F79F <>  E8 2B670000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F7A4     83C4 1C              add esp,1C
0041F7A7 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F7AC     6A 00                push 0
0041F7AE     50                   push eax
0041F7AF     68 01000000          push 1
0041F7B4 <>  BB D4010000          mov ebx,1D4                                        ; 取十六进制文本(系统核心支持库)
0041F7B9 <>  E8 11670000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F7BE     83C4 10              add esp,10
0041F7C1     8945 F4              mov dword ptr ss:[ebp-C],eax
0041F7C4 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F7C9     6A 00                push 0
0041F7CB     68 06000000          push 6
0041F7D0 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F7D5     6A 00                push 0
0041F7D7     68 02000000          push 2
0041F7DC <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F7E1     6A 00                push 0
0041F7E3     8B45 F4              mov eax,dword ptr ss:[ebp-C]
0041F7E6     85C0                 test eax,eax
0041F7E8     75 05                jnz short 脱壳1111.0041F7EF
0041F7EA <>  B8 09564000          mov eax,脱壳1111.00405609                            ; (常量)
0041F7EF     50                   push eax
0041F7F0     68 03000000          push 3
0041F7F5 <>  BB 3C010000          mov ebx,13C                                        ; 取文本中间(系统核心支持库)
0041F7FA <>  E8 D0660000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F7FF     83C4 28              add esp,28
0041F802     8945 F0              mov dword ptr ss:[ebp-10],eax
0041F805     8B5D F4              mov ebx,dword ptr ss:[ebp-C]
0041F808     85DB                 test ebx,ebx
0041F80A     74 09                je short 脱壳1111.0041F815
0041F80C     53                   push ebx
0041F80D <>  E8 B1660000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F812     83C4 04              add esp,4
0041F815     8B45 F0              mov eax,dword ptr ss:[ebp-10]
0041F818     50                   push eax
0041F819     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F81C     8B1B                 mov ebx,dword ptr ds:[ebx]
0041F81E     85DB                 test ebx,ebx
0041F820     74 09                je short 脱壳1111.0041F82B
0041F822     53                   push ebx
0041F823 <>  E8 9B660000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F828     83C4 04              add esp,4
0041F82B     58                   pop eax
0041F82C     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F82F     8903                 mov dword ptr ds:[ebx],eax
0041F831     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F837     E8 DBC4FFFF          call 脱壳1111.0041BD17                               ; 字节集相加
0041F83C     B8 02000000          mov eax,2
0041F841     3BC1                 cmp eax,ecx
0041F843     7C 0D                jl short 脱壳1111.0041F852
0041F845     68 01000000          push 1
0041F84A <>  E8 86660000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F84F     83C4 04              add esp,4
0041F852     C1E0 02              shl eax,2
0041F855     03D8                 add ebx,eax
0041F857     895D FC              mov dword ptr ss:[ebp-4],ebx
0041F85A <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F85F     6A 00                push 0
0041F861     68 608A0733          push 33078A60
0041F866 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F86B     6A 00                push 0
0041F86D     FF35 7C529500        push dword ptr ds:[95527C]
0041F873     68 02000000          push 2
0041F878 <>  BB CC000000          mov ebx,0CC                                        ; 位异或(系统核心支持库)
0041F87D <>  E8 4D660000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F882     83C4 1C              add esp,1C
0041F885 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F88A     6A 00                push 0
0041F88C     50                   push eax
0041F88D     68 01000000          push 1
0041F892 <>  BB D4010000          mov ebx,1D4                                        ; 取十六进制文本(系统核心支持库)
0041F897 <>  E8 33660000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F89C     83C4 10              add esp,10
0041F89F     8945 F4              mov dword ptr ss:[ebp-C],eax
0041F8A2 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F8A7     6A 00                push 0
0041F8A9     68 05000000          push 5
0041F8AE <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F8B3     6A 00                push 0
0041F8B5     68 02000000          push 2
0041F8BA <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F8BF     6A 00                push 0
0041F8C1     8B45 F4              mov eax,dword ptr ss:[ebp-C]
0041F8C4     85C0                 test eax,eax
0041F8C6     75 05                jnz short 脱壳1111.0041F8CD
0041F8C8 <>  B8 09564000          mov eax,脱壳1111.00405609                            ; (常量)
0041F8CD     50                   push eax
0041F8CE     68 03000000          push 3
0041F8D3 <>  BB 3C010000          mov ebx,13C                                        ; 取文本中间(系统核心支持库)
0041F8D8 <>  E8 F2650000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F8DD     83C4 28              add esp,28
0041F8E0     8945 F0              mov dword ptr ss:[ebp-10],eax
0041F8E3     8B5D F4              mov ebx,dword ptr ss:[ebp-C]
0041F8E6     85DB                 test ebx,ebx
0041F8E8     74 09                je short 脱壳1111.0041F8F3
0041F8EA     53                   push ebx
0041F8EB <>  E8 D3650000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F8F0     83C4 04              add esp,4
0041F8F3     8B45 F0              mov eax,dword ptr ss:[ebp-10]
0041F8F6     50                   push eax
0041F8F7     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F8FA     8B1B                 mov ebx,dword ptr ds:[ebx]
0041F8FC     85DB                 test ebx,ebx
0041F8FE     74 09                je short 脱壳1111.0041F909
0041F900     53                   push ebx
0041F901 <>  E8 BD650000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F906     83C4 04              add esp,4
0041F909     58                   pop eax
0041F90A     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F90D     8903                 mov dword ptr ds:[ebx],eax
0041F90F     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F915     E8 FDC3FFFF          call 脱壳1111.0041BD17
0041F91A     B8 03000000          mov eax,3
0041F91F     3BC1                 cmp eax,ecx
0041F921     7C 0D                jl short 脱壳1111.0041F930
0041F923     68 01000000          push 1
0041F928 <>  E8 A8650000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F92D     83C4 04              add esp,4
0041F930     C1E0 02              shl eax,2
0041F933     03D8                 add ebx,eax
0041F935     895D FC              mov dword ptr ss:[ebp-4],ebx
0041F938 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F93D     6A 00                push 0
0041F93F     68 50477D30          push 307D4750
0041F944 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F949     6A 00                push 0
0041F94B     FF35 7C529500        push dword ptr ds:[95527C]
0041F951     68 02000000          push 2
0041F956 <>  BB CC000000          mov ebx,0CC                                        ; 位异或(系统核心支持库)
0041F95B <>  E8 6F650000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F960     83C4 1C              add esp,1C
0041F963 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F968     6A 00                push 0
0041F96A     50                   push eax
0041F96B     68 01000000          push 1
0041F970 <>  BB D4010000          mov ebx,1D4                                        ; 取十六进制文本(系统核心支持库)
0041F975 <>  E8 55650000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F97A     83C4 10              add esp,10
0041F97D     8945 F4              mov dword ptr ss:[ebp-C],eax
0041F980 <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F985     6A 00                push 0
0041F987     68 06000000          push 6
0041F98C <>  68 01030080          push 80000301                                      ; 整数型(基本数据类型)
0041F991     6A 00                push 0
0041F993     68 02000000          push 2
0041F998 <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F99D     6A 00                push 0
0041F99F     8B45 F4              mov eax,dword ptr ss:[ebp-C]
0041F9A2     85C0                 test eax,eax
0041F9A4     75 05                jnz short 脱壳1111.0041F9AB
0041F9A6 <>  B8 09564000          mov eax,脱壳1111.00405609                            ; (常量)
0041F9AB     50                   push eax
0041F9AC     68 03000000          push 3
0041F9B1 <>  BB 3C010000          mov ebx,13C                                        ; 取文本中间(系统核心支持库)
0041F9B6 <>  E8 14650000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F9BB     83C4 28              add esp,28
0041F9BE     8945 F0              mov dword ptr ss:[ebp-10],eax
0041F9C1     8B5D F4              mov ebx,dword ptr ss:[ebp-C]
0041F9C4     85DB                 test ebx,ebx
0041F9C6     74 09                je short 脱壳1111.0041F9D1
0041F9C8     53                   push ebx
0041F9C9 <>  E8 F5640000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F9CE     83C4 04              add esp,4
0041F9D1     8B45 F0              mov eax,dword ptr ss:[ebp-10]
0041F9D4     50                   push eax
0041F9D5     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F9D8     8B1B                 mov ebx,dword ptr ds:[ebx]
0041F9DA     85DB                 test ebx,ebx
0041F9DC     74 09                je short 脱壳1111.0041F9E7
0041F9DE     53                   push ebx
0041F9DF <>  E8 DF640000          call 脱壳1111.00425EC3                               ; 销毁从堆上分配到的内存(调用8号服务)
0041F9E4     83C4 04              add esp,4
0041F9E7     58                   pop eax
0041F9E8     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F9EB     8903                 mov dword ptr ds:[ebx],eax
0041F9ED     8BE5                 mov esp,ebp
0041F9EF     5D                   pop ebp
0041F9F0     C3                   retn
分别机器码与常量 XOR 然后取其中的一部分参与运算
并把结果放到一个数组(结构)里面。即:
.版本 2

注册码.a = 取文本中间 (取十六进制文本 (位异或 (355189333, 机器码)), 2, 4)
注册码.b = 取文本中间 (取十六进制文本 (位异或 (985332221, 机器码)), 2, 6)
注册码.c = 取文本中间 (取十六进制文本 (位异或 (856132192, 机器码)), 2, 5)
注册码.d = 取文本中间 (取十六进制文本 (位异或 (813516624, 机器码)), 2, 6)
代码就是这样
继续:
0041F3BA     E8 AD020000          call 脱壳1111.0041F66C                               ; 得到变换后的机器吗
0041F3BF     6A 00                push 0
0041F3C1     6A 00                push 0
0041F3C3     6A 00                push 0
0041F3C5 <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F3CA     6A 00                push 0
0041F3CC <>  68 B35B4000          push 脱壳1111.00405BB3                               ; -(常量)
0041F3D1 <>  68 04000080          push 80000004                                      ; 文本型(基本数据类型)
0041F3D6     6A 00                push 0
0041F3D8     8B5D 08              mov ebx,dword ptr ss:[ebp+8]
0041F3DB     8B03                 mov eax,dword ptr ds:[ebx]
0041F3DD     85C0                 test eax,eax
0041F3DF     75 05                jnz short 脱壳1111.0041F3E6
0041F3E1 <>  B8 09564000          mov eax,脱壳1111.00405609                            ; (常量)
0041F3E6     50                   push eax
0041F3E7     68 03000000          push 3
0041F3EC <>  BB 90010000          mov ebx,190                                        ; 分割文本(系统核心支持库)
0041F3F1 <>  E8 D96A0000          call 脱壳1111.00425ECF                               ; 调用核心支持库命令(调用3号服务)
0041F3F6     83C4 28              add esp,28
0041F3F9     8945 F8              mov dword ptr ss:[ebp-8],eax
0041F3FC     8B45 F8              mov eax,dword ptr ss:[ebp-8]
0041F3FF     50                   push eax
0041F400     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F403     53                   push ebx
0041F404     8B0B                 mov ecx,dword ptr ds:[ebx]
0041F406     83C3 04              add ebx,4
0041F409     85C9                 test ecx,ecx
0041F40B     74 11                je short 脱壳1111.0041F41E
0041F40D     8B03                 mov eax,dword ptr ds:[ebx]
0041F40F     83C3 04              add ebx,4
0041F412     49                   dec ecx
0041F413     74 05                je short 脱壳1111.0041F41A
0041F415     0FAF03               imul eax,dword ptr ds:[ebx]
0041F418   ^ EB F5                jmp short 脱壳1111.0041F40F
0041F41A     8BC8                 mov ecx,eax
0041F41C     85C9                 test ecx,ecx
0041F41E     0F84 19000000        je <脱壳1111.销毁从堆上分配到的内存(调用8号服务)>
0041F424     51                   push ecx
0041F425     8B03                 mov eax,dword ptr ds:[ebx]
0041F427     85C0                 test eax,eax
必须将注册码写成XXXX-XXXX-XXXX-XXXX的形式:
0041F451     B8 00000000          mov eax,0                                          ; 数组成员为0 就Jmp死
0041F456     3BC1                 cmp eax,ecx
0041F458     7C 0D                jl short 脱壳1111.0041F467
0041F45A     68 01000000          push 1
0041F45F <>  E8 716A0000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F464     83C4 04              add esp,4
0041F467     C1E0 02              shl eax,2
0041F46A     03D8                 add ebx,eax
0041F46C     895D F8              mov dword ptr ss:[ebp-8],ebx
0041F46F     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F475     E8 9DC8FFFF          call 脱壳1111.0041BD17
0041F47A     B8 00000000          mov eax,0
0041F47F     3BC1                 cmp eax,ecx
0041F481     7C 0D                jl short 脱壳1111.0041F490
0041F483     68 01000000          push 1
0041F488 <>  E8 486A0000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F48D     83C4 04              add esp,4
0041F490     C1E0 02              shl eax,2
0041F493     03D8                 add ebx,eax
0041F495     895D F4              mov dword ptr ss:[ebp-C],ebx
0041F498     8B5D F4              mov ebx,dword ptr ss:[ebp-C]
0041F49B     8B03                 mov eax,dword ptr ds:[ebx]
0041F49D     50                   push eax
0041F49E     8B5D F8              mov ebx,dword ptr ss:[ebp-8]
0041F4A1     FF33                 push dword ptr ds:[ebx]
0041F4A3     E8 07D6FFFF          call 脱壳1111.0041CAAF
0041F4A8     83C4 08              add esp,8
0041F4AB     83F8 00              cmp eax,0
0041F4AE     0F85 48010000        jnz 脱壳1111.0041F5FC
0041F4B4     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F4B7     E8 5BC8FFFF          call 脱壳1111.0041BD17
0041F4BC     B8 01000000          mov eax,1
0041F4C1     3BC1                 cmp eax,ecx
0041F4C3     7C 0D                jl short 脱壳1111.0041F4D2
0041F4C5     68 01000000          push 1
0041F4CA <>  E8 066A0000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F4CF     83C4 04              add esp,4
0041F4D2     C1E0 02              shl eax,2
0041F4D5     03D8                 add ebx,eax
0041F4D7     895D EC              mov dword ptr ss:[ebp-14],ebx
0041F4DA     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F4E0     E8 32C8FFFF          call 脱壳1111.0041BD17
0041F4E5     B8 01000000          mov eax,1
0041F4EA     3BC1                 cmp eax,ecx
0041F4EC     7C 0D                jl short 脱壳1111.0041F4FB
0041F4EE     68 01000000          push 1
0041F4F3 <>  E8 DD690000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F4F8     83C4 04              add esp,4
0041F4FB     C1E0 02              shl eax,2
0041F4FE     03D8                 add ebx,eax
0041F500     895D E8              mov dword ptr ss:[ebp-18],ebx
0041F503     8B5D E8              mov ebx,dword ptr ss:[ebp-18]
0041F506     8B03                 mov eax,dword ptr ds:[ebx]
0041F508     50                   push eax
0041F509     8B5D EC              mov ebx,dword ptr ss:[ebp-14]
0041F50C     FF33                 push dword ptr ds:[ebx]
0041F50E     E8 9CD5FFFF          call 脱壳1111.0041CAAF
0041F513     83C4 08              add esp,8
0041F516     83F8 00              cmp eax,0
0041F519     0F85 DD000000        jnz 脱壳1111.0041F5FC
0041F51F     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F522     E8 F0C7FFFF          call 脱壳1111.0041BD17
0041F527     B8 02000000          mov eax,2
0041F52C     3BC1                 cmp eax,ecx
0041F52E     7C 0D                jl short 脱壳1111.0041F53D
0041F530     68 01000000          push 1
0041F535 <>  E8 9B690000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F53A     83C4 04              add esp,4
0041F53D     C1E0 02              shl eax,2
0041F540     03D8                 add ebx,eax
0041F542     895D E0              mov dword ptr ss:[ebp-20],ebx
0041F545     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F54B     E8 C7C7FFFF          call 脱壳1111.0041BD17
0041F550     B8 02000000          mov eax,2
0041F555     3BC1                 cmp eax,ecx
0041F557     7C 0D                jl short 脱壳1111.0041F566
0041F559     68 01000000          push 1
0041F55E <>  E8 72690000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F563     83C4 04              add esp,4
0041F566     C1E0 02              shl eax,2
0041F569     03D8                 add ebx,eax
0041F56B     895D DC              mov dword ptr ss:[ebp-24],ebx
0041F56E     8B5D DC              mov ebx,dword ptr ss:[ebp-24]
0041F571     8B03                 mov eax,dword ptr ds:[ebx]
0041F573     50                   push eax
0041F574     8B5D E0              mov ebx,dword ptr ss:[ebp-20]
0041F577     FF33                 push dword ptr ds:[ebx]
0041F579     E8 31D5FFFF          call 脱壳1111.0041CAAF
0041F57E     83C4 08              add esp,8
0041F581     83F8 00              cmp eax,0
0041F584     0F85 72000000        jnz 脱壳1111.0041F5FC
0041F58A     8B5D FC              mov ebx,dword ptr ss:[ebp-4]
0041F58D     E8 85C7FFFF          call 脱壳1111.0041BD17
0041F592     B8 03000000          mov eax,3
0041F597     3BC1                 cmp eax,ecx
0041F599     7C 0D                jl short 脱壳1111.0041F5A8
0041F59B     68 01000000          push 1
0041F5A0 <>  E8 30690000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F5A5     83C4 04              add esp,4
0041F5A8     C1E0 02              shl eax,2
0041F5AB     03D8                 add ebx,eax
0041F5AD     895D D4              mov dword ptr ss:[ebp-2C],ebx
0041F5B0     8B1D 78529500        mov ebx,dword ptr ds:[955278]
0041F5B6     E8 5CC7FFFF          call 脱壳1111.0041BD17
0041F5BB     B8 03000000          mov eax,3
0041F5C0     3BC1                 cmp eax,ecx
0041F5C2     7C 0D                jl short 脱壳1111.0041F5D1
0041F5C4     68 01000000          push 1
0041F5C9 <>  E8 07690000          call 脱壳1111.00425ED5                               ; 调用Runtime内部异常处理(调用0号服务)
0041F5CE     83C4 04              add esp,4
0041F5D1     C1E0 02              shl eax,2
0041F5D4     03D8                 add ebx,eax
0041F5D6     895D D0              mov dword ptr ss:[ebp-30],ebx
0041F5D9     8B5D D0              mov ebx,dword ptr ss:[ebp-30]
0041F5DC     8B03                 mov eax,dword ptr ds:[ebx]
0041F5DE     50                   push eax
0041F5DF     8B5D D4              mov ebx,dword ptr ss:[ebp-2C]
0041F5E2     FF33                 push dword ptr ds:[ebx]
0041F5E4     E8 C6D4FFFF          call 脱壳1111.0041CAAF
每一个计算出来的注册码与分割文本比较
call 脱壳1111.0041CAAF其实就是文本数组比较的编译器过程
大家看注册机源代码就明白了。。非常简单。不过要熟悉易语言对结构和数组的一些处理
.版本 2

.子程序 _按钮1_被单击
.局部变量 输出文本, 文本型

机器码 = 到数值 (编辑框1.内容)
.如果真 (机器码 = 0)
    信息框 (“无效的数据”, 0, )
    返回 ()

.如果真结束
变化机器码 ()
输出文本 = 注册码.a + “-” + 注册码.b + “-” + 注册码.c + “-” + 注册码.d
编辑框2.内容 = 输出文本

.子程序 变化机器码
.局部变量 输出, 文本型

注册码.a = 取文本中间 (取十六进制文本 (位异或 (355189333, 机器码)), 2, 4)
注册码.b = 取文本中间 (取十六进制文本 (位异或 (985332221, 机器码)), 2, 6)
注册码.c = 取文本中间 (取十六进制文本 (位异或 (856132192, 机器码)), 2, 5)
注册码.d = 取文本中间 (取十六进制文本 (位异或 (813516624, 机器码)), 2, 6)