首页
社区
课程
招聘
[原创]某国产易语言编译软件的算法分析+易语言写的注册机源代码
发表于: 2010-1-3 02:25 10646

[原创]某国产易语言编译软件的算法分析+易语言写的注册机源代码

2010-1-3 02:25
10646

【原创】某国产易语言编译软件的算法分析+易语言写的注册机源代码

004F5910    55              push    ebp
004F5911    8BEC            mov     ebp, esp
004F5913    81EC 24000000   sub     esp, 24
004F5919    C745 FC 0000000>mov     dword ptr [ebp-4], 0
004F5920    C745 F8 0000000>mov     dword ptr [ebp-8], 0
004F5927    C745 F4 0000000>mov     dword ptr [ebp-C], 0
004F592E    C745 F0 0000000>mov     dword ptr [ebp-10], 0
004F5935    C745 EC 0000000>mov     dword ptr [ebp-14], 0
004F593C    68 04000080     push    80000004
004F5941    6A 00           push    0
004F5943    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 取机器码  -214198592820091220 给EAX
004F5948    85C0            test    eax, eax
004F594A    75 05           jnz     short 004F5951                   ; 机器码不为空则跳
004F594C    B8 7E324000     mov     eax, 0040327E
004F5951    50              push    eax
004F5952    68 01000000     push    1
004F5957    BB 30010000     mov     ebx, 130
004F595C    E8 DBF30100     call    00514D3C
004F5961    83C4 10         add     esp, 10
004F5964    8945 FC         mov     dword ptr [ebp-4], eax
004F5967    68 01030080     push    80000301
004F596C    6A 00           push    0
004F596E    68 02000000     push    2
004F5973    68 04000080     push    80000004
004F5978    6A 00           push    0
004F597A    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 机器码-214198592820091220给EAX
004F597F    85C0            test    eax, eax
004F5981    75 05           jnz     short 004F5988                   ; 不为空则跳
004F5983    B8 7E324000     mov     eax, 0040327E
004F5988    50              push    eax
004F5989    68 02000000     push    2
004F598E    BB 38010000     mov     ebx, 138
004F5993    E8 A4F30100     call    00514D3C                         ; 取机器码后2位20
004F5998    83C4 1C         add     esp, 1C
004F599B    8945 E8         mov     dword ptr [ebp-18], eax          ; 将20传给内存
004F599E    68 04000080     push    80000004
004F59A3    6A 00           push    0
004F59A5    8B45 E8         mov     eax, dword ptr [ebp-18]          ; 将20传给EAX
004F59A8    85C0            test    eax, eax
004F59AA    75 05           jnz     short 004F59B1                   ; 不为空则跳
004F59AC    B8 7E324000     mov     eax, 0040327E
004F59B1    50              push    eax
004F59B2    68 01030080     push    80000301
004F59B7    6A 00           push    0
004F59B9    68 03000000     push    3
004F59BE    68 02000000     push    2
004F59C3    BB 88010000     mov     ebx, 188
004F59C8    E8 6FF30100     call    00514D3C
004F59CD    83C4 1C         add     esp, 1C
004F59D0    8945 E4         mov     dword ptr [ebp-1C], eax          ; 将EAX中的3个20传给内存
004F59D3    8B5D E8         mov     ebx, dword ptr [ebp-18]          ; 将20传给EBX
004F59D6    85DB            test    ebx, ebx
004F59D8    74 09           je      short 004F59E3                   ; 不为空就不跳
004F59DA    53              push    ebx
004F59DB    E8 4AF30100     call    00514D2A
004F59E0    83C4 04         add     esp, 4
004F59E3    8B45 E4         mov     eax, dword ptr [ebp-1C]          ; 将202020传给EAX
004F59E6    50              push    eax
004F59E7    8B5D F8         mov     ebx, dword ptr [ebp-8]
004F59EA    85DB            test    ebx, ebx
004F59EC    74 09           je      short 004F59F7                   ; 检测EBX中是否为空
004F59EE    53              push    ebx
004F59EF    E8 36F30100     call    00514D2A
004F59F4    83C4 04         add     esp, 4
004F59F7    58              pop     eax
004F59F8    8945 F8         mov     dword ptr [ebp-8], eax           ; 将202020传给内存
004F59FB    68 02000080     push    80000002
004F5A00    6A 00           push    0
004F5A02    68 00000000     push    0
004F5A07    68 01030080     push    80000301
004F5A0C    6A 00           push    0
004F5A0E    68 00000000     push    0
004F5A13    68 04000080     push    80000004
004F5A18    6A 00           push    0
004F5A1A    68 B6424000     push    004042B6
004F5A1F    68 04000080     push    80000004
004F5A24    6A 00           push    0
004F5A26    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 将机器码传给EAX
004F5A2B    85C0            test    eax, eax
004F5A2D    75 05           jnz     short 004F5A34                   ; 不为空则跳
004F5A2F    B8 7E324000     mov     eax, 0040327E
004F5A34    50              push    eax
004F5A35    68 04000000     push    4
004F5A3A    BB 48010000     mov     ebx, 148
004F5A3F    E8 F8F20100     call    00514D3C
004F5A44    83C4 34         add     esp, 34
004F5A47    8945 F4         mov     dword ptr [ebp-C], eax
004F5A4A    C745 F0 0100000>mov     dword ptr [ebp-10], 1
004F5A51    68 04000080     push    80000004
004F5A56    6A 00           push    0
004F5A58    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 机器码给EAX
004F5A5D    85C0            test    eax, eax
004F5A5F    75 05           jnz     short 004F5A66                   ; 不为空则跳
004F5A61    B8 7E324000     mov     eax, 0040327E
004F5A66    50              push    eax
004F5A67    68 01000000     push    1
004F5A6C    BB 30010000     mov     ebx, 130
004F5A71    E8 C6F20100     call    00514D3C
004F5A76    83C4 10         add     esp, 10
004F5A79    33C9            xor     ecx, ecx
004F5A7B    50              push    eax                              ; 取机器码长度
004F5A7C    8D45 F0         lea     eax, dword ptr [ebp-10]
004F5A7F    8BD8            mov     ebx, eax
004F5A81    58              pop     eax
004F5A82    41              inc     ecx
004F5A83    51              push    ecx
004F5A84    53              push    ebx
004F5A85    890B            mov     dword ptr [ebx], ecx
004F5A87    50              push    eax
004F5A88    3BC8            cmp     ecx, eax                         ; 取机器码长度
004F5A8A    0F8F EE000000   jg      004F5B7E                         ; 计次循环首(取机器码长度,i)
004F5A90    68 01030080     push    80000301
004F5A95    6A 00           push    0
004F5A97    68 01000000     push    1
004F5A9C    68 01030080     push    80000301
004F5AA1    6A 00           push    0
004F5AA3    FF75 F0         push    dword ptr [ebp-10]
004F5AA6    68 04000080     push    80000004
004F5AAB    6A 00           push    0
004F5AAD    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 机器码赋值给EAX
004F5AB2    85C0            test    eax, eax
004F5AB4    75 05           jnz     short 004F5ABB
004F5AB6    B8 7E324000     mov     eax, 0040327E
004F5ABB    50              push    eax
004F5ABC    68 03000000     push    3
004F5AC1    BB 3C010000     mov     ebx, 13C
004F5AC6    E8 71F20100     call    00514D3C                         ; 依次取机器码的ASCII值,并转换为10进制
004F5ACB    83C4 28         add     esp, 28
004F5ACE    8945 E8         mov     dword ptr [ebp-18], eax
004F5AD1    68 01030080     push    80000301
004F5AD6    6A 00           push    0
004F5AD8    68 01000000     push    1
004F5ADD    68 04000080     push    80000004
004F5AE2    6A 00           push    0
004F5AE4    8B45 E8         mov     eax, dword ptr [ebp-18]
004F5AE7    85C0            test    eax, eax
004F5AE9    75 05           jnz     short 004F5AF0
004F5AEB    B8 7E324000     mov     eax, 0040327E
004F5AF0    50              push    eax
004F5AF1    68 02000000     push    2
004F5AF6    BB 44010000     mov     ebx, 144
004F5AFB    E8 3CF20100     call    00514D3C
004F5B00    83C4 1C         add     esp, 1C
004F5B03    8945 E4         mov     dword ptr [ebp-1C], eax
004F5B06    8B5D E8         mov     ebx, dword ptr [ebp-18]
004F5B09    85DB            test    ebx, ebx
004F5B0B    74 09           je      short 004F5B16
004F5B0D    53              push    ebx
004F5B0E    E8 17F20100     call    00514D2A
004F5B13    83C4 04         add     esp, 4
004F5B16    68 01030080     push    80000301
004F5B1B    6A 00           push    0
004F5B1D    FF75 E4         push    dword ptr [ebp-1C]
004F5B20    68 01000000     push    1
004F5B25    BB 68010000     mov     ebx, 168
004F5B2A    E8 0DF20100     call    00514D3C
004F5B2F    83C4 10         add     esp, 10
004F5B32    8945 E0         mov     dword ptr [ebp-20], eax
004F5B35    FF75 E0         push    dword ptr [ebp-20]
004F5B38    FF75 EC         push    dword ptr [ebp-14]
004F5B3B    B9 02000000     mov     ecx, 2
004F5B40    E8 6F17FFFF     call    004E72B4
004F5B45    83C4 08         add     esp, 8
004F5B48    8945 DC         mov     dword ptr [ebp-24], eax
004F5B4B    8B5D E0         mov     ebx, dword ptr [ebp-20]
004F5B4E    85DB            test    ebx, ebx
004F5B50    74 09           je      short 004F5B5B
004F5B52    53              push    ebx
004F5B53    E8 D2F10100     call    00514D2A
004F5B58    83C4 04         add     esp, 4
004F5B5B    8B45 DC         mov     eax, dword ptr [ebp-24]
004F5B5E    50              push    eax
004F5B5F    8B5D EC         mov     ebx, dword ptr [ebp-14]
004F5B62    85DB            test    ebx, ebx
004F5B64    74 09           je      short 004F5B6F
004F5B66    53              push    ebx
004F5B67    E8 BEF10100     call    00514D2A
004F5B6C    83C4 04         add     esp, 4
004F5B6F    58              pop     eax
004F5B70    8945 EC         mov     dword ptr [ebp-14], eax
004F5B73    FF45 F0         inc     dword ptr [ebp-10]
004F5B76    58              pop     eax
004F5B77    5B              pop     ebx
004F5B78    59              pop     ecx
004F5B79  ^ E9 04FFFFFF     jmp     004F5A82
004F5B7E    83C4 0C         add     esp, 0C                          ; 循环结束   注册码第一半部分出现
004F5B81    C745 F0 0000000>mov     dword ptr [ebp-10], 0
004F5B88    68 04000080     push    80000004
004F5B8D    6A 00           push    0
004F5B8F    A1 E00CB200     mov     eax, dword ptr [B20CE0]          ; 将机器码给EAX
004F5B94    85C0            test    eax, eax                         ; 检测EAX是否为空
004F5B96    75 05           jnz     short 004F5B9D                   ; 不为空就跳
004F5B98    B8 7E324000     mov     eax, 0040327E
004F5B9D    50              push    eax
004F5B9E    68 01000000     push    1
004F5BA3    BB 30010000     mov     ebx, 130
004F5BA8    E8 8FF10100     call    00514D3C
004F5BAD    83C4 10         add     esp, 10
004F5BB0    33C9            xor     ecx, ecx
004F5BB2    50              push    eax
004F5BB3    8D45 F0         lea     eax, dword ptr [ebp-10]
004F5BB6    8BD8            mov     ebx, eax
004F5BB8    58              pop     eax
004F5BB9    41              inc     ecx
004F5BBA    51              push    ecx
004F5BBB    53              push    ebx
004F5BBC    890B            mov     dword ptr [ebx], ecx
004F5BBE    50              push    eax
004F5BBF    3BC8            cmp     ecx, eax                         ; 取机器码长度
004F5BC1    0F8F 96000000   jg      004F5C5D                         ; 计次循环首(取机器码长度,i)
004F5BC7    68 01030080     push    80000301
004F5BCC    6A 00           push    0
004F5BCE    FF75 F0         push    dword ptr [ebp-10]
004F5BD1    68 04000080     push    80000004
004F5BD6    6A 00           push    0
004F5BD8    8B45 EC         mov     eax, dword ptr [ebp-14]          ; 取出第一部分注册码数据给EAX
004F5BDB    85C0            test    eax, eax                         ; 检测EAX是否为空
004F5BDD    75 05           jnz     short 004F5BE4                   ; 不为空就跳
004F5BDF    B8 7E324000     mov     eax, 0040327E
004F5BE4    50              push    eax
004F5BE5    68 02000000     push    2
004F5BEA    BB 44010000     mov     ebx, 144
004F5BEF    E8 48F10100     call    00514D3C
004F5BF4    83C4 1C         add     esp, 1C
004F5BF7    68 01030080     push    80000301
004F5BFC    6A 00           push    0
004F5BFE    50              push    eax
004F5BFF    68 01000000     push    1
004F5C04    BB 68010000     mov     ebx, 168
004F5C09    E8 2EF10100     call    00514D3C                         ; 依次取第一部分机器码的ASCII值,并转换为10进制
004F5C0E    83C4 10         add     esp, 10
004F5C11    8945 E4         mov     dword ptr [ebp-1C], eax
004F5C14    FF75 E4         push    dword ptr [ebp-1C]
004F5C17    FF75 EC         push    dword ptr [ebp-14]
004F5C1A    B9 02000000     mov     ecx, 2
004F5C1F    E8 9016FFFF     call    004E72B4                         ; 第1部分注册码+依次取第一部分机器码的ASCII值,并转换为10进制
004F5C24    83C4 08         add     esp, 8
004F5C27    8945 E0         mov     dword ptr [ebp-20], eax
004F5C2A    8B5D E4         mov     ebx, dword ptr [ebp-1C]
004F5C2D    85DB            test    ebx, ebx
004F5C2F    74 09           je      short 004F5C3A
004F5C31    53              push    ebx
004F5C32    E8 F3F00100     call    00514D2A
004F5C37    83C4 04         add     esp, 4
004F5C3A    8B45 E0         mov     eax, dword ptr [ebp-20]
004F5C3D    50              push    eax
004F5C3E    8B5D EC         mov     ebx, dword ptr [ebp-14]
004F5C41    85DB            test    ebx, ebx
004F5C43    74 09           je      short 004F5C4E
004F5C45    53              push    ebx
004F5C46    E8 DFF00100     call    00514D2A
004F5C4B    83C4 04         add     esp, 4
004F5C4E    58              pop     eax
004F5C4F    8945 EC         mov     dword ptr [ebp-14], eax
004F5C52    FF45 F0         inc     dword ptr [ebp-10]
004F5C55    58              pop     eax
004F5C56    5B              pop     ebx
004F5C57    59              pop     ecx
004F5C58  ^ E9 5CFFFFFF     jmp     004F5BB9
004F5C5D    83C4 0C         add     esp, 0C                          ; 循环结束   第3部分注册码=第1部分注册码+第2部分注册码
004F5C60    68 01030080     push    80000301
004F5C65    6A 00           push    0
004F5C67    FF75 F0         push    dword ptr [ebp-10]
004F5C6A    68 01000000     push    1
004F5C6F    BB 68010000     mov     ebx, 168
004F5C74    E8 C3F00100     call    00514D3C                         ; 临时文本=取机器码长度+1
004F5C79    83C4 10         add     esp, 10
004F5C7C    8945 E8         mov     dword ptr [ebp-18], eax
004F5C7F    68 01030080     push    80000301
004F5C84    6A 00           push    0
004F5C86    FF75 F4         push    dword ptr [ebp-C]
004F5C89    68 01000000     push    1
004F5C8E    BB 68010000     mov     ebx, 168
004F5C93    E8 A4F00100     call    00514D3C                         ; 取临时文本左边第1位
004F5C98    83C4 10         add     esp, 10
004F5C9B    8945 E4         mov     dword ptr [ebp-1C], eax          ; 取临时文本
004F5C9E    68 01030080     push    80000301
004F5CA3    6A 00           push    0
004F5CA5    FF75 FC         push    dword ptr [ebp-4]                ; 取机器码长度
004F5CA8    68 01000000     push    1
004F5CAD    BB 68010000     mov     ebx, 168
004F5CB2    E8 85F00100     call    00514D3C
004F5CB7    83C4 10         add     esp, 10                          ; 取机器码长度
004F5CBA    8945 E0         mov     dword ptr [ebp-20], eax          ; 将机器码长度放在数据中
004F5CBD    FF75 E0         push    dword ptr [ebp-20]               ; 保存临时文本数据
004F5CC0    FF75 F8         push    dword ptr [ebp-8]                ; 临时文本+临时文本+临时文本
004F5CC3    FF75 E4         push    dword ptr [ebp-1C]               ; 取临时文本左边第1位
004F5CC6    FF75 E8         push    dword ptr [ebp-18]               ; 取临时文本
004F5CC9    FF75 EC         push    dword ptr [ebp-14]               ; 取第3部分注册码
004F5CCC    B9 05000000     mov     ecx, 5
004F5CD1    E8 DE15FFFF     call    004E72B4                         ; 取第3部分注册码+(取机器码长度+1的值)+临时文本左边第1位+取机器码的后2位+取机器码的后2位+取机器码的后2位+机器码长度
004F5CD6    83C4 14         add     esp, 14
004F5CD9    8945 DC         mov     dword ptr [ebp-24], eax
004F5CDC    8B5D E8         mov     ebx, dword ptr [ebp-18]
004F5CDF    85DB            test    ebx, ebx
004F5CE1    74 09           je      short 004F5CEC
004F5CE3    53              push    ebx
004F5CE4    E8 41F00100     call    00514D2A
004F5CE9    83C4 04         add     esp, 4
004F5CEC    8B5D E4         mov     ebx, dword ptr [ebp-1C]
004F5CEF    85DB            test    ebx, ebx
004F5CF1    74 09           je      short 004F5CFC
004F5CF3    53              push    ebx
004F5CF4    E8 31F00100     call    00514D2A
004F5CF9    83C4 04         add     esp, 4
004F5CFC    8B5D E0         mov     ebx, dword ptr [ebp-20]
004F5CFF    85DB            test    ebx, ebx
004F5D01    74 09           je      short 004F5D0C
004F5D03    53              push    ebx
004F5D04    E8 21F00100     call    00514D2A
004F5D09    83C4 04         add     esp, 4
004F5D0C    8B45 DC         mov     eax, dword ptr [ebp-24]
004F5D0F    E9 00000000     jmp     004F5D14
004F5D14    50              push    eax                              ; 真正的注册码出现在EAX了

注册机源代码如下!

.版本 2

.子程序 _按钮1_被单击
.局部变量 尾部数据1, 文本型
.局部变量 长度, 文本型
.局部变量 尾部数据2, 文本型

文本1 = 算法转换 (编辑框1.内容)
长度 = 到文本 (取文本长度 (编辑框1.内容))
文本2 = 算法转换 (取文本左边 (文本1, 到整数 (长度)))
尾部数据1 = 取文本右边 (编辑框1.内容, 2)
尾部数据2 = 取文本左边 (尾部数据1, 1)
编辑框2.内容 = 文本1 + 文本2 + 到文本 (到整数 (长度) + 到整数 (1)) + 尾部数据2 + 尾部数据1 + 尾部数据1 + 尾部数据1 + 长度

.子程序 算法转换, 文本型
.参数 普通文本, 文本型
.局部变量 临时文本, 文本型
.局部变量 计次, 整数型
.局部变量 文本, 文本型

临时文本 = “”
文本 = “”
.计次循环首 (取文本长度 (普通文本), 计次)
    .如果 (取代码 (普通文本, 计次) > 0)
        临时文本 = 临时文本 + 到文本 (取代码 (普通文本, 计次))
    .否则
        临时文本 = 临时文本 + 到文本 (256 + 取代码 (普通文本, 计次))
    .如果结束
    .如果真 (取文本长度 (普通文本) - 计次 > 0)
        临时文本 = 临时文本 + 文本
    .如果真结束

.计次循环尾 ()
返回 (临时文本)


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 697
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个很强的说
2010-1-3 12:10
0
雪    币: 401
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
膜拜,学习了
2010-1-4 15:57
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
厉害啊!!!!学习了!!我也是用易的!!
呵呵
我也来反汇编跟踪......
2010-1-24 00:32
0
雪    币: 221
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
易语言 有没有易语言的英文版啊
2010-1-24 19:35
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很强悍的说
进来学习了
2010-1-28 14:31
0
雪    币: 5
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
跟个帖  暂时看不懂~
2010-7-17 23:47
0
游客
登录 | 注册 方可回帖
返回