【文章标题】: [易语言]文件保护专家V9.61算法分析
【文章作者】: KuNgBiM
【作者邮箱】: kungbim@163.com
【作者主页】: http://www.crkcn.com
【软件名称】: 文件保护专家V9.61
【软件大小】: 2448 KB
【下载地址】: 自己搜索下载
【加壳方式】: UPX
【保护方式】: 启动NAG+序列号+次数限制
【编写语言】: 易语言・飞扬
【使用工具】: OD
【操作平台】: 盗版XPsp2
【软件介绍】: 文件保护专家是一款专业的超群的加密软件.在技术上居于国内领先地位,达到了当前同类产品的国际先进水平。
使用了国际公认的RC4,RSA,MD5等多种强大加密算法(超),而且功能多样化(群),可以满足你的不同需要,是同类软件之中最
好的一个(超群),她支持Windows98/me/2000/xp/2003等操作系统,软件具有界面漂亮友好、简单易用、功能强大、兼容性好等特
点,是你加密文件夹资料不可多得的实用加密类软件。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
解压安装程序后发现目录下有krnln.fne、iext.fnr、dp1.fne、shell.fne、Tooltiplib.fne文件,
我在第一时间内判断该程序为“易语言”程序,但没想到该程序是新版“易语言・飞扬”所编译的。
一、分离壳
外壳为UPX,我们Ctrl+S搜索代码:
------------------------------
popad
jmp 00401000
------------------------------
找到:
004E67EE 61 popad
004E67EF - E9 0CA8F1FF jmp 00401000 ; 这里F2下断,F9运行,中断后F7跟进OEP
004E67F4 0000 add byte ptr [eax], al
004E67F6 0000 add byte ptr [eax], al
跟进 004E67EF 后来到:
00401000 E8 06000000 call 0040100B ; OEP(易语言・飞扬)
00401005 50 push eax
00401006 E8 A1010000 call 004011AC ; jmp 到 kernel32.ExitProcess
0040100B 55 push ebp
0040100C 8BEC mov ebp, esp
0040100E 81C4 F0FEFFFF add esp, -110
00401014 EB 6D jmp short 00401083
00401016 6B72 6E 6C imul esi, dword ptr [edx+6E], 6C
0040101A 6E outs dx, byte ptr es:[edi]
0040101B 2E:66:6E outs dx, byte ptr es:[edi]
0040101E 72 00 jb short 00401020
00401020 6B72 6E 6C imul esi, dword ptr [edx+6E], 6C
00401024 6E outs dx, byte ptr es:[edi]
00401025 2E:66:6E outs dx, byte ptr es:[edi]
00401028 65:0047 65 add byte ptr gs:[edi+65], al
0040102C 74 4E je short 0040107C
二、寻找易语言程序核心
这里我们继续Ctrl+S搜索代码:
------------------------------
call eax
push 0
------------------------------
找到:
00401171 810424 8F1E0000 add dword ptr [esp], 1E8F
00401178 FFD0 call eax ; 到这里F2下断,F9运行,中断后F7跟进
0040117A 6A 00 push 0
0040117C E8 2B000000 call 004011AC ; jmp 到 kernel32.ExitProcess
00401181 FFB5 F8FEFFFF push dword ptr [ebp-108]
跟进 0040117C 后来到:
100290EC 55 push ebp ; 跟进后来到这里
100290ED 8BEC mov ebp, esp
100290EF 8B45 08 mov eax, dword ptr [ebp+8]
100290F2 50 push eax
100290F3 B9 88480E10 mov ecx, 100E4888
100290F8 E8 B2F5FFFF call 100286AF ; F7单步跟进这里
100290FD 5D pop ebp
100290FE C2 0400 retn 4
10029101 CC int3
10029102 CC int3
10029103 CC int3
跟进 100290F8 后来到:
100286AF 55 push ebp ; 这里是否很熟悉?
100286B0 8BEC mov ebp, esp
100286B2 83EC 08 sub esp, 8
100286B5 53 push ebx
100286B6 56 push esi
100286B7 57 push edi
100286B8 894D F8 mov dword ptr [ebp-8], ecx
100286BB FF15 BCC30B10 call dword ptr [100BC3BC] ; kernel32.GetProcessHeap
100286C1 8B4D F8 mov ecx, dword ptr [ebp-8]
100286C4 8981 EC030000 mov dword ptr [ecx+3EC], eax
100286CA 8B55 08 mov edx, dword ptr [ebp+8]
100286CD 8B42 30 mov eax, dword ptr [edx+30]
100286D0 83E0 01 and eax, 1
100286D3 85C0 test eax, eax
100286D5 75 10 jnz short 100286E7
100286D7 8B4D 08 mov ecx, dword ptr [ebp+8]
100286DA 51 push ecx
100286DB 8B4D F8 mov ecx, dword ptr [ebp-8]
100286DE E8 0DE30200 call 100569F0
100286E3 FFE0 jmp eax ; 飞向光明之颠!F7跟进到程序核心!
100286E5 EB 0E jmp short 100286F5
100286E7 8B55 08 mov edx, dword ptr [ebp+8]
100286EA 52 push edx
100286EB 8B4D F8 mov ecx, dword ptr [ebp-8]
跟进 100286E3 后来到:
004E214B FC cld ; 这里就是易语言的程序核心代码开始处
004E214C DBE3 finit
004E214E 68 08000000 push 8
004E2153 E8 B9000000 call 004E2211
004E2158 83C4 04 add esp, 4
004E215B A3 A80CA800 mov dword ptr [A80CA8], eax
004E2160 8BF8 mov edi, eax
004E2162 BE FD564000 mov esi, 004056FD
004E2167 AD lods dword ptr [esi]
004E2168 AB stos dword ptr es:[edi]
004E2169 AD lods dword ptr [esi]
004E216A AB stos dword ptr es:[edi]
004E216B 68 28000000 push 28
004E2170 E8 9C000000 call 004E2211
004E2175 83C4 04 add esp, 4
004E2178 A3 D40CA800 mov dword ptr [A80CD4], eax
004E217D 8BD8 mov ebx, eax
004E217F 8BF8 mov edi, eax
004E2181 33C0 xor eax, eax
三、搜索关键字符,分析注册算法
利用OD字符插件搜索关键字符后,找到这里下断:
------------------------------
联系人:KuNgBiM
注册码:1234567890
------------------------------
004DAB72 |. 83C4 04 add esp, 4 ; 来到这里设断,F9运行
004DAB75 |> 8B45 F0 mov eax, dword ptr [ebp-10]
004DAB78 |. 33C9 xor ecx, ecx
004DAB7A |. 50 push eax
004DAB7B |. 8D45 FC lea eax, dword ptr [ebp-4]
004DAB7E |. 8BD8 mov ebx, eax
004DAB80 |. 58 pop eax
004DAB81 |> 41 /inc ecx ; ECX自加一,指向下一位
004DAB82 |. 51 |push ecx
004DAB83 |. 53 |push ebx
004DAB84 |. 890B |mov dword ptr [ebx], ecx
004DAB86 |. 50 |push eax ; 计算用户长度
004DAB87 |. 3BC8 |cmp ecx, eax
004DAB89 |. 0F8F BF000000 |jg 004DAC4E
004DAB8F |. 6A FF |push -1
004DAB91 |. 6A 08 |push 8
004DAB93 |. 68 BE070116 |push 160107BE
004DAB98 |. 68 B7070152 |push 520107B7
004DAB9D |. E8 99760000 |call 004E223B ; 准备取用户名
004DABA2 |. 83C4 10 |add esp, 10
004DABA5 |. 8945 F4 |mov dword ptr [ebp-C], eax ; ASCII "KuNgBiM"
004DABA8 |. 68 01030080 |push 80000301
004DABAD |. 6A 00 |push 0
004DABAF |. FF75 FC |push dword ptr [ebp-4]
004DABB2 |. 68 04000080 |push 80000004
004DABB7 |. 6A 00 |push 0
004DABB9 |. 8B45 F4 |mov eax, dword ptr [ebp-C]
004DABBC |. 85C0 |test eax, eax
004DABBE |. 75 05 |jnz short 004DABC5
004DABC0 |. B8 98334000 |mov eax, 00403398
004DABC5 |> 50 |push eax
004DABC6 |. 68 02000000 |push 2
004DABCB |. BB 44010000 |mov ebx, 144
004DABD0 |. E8 4E760000 |call 004E2223
004DABD5 |. 83C4 1C |add esp, 1C
004DABD8 |. 8945 F0 |mov dword ptr [ebp-10], eax
004DABDB |. 8B5D F4 |mov ebx, dword ptr [ebp-C]
004DABDE |. 85DB |test ebx, ebx
004DABE0 |. 74 09 |je short 004DABEB
004DABE2 |. 53 |push ebx
004DABE3 |. E8 2F760000 |call 004E2217 ; 依次取取用户名
004DABE8 |. 83C4 04 |add esp, 4
004DABEB |> 68 01030080 |push 80000301
004DABF0 |. 6A 00 |push 0
004DABF2 |. FF75 F0 |push dword ptr [ebp-10] ; 分别转换为ASCII码
004DABF5 |. 68 01000000 |push 1
004DABFA |. BB 68010000 |mov ebx, 168
004DABFF |. E8 1F760000 |call 004E2223
004DAC04 |. 83C4 10 |add esp, 10
004DAC07 |. 8945 EC |mov dword ptr [ebp-14], eax ; 分别转换为十进制数值
004DAC0A |. FF75 EC |push dword ptr [ebp-14] ; /Arg2
004DAC0D |. FF75 F8 |push dword ptr [ebp-8] ; |Arg1
004DAC10 |. B9 02000000 |mov ecx, 2 ; |
004DAC15 |. E8 A8E7FDFF |call 004B93C2 ; \11.004B93C2
004DAC1A |. 83C4 08 |add esp, 8
004DAC1D |. 8945 E8 |mov dword ptr [ebp-18], eax
004DAC20 |. 8B5D EC |mov ebx, dword ptr [ebp-14]
004DAC23 |. 85DB |test ebx, ebx
004DAC25 |. 74 09 |je short 004DAC30
004DAC27 |. 53 |push ebx
004DAC28 |. E8 EA750000 |call 004E2217
004DAC2D |. 83C4 04 |add esp, 4
004DAC30 |> 8B5D F8 |mov ebx, dword ptr [ebp-8]
004DAC33 |. 85DB |test ebx, ebx
004DAC35 |. 74 09 |je short 004DAC40
004DAC37 |. 53 |push ebx
004DAC38 |. E8 DA750000 |call 004E2217
004DAC3D |. 83C4 04 |add esp, 4
004DAC40 |> 8B45 E8 |mov eax, dword ptr [ebp-18] ; 连接每位字符的十进制代码
004DAC43 |. 8945 F8 |mov dword ptr [ebp-8], eax ; 留守备用
004DAC46 |. 58 |pop eax
004DAC47 |. 5B |pop ebx
004DAC48 |. 59 |pop ecx
004DAC49 |.^ E9 33FFFFFF \jmp 004DAB81 ; 向上循环取位
004DAC4E |> 83C4 0C add esp, 0C
004DAC51 |. 6A FF push -1
004DAC53 |. 6A 08 push 8
004DAC55 |. 68 BF070116 push 160107BF
004DAC5A |. 68 B7070152 push 520107B7
004DAC5F |. E8 D7750000 call 004E223B
004DAC64 |. 83C4 10 add esp, 10
004DAC67 |. 8945 F4 mov dword ptr [ebp-C], eax ; 假码入栈,ASCII "0123456789"
004DAC6A |. 8B45 F8 mov eax, dword ptr [ebp-8] ; 真码入栈,ASCII "75117781036610577"
004DAC6D |. 50 push eax ; 真码送EAX
004DAC6E |. FF75 F4 push dword ptr [ebp-C] ; 假码留内存
004DAC71 |. E8 9EECFDFF call 004B9914
004DAC76 |. 83C4 08 add esp, 8 ; 注册码逐位比较
004DAC79 |. 83F8 00 cmp eax, 0
004DAC7C |. B8 00000000 mov eax, 0
004DAC81 |. 0F94C0 sete al
004DAC84 |. 8945 F0 mov dword ptr [ebp-10], eax
004DAC87 |. 8B5D F4 mov ebx, dword ptr [ebp-C]
004DAC8A |. 85DB test ebx, ebx
004DAC8C |. 74 09 je short 004DAC97
004DAC8E |. 53 push ebx ; 假码送EBX
004DAC8F |. E8 83750000 call 004E2217
004DAC94 |. 83C4 04 add esp, 4
004DAC97 |> 837D F0 00 cmp dword ptr [ebp-10], 0 ; 比较余数是否为0
004DAC9B |. 0F84 F4020000 je 004DAF95 ; 跳则GAME OVER
004DACA1 |. 68 04000080 push 80000004
004DACA6 |. 6A 00 push 0
004DACA8 |. 68 F8A74100 push 0041A7F8 ; 恭喜
004DACAD |. 68 01030080 push 80000301
004DACB2 |. 6A 00 push 0
004DACB4 |. 68 40000000 push 40
004DACB9 |. 68 04000080 push 80000004
004DACBE |. 6A 00 push 0
004DACC0 |. 68 FDA74100 push 0041A7FD ; 注册成功,非常感谢你的支持!
004DACC5 |. 68 03000000 push 3
004DACCA |. BB 00030000 mov ebx, 300
004DACCF |. E8 4F750000 call 004E2223 ; 打开注册表
004DACD4 |. 83C4 28 add esp, 28
004DACD7 |. 6A FF push -1
004DACD9 |. 6A 08 push 8
004DACDB |. 68 BE070116 push 160107BE
004DACE0 |. 68 B7070152 push 520107B7
004DACE5 |. E8 51750000 call 004E223B ; 写入用户名
004DACEA |. 83C4 10 add esp, 10
004DACED |. 8945 F4 mov dword ptr [ebp-C], eax
004DACF0 |. 68 04000080 push 80000004
004DACF5 |. 6A 00 push 0
004DACF7 |. 8B45 F4 mov eax, dword ptr [ebp-C]
004DACFA |. 85C0 test eax, eax
004DACFC |. 75 05 jnz short 004DAD03
004DACFE |. B8 98334000 mov eax, 00403398
004DAD03 |> 50 push eax
004DAD04 |. 68 04000080 push 80000004
004DAD09 |. 6A 00 push 0 ; 保存位置
004DAD0B |. 68 30554100 push 00415530 ; Software\afengsoft\lockfile\user
004DAD10 |. 68 01030080 push 80000301
004DAD15 |. 6A 00 push 0
004DAD17 |. 68 03000000 push 3
004DAD1C |. 68 03000000 push 3
004DAD21 |. BB A4060000 mov ebx, 6A4
004DAD26 |. E8 F8740000 call 004E2223 ; 关闭注册表
004DAD2B |. 83C4 28 add esp, 28
004DAD2E |. 8B5D F4 mov ebx, dword ptr [ebp-C]
004DAD31 |. 85DB test ebx, ebx
004DAD33 |. 74 09 je short 004DAD3E
004DAD35 |. 53 push ebx
004DAD36 |. E8 DC740000 call 004E2217 ; 打开注册表
004DAD3B |. 83C4 04 add esp, 4
004DAD3E |> 6A FF push -1
004DAD40 |. 6A 08 push 8
004DAD42 |. 68 BF070116 push 160107BF
004DAD47 |. 68 B7070152 push 520107B7
004DAD4C |. E8 EA740000 call 004E223B ; 写入注册码
004DAD51 |. 83C4 10 add esp, 10
004DAD54 |. 8945 F4 mov dword ptr [ebp-C], eax
004DAD57 |. 68 04000080 push 80000004
004DAD5C |. 6A 00 push 0
004DAD5E |. 8B45 F4 mov eax, dword ptr [ebp-C]
004DAD61 |. 85C0 test eax, eax
004DAD63 |. 75 05 jnz short 004DAD6A
004DAD65 |. B8 98334000 mov eax, 00403398
004DAD6A |> 50 push eax
004DAD6B |. 68 04000080 push 80000004
004DAD70 |. 6A 00 push 0 ; 保存位置
004DAD72 |. 68 2B574000 push 0040572B ; Software\afengsoft\lockfile\lock
004DAD77 |. 68 01030080 push 80000301
004DAD7C |. 6A 00 push 0
004DAD7E |. 68 03000000 push 3
004DAD83 |. 68 03000000 push 3
004DAD88 |. BB A4060000 mov ebx, 6A4
004DAD8D |. E8 91740000 call 004E2223
004DAD92 |. 83C4 28 add esp, 28
004DAD95 |. 8B5D F4 mov ebx, dword ptr [ebp-C]
004DAD98 |. 85DB test ebx, ebx
004DAD9A |. 74 09 je short 004DADA5
004DAD9C |. 53 push ebx
004DAD9D |. E8 75740000 call 004E2217 ; 关闭注册表
004DADA2 |. 83C4 04 add esp, 4
004DADA5 |> 68 01030080 push 80000301
004DADAA |. 6A 00 push 0
004DADAC |. 68 09000000 push 9
004DADB1 |. 68 01000000 push 1
004DADB6 |. BB 1C000000 mov ebx, 1C
004DADBB |. B8 02000000 mov eax, 2
004DADC0 |. E8 58740000 call 004E221D ; 打开系统盘
004DADC5 |. 83C4 10 add esp, 10
004DADC8 |. 8945 F4 mov dword ptr [ebp-C], eax
004DADCB |. 68 EB564000 push 004056EB ; /systemlockfile008
004DADD0 |. FF75 F4 push dword ptr [ebp-C] ; |Arg1
004DADD3 |. B9 02000000 mov ecx, 2 ; |
004DADD8 |. E8 E5E5FDFF call 004B93C2 ; \11.004B93C2
004DADDD |. 83C4 08 add esp, 8
004DADE0 |. 8945 F0 mov dword ptr [ebp-10], eax
004DADE3 |. 8B5D F4 mov ebx, dword ptr [ebp-C]
004DADE6 |. 85DB test ebx, ebx
004DADE8 |. 74 09 je short 004DADF3
004DADEA |. 53 push ebx
004DADEB |. E8 27740000 call 004E2217 ; 写入注册文件
004DADF0 |. 83C4 04 add esp, 4
004DADF3 |> 6A 00 push 0
004DADF5 |. 6A 00 push 0
004DADF7 |. 6A 00 push 0
004DADF9 |. 68 04000080 push 80000004
004DADFE |. 6A 00 push 0
004DAE00 |. 68 51554100 push 00415551 ; regdate
004DAE05 |. 68 04000080 push 80000004
004DAE0A |. 6A 00 push 0
004DAE0C |. 68 B1334000 push 004033B1 ; data
004DAE11 |. 68 04000080 push 80000004
004DAE16 |. 6A 00 push 0
004DAE18 |. 8B45 F0 mov eax, dword ptr [ebp-10]
004DAE1B |. 85C0 test eax, eax ; ASCII "C:\WINDOWS\systemlockfile008"
004DAE1D |. 75 05 jnz short 004DAE24
004DAE1F |. B8 98334000 mov eax, 00403398
004DAE24 |> 50 push eax
004DAE25 |. 68 04000000 push 4
004DAE2A |. BB C8080000 mov ebx, 8C8
004DAE2F |. E8 EF730000 call 004E2223
004DAE34 |. 83C4 34 add esp, 34
004DAE37 |. 8945 EC mov dword ptr [ebp-14], eax
004DAE3A |. 8B5D F0 mov ebx, dword ptr [ebp-10]
004DAE3D |. 85DB test ebx, ebx
004DAE3F |. 74 09 je short 004DAE4A
004DAE41 |. 53 push ebx
004DAE42 |. E8 D0730000 call 004E2217
004DAE47 |. 83C4 04 add esp, 4
004DAE4A |> 68 98334000 push 00403398
004DAE4F |. FF75 EC push dword ptr [ebp-14]
004DAE52 |. E8 BDEAFDFF call 004B9914
004DAE57 |. 83C4 08 add esp, 8
004DAE5A |. 83F8 00 cmp eax, 0
004DAE5D |. B8 00000000 mov eax, 0
004DAE62 |. 0F94C0 sete al
004DAE65 |. 8945 E8 mov dword ptr [ebp-18], eax
004DAE68 |. 8B5D EC mov ebx, dword ptr [ebp-14]
004DAE6B |. 85DB test ebx, ebx
004DAE6D |. 74 09 je short 004DAE78
004DAE6F |. 53 push ebx
004DAE70 |. E8 A2730000 call 004E2217
004DAE75 |. 83C4 04 add esp, 4
004DAE78 |> 837D E8 00 cmp dword ptr [ebp-18], 0
004DAE7C |. 0F84 04010000 je 004DAF86
004DAE82 |. 68 01030080 push 80000301
004DAE87 |. 6A 00 push 0
004DAE89 |. 68 09000000 push 9
004DAE8E |. 68 01000000 push 1
004DAE93 |. BB 1C000000 mov ebx, 1C
004DAE98 |. B8 02000000 mov eax, 2
004DAE9D |. E8 7B730000 call 004E221D
004DAEA2 |. 83C4 10 add esp, 10
004DAEA5 |. 8945 F4 mov dword ptr [ebp-C], eax
004DAEA8 |. 68 EB564000 push 004056EB ; /systemlockfile008
004DAEAD |. FF75 F4 push dword ptr [ebp-C] ; |Arg1
004DAEB0 |. B9 02000000 mov ecx, 2 ; |
004DAEB5 |. E8 08E5FDFF call 004B93C2 ; \11.004B93C2
004DAEBA |. 83C4 08 add esp, 8
004DAEBD |. 8945 F0 mov dword ptr [ebp-10], eax
004DAEC0 |. 8B5D F4 mov ebx, dword ptr [ebp-C]
004DAEC3 |. 85DB test ebx, ebx
004DAEC5 |. 74 09 je short 004DAED0
004DAEC7 |. 53 push ebx
004DAEC8 |. E8 4A730000 call 004E2217
004DAECD |. 83C4 04 add esp, 4
004DAED0 |> 68 00000000 push 0
004DAED5 |. BB 10020000 mov ebx, 210
004DAEDA |. E8 44730000 call 004E2223
004DAEDF |. 83C4 04 add esp, 4
004DAEE2 |. 8945 E8 mov dword ptr [ebp-18], eax
004DAEE5 |. 8955 EC mov dword ptr [ebp-14], edx
004DAEE8 |. 68 01030080 push 80000301
004DAEED |. 6A 00 push 0
004DAEEF |. 68 01000000 push 1
004DAEF4 |. 68 03000080 push 80000003
004DAEF9 |. FF75 EC push dword ptr [ebp-14]
004DAEFC |. FF75 E8 push dword ptr [ebp-18]
004DAEFF |. 68 02000000 push 2
004DAF04 |. BB E8010000 mov ebx, 1E8
004DAF09 |. E8 15730000 call 004E2223
004DAF0E |. 83C4 1C add esp, 1C
004DAF11 |. 8945 E4 mov dword ptr [ebp-1C], eax
004DAF14 |. 68 04000080 push 80000004
004DAF19 |. 6A 00 push 0
004DAF1B |. 8B45 E4 mov eax, dword ptr [ebp-1C]
004DAF1E |. 85C0 test eax, eax
004DAF20 |. 75 05 jnz short 004DAF27
004DAF22 |. B8 98334000 mov eax, 00403398
004DAF27 |> 50 push eax
004DAF28 |. 68 04000080 push 80000004
004DAF2D |. 6A 00 push 0
004DAF2F |. 68 51554100 push 00415551 ; regdate
004DAF34 |. 68 04000080 push 80000004
004DAF39 |. 6A 00 push 0
004DAF3B |. 68 B1334000 push 004033B1 ; data
004DAF40 |. 68 04000080 push 80000004
004DAF45 |. 6A 00 push 0
004DAF47 |. 8B45 F0 mov eax, dword ptr [ebp-10]
004DAF4A |. 85C0 test eax, eax
004DAF4C |. 75 05 jnz short 004DAF53
004DAF4E |. B8 98334000 mov eax, 00403398
004DAF53 |> 50 push eax
004DAF54 |. 68 04000000 push 4
004DAF59 |. BB CC080000 mov ebx, 8CC
004DAF5E |. E8 C0720000 call 004E2223
004DAF63 |. 83C4 34 add esp, 34
004DAF66 |. 8B5D F0 mov ebx, dword ptr [ebp-10]
004DAF69 |. 85DB test ebx, ebx
004DAF6B |. 74 09 je short 004DAF76
004DAF6D |. 53 push ebx
004DAF6E |. E8 A4720000 call 004E2217
004DAF73 |. 83C4 04 add esp, 4
004DAF76 |> 8B5D E4 mov ebx, dword ptr [ebp-1C]
004DAF79 |. 85DB test ebx, ebx
004DAF7B |. 74 09 je short 004DAF86
004DAF7D |. 53 push ebx
004DAF7E |. E8 94720000 call 004E2217
004DAF83 |. 83C4 04 add esp, 4
004DAF86 |> 6A 00 push 0
004DAF88 |. E8 6C720000 call 004E21F9
004DAF8D |. 83C4 04 add esp, 4
004DAF90 |. E9 40000000 jmp 004DAFD5
004DAF95 |> 837D 08 00 cmp dword ptr [ebp+8], 0
004DAF99 |. 0F84 36000000 je 004DAFD5
004DAF9F |. 68 04000080 push 80000004
004DAFA4 |. 6A 00 push 0
004DAFA6 |. 68 5CA74100 push 0041A75C ; 提示
004DAFAB |. 68 01030080 push 80000301
004DAFB0 |. 6A 00 push 0
004DAFB2 |. 68 40000000 push 40
004DAFB7 |. 68 04000080 push 80000004
004DAFBC |. 6A 00 push 0
004DAFBE |. 68 ACA74100 push 0041A7AC ; 注册失败,请输入正确注册码!
004DAFC3 |. 68 03000000 push 3
004DAFC8 |. BB 00030000 mov ebx, 300
004DAFCD |. E8 51720000 call 004E2223
004DAFD2 |. 83C4 28 add esp, 28
004DAFD5 |> E9 40000000 jmp 004DB01A
004DAFDA |> 837D 08 00 cmp dword ptr [ebp+8], 0
004DAFDE |. 0F84 36000000 je 004DB01A
004DAFE4 |. 68 04000080 push 80000004
004DAFE9 |. 6A 00 push 0
004DAFEB |. 68 5CA74100 push 0041A75C ; 提示
004DAFF0 |. 68 01030080 push 80000301
004DAFF5 |. 6A 00 push 0
004DAFF7 |. 68 40000000 push 40
004DAFFC |. 68 04000080 push 80000004
004DB001 |. 6A 00 push 0
004DB003 |. 68 C8A74100 push 0041A7C8 ; 注册失败,请输入完整的注册信息!
004DB008 |. 68 03000000 push 3
004DB00D |. BB 00030000 mov ebx, 300
004DB012 |. E8 0C720000 call 004E2223
004DB017 |. 83C4 28 add esp, 28
004DB01A |> 8B5D F8 mov ebx, dword ptr [ebp-8]
004DB01D |. 85DB test ebx, ebx
004DB01F |. 74 09 je short 004DB02A
004DB021 |. 53 push ebx
004DB022 |. E8 F0710000 call 004E2217
004DB027 |. 83C4 04 add esp, 4
004DB02A |> 8BE5 mov esp, ebp
004DB02C |. 5D pop ebp
004DB02D \. C2 0800 retn 8
注册算法为:
依次把用户名每个字母转换为ASCII码后再转换为十进制数值串起来即可。
============ 以下程序在盗版XPsp2、VB6.0下编译测试通过 ============
Private Sub Text1_Change()
'Keygen by KuNgBiM
Dim name As String
Dim n, m, i As Byte
Dim sn, tmp As String
name = Text1.Text
n = Len(name)
For i = 1 To n
tmp = Mid(name, i, 1)
m = Asc(tmp)
sn = sn & m
Next
Text2.Text = sn
End Sub
============ 以下程序在盗版XPsp2、Delphi 6.0下编译测试通过 ============
procedure Tkeygen.Text1Change(Sender: TObject);
var
name, tmp: AnsiString;
n, m, sn: Variant;
i: Char;
begin
//{$DEFINE def_Text1_Change}
{$IF Defined(def_Text1_Change)}
// Keygen by KuNgBiM
name := Text1.Text;
n := Length(name);
for i:=1 to n do begin
tmp := Copy(name, i, 1);
m := Asc(tmp);
sn := sn+m;
end;
Text2.Text := sn;
{$IFEND} // def_Text1_Change
end;
end.
============ 以下程序在盗版XPsp2、VC++ 6.0下编译测试通过 ============
void Ckeygen::OnChangeText1()
{
// TODO: Add your control notification handler code here
// Keygen by KuNgBiM
CString name;
CComVariant n, m; BYTE i;
CComVariant sn; CString tmp;
name = Text(m_Text1);
n = name.GetLength();
for(i=1; i<=n; i++) {
tmp = name.Mid(i-1, 1);
m = Asc(tmp);
sn = sn+m;
}
m_Text2.SetWindowText(sn);
}
--------------------------------------------------------------------------------
【经验总结】
新年快乐!没什么好总结的,凑合看吧!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年02月17日 PM 02:37:57
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
上传的附件: