- UID
- 29293
注册时间2007-3-4
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
【文章标题】: 文件批量复制工具 2.0注册算法浅析
【文章作者】: 蚊香/magic659117852
【作者邮箱】: [email protected]
【作者主页】: http://www.xpi386.com
【软件大小】: 803KB
【下载地址】: http://www.newhua.com/soft/70381.htm
【保护方式】: 注册码
【编写语言】: Borland Delphi
【使用工具】: PEiD OllyDBG
【操作平台】: D版XP-SP2
【软件介绍】: 可以一次性将多个文件复制到多个目录下的工具。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】- 0048AA18 /. 55 push ebp ; 通过查找字符串在此下断
- 0048AA19 |. 8BEC mov ebp, esp ; F9运行,输入123456789012试注册
- 0048AA1B |. 81C4 E0FEFFFF add esp, -120
- 0048AA21 |. 53 push ebx
- 0048AA22 |. 56 push esi
- 0048AA23 |. 57 push edi
- 0048AA24 |. 33C9 xor ecx, ecx
- 0048AA26 |. 898D E0FEFFFF mov dword ptr [ebp-120], ecx
- 0048AA2C |. 898D E4FEFFFF mov dword ptr [ebp-11C], ecx
- 0048AA32 |. 898D E8FEFFFF mov dword ptr [ebp-118], ecx
- 0048AA38 |. 898D ECFEFFFF mov dword ptr [ebp-114], ecx
- 0048AA3E |. 898D F0FEFFFF mov dword ptr [ebp-110], ecx
- 0048AA44 |. 898D F4FEFFFF mov dword ptr [ebp-10C], ecx
- 0048AA4A |. 8BD8 mov ebx, eax
- 0048AA4C |. 33C0 xor eax, eax
- 0048AA4E |. 55 push ebp
- 0048AA4F |. 68 E1AB4800 push 0048ABE1
- 0048AA54 |. 64:FF30 push dword ptr fs:[eax]
- 0048AA57 |. 64:8920 mov dword ptr fs:[eax], esp
- 0048AA5A |. 8D95 F4FEFFFF lea edx, dword ptr [ebp-10C]
- 0048AA60 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
- 0048AA66 |. E8 E5F9FCFF call 0045A450 ; 试练码长度
- 0048AA6B |. 8B85 F4FEFFFF mov eax, dword ptr [ebp-10C]
- 0048AA71 |. E8 FA060000 call 0048B170 ; 算法CALL,F7进
- 0048AA76 |. 84C0 test al, al
- 0048AA78 |. 0F84 DF000000 je 0048AB5D ; 关键跳,跳则挂
- 0048AA7E |. A1 F0E34800 mov eax, dword ptr [48E3F0]
- 0048AA83 |. C600 01 mov byte ptr [eax], 1
- 0048AA86 |. 8D95 F0FEFFFF lea edx, dword ptr [ebp-110]
- 0048AA8C |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
- 0048AA92 |. E8 B9F9FCFF call 0045A450
- 0048AA97 |. 8B95 F0FEFFFF mov edx, dword ptr [ebp-110]
- 0048AA9D |. A1 18E44800 mov eax, dword ptr [48E418]
- 0048AAA2 |. E8 8195F7FF call 00404028
- 0048AAA7 |. 68 05010000 push 105 ; /BufSize = 105 (261.)
- 0048AAAC |. 8D85 FBFEFFFF lea eax, dword ptr [ebp-105] ; |
- 0048AAB2 |. 50 push eax ; |Buffer
- 0048AAB3 |. E8 7CBAF7FF call <jmp.&kernel32.GetSystemDirector>; \GetSystemDirectoryA
- 0048AAB8 |. 8D85 ECFEFFFF lea eax, dword ptr [ebp-114]
- 0048AABE |. 8D95 FBFEFFFF lea edx, dword ptr [ebp-105]
- 0048AAC4 |. B9 05010000 mov ecx, 105
- 0048AAC9 |. E8 7697F7FF call 00404244
- 0048AACE |. 8D85 ECFEFFFF lea eax, dword ptr [ebp-114]
- 0048AAD4 |. BA F8AB4800 mov edx, 0048ABF8 ; \supercopy.ini
- 0048AAD9 |. E8 BE97F7FF call 0040429C ; 注册码保存位置 C:\WINDOWS\system32
- \SuperCopy.ini
- 0048AADE |. 8B8D ECFEFFFF mov ecx, dword ptr [ebp-114]
- 0048AAE4 |. B2 01 mov dl, 1
- 0048AAE6 |. A1 FC554300 mov eax, dword ptr [4355FC]
- 0048AAEB |. E8 BCABFAFF call 004356AC
- 0048AAF0 |. 8BF0 mov esi, eax
- 0048AAF2 |. 8D95 E8FEFFFF lea edx, dword ptr [ebp-118]
- 0048AAF8 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
- 0048AAFE |. E8 4DF9FCFF call 0045A450
- 0048AB03 |. 8B85 E8FEFFFF mov eax, dword ptr [ebp-118]
- 0048AB09 |. 50 push eax
- 0048AB0A |. B9 10AC4800 mov ecx, 0048AC10 ; key
- 0048AB0F |. BA 1CAC4800 mov edx, 0048AC1C ; regcode
- 0048AB14 |. 8BC6 mov eax, esi
- 0048AB16 |. 8B38 mov edi, dword ptr [eax]
- 0048AB18 |. FF57 04 call dword ptr [edi+4]
- 0048AB1B |. 8BC6 mov eax, esi
- 0048AB1D |. E8 9E86F7FF call 004031C0
- 0048AB22 |. 6A 40 push 40
- 0048AB24 |. 8D95 E4FEFFFF lea edx, dword ptr [ebp-11C]
- 0048AB2A |. A1 A4E64800 mov eax, dword ptr [48E6A4]
- 0048AB2F |. 8B00 mov eax, dword ptr [eax]
- 0048AB31 |. E8 B6F2FEFF call 00479DEC
- 0048AB36 |. 8B85 E4FEFFFF mov eax, dword ptr [ebp-11C]
- 0048AB3C |. E8 5399F7FF call 00404494
- 0048AB41 |. 50 push eax
- 0048AB42 |. 68 24AC4800 push 0048AC24 ; 注册成功!
- 0048AB47 |. 8BC3 mov eax, ebx
- 0048AB49 |. E8 2261FDFF call 00460C70
- 0048AB4E |. 50 push eax ; |hOwner
- 0048AB4F |. E8 28C1F7FF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
- 0048AB54 |. 8BC3 mov eax, ebx
- 0048AB56 |. E8 3DC0FEFF call 00476B98
- 0048AB5B |. EB 40 jmp short 0048AB9D
- 0048AB5D |> 6A 40 push 40
- 0048AB5F |. 8D95 E0FEFFFF lea edx, dword ptr [ebp-120]
- 0048AB65 |. A1 A4E64800 mov eax, dword ptr [48E6A4]
- 0048AB6A |. 8B00 mov eax, dword ptr [eax]
- 0048AB6C |. E8 7BF2FEFF call 00479DEC
- 0048AB71 |. 8B85 E0FEFFFF mov eax, dword ptr [ebp-120]
- 0048AB77 |. E8 1899F7FF call 00404494
- 0048AB7C |. 50 push eax
- 0048AB7D |. 68 30AC4800 push 0048AC30 ; 注册码错误,请重新输入!
- 0048AB82 |. 8BC3 mov eax, ebx
- 0048AB84 |. E8 E760FDFF call 00460C70
- 0048AB89 |. 50 push eax ; |hOwner
- 0048AB8A |. E8 EDC0F7FF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
- 0048AB8F |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
- 0048AB95 |. 8B10 mov edx, dword ptr [eax]
- 0048AB97 |. FF92 C4000000 call dword ptr [edx+C4]
- 0048AB9D |> 33C0 xor eax, eax
- 0048AB9F |. 5A pop edx
- 0048ABA0 |. 59 pop ecx
- 0048ABA1 |. 59 pop ecx
- 0048ABA2 |. 64:8910 mov dword ptr fs:[eax], edx
- 0048ABA5 |. 68 E8AB4800 push 0048ABE8
- 0048ABAA |> 8D85 E0FEFFFF lea eax, dword ptr [ebp-120]
- 0048ABB0 |. BA 02000000 mov edx, 2
- 0048ABB5 |. E8 3E94F7FF call 00403FF8
- 0048ABBA |. 8D85 E8FEFFFF lea eax, dword ptr [ebp-118]
- 0048ABC0 |. E8 0F94F7FF call 00403FD4
- 0048ABC5 |. 8D85 ECFEFFFF lea eax, dword ptr [ebp-114]
- 0048ABCB |. E8 0494F7FF call 00403FD4
- 0048ABD0 |. 8D85 F0FEFFFF lea eax, dword ptr [ebp-110]
- 0048ABD6 |. BA 02000000 mov edx, 2
- 0048ABDB |. E8 1894F7FF call 00403FF8
- 0048ABE0 \. C3 retn
- 0048ABE1 .^ E9 6E8DF7FF jmp 00403954
- 0048ABE6 .^ EB C2 jmp short 0048ABAA
- 0048ABE8 . 5F pop edi
- 0048ABE9 . 5E pop esi
- 0048ABEA > 5B pop ebx
- 0048ABEB . 8BE5 mov esp, ebp
- 0048ABED . 5D pop ebp
- 0048ABEE . C3 retn
复制代码 进入算法CALL 0048AA71- 0048B170 55 push ebp ; 直接在此赋1给AL后返回可实现爆破
- 0048B171 8BEC mov ebp, esp
- 0048B173 51 push ecx
- 0048B174 |. 53 push ebx
- 0048B175 |. 8945 FC mov dword ptr [ebp-4], eax
- 0048B178 |. 8B45 FC mov eax, dword ptr [ebp-4]
- 0048B17B |. E8 0493F7FF call 00404484
- 0048B180 |. 33C0 xor eax, eax
- 0048B182 |. 55 push ebp
- 0048B183 |. 68 DBB14800 push 0048B1DB
- 0048B188 |. 64:FF30 push dword ptr fs:[eax]
- 0048B18B |. 64:8920 mov dword ptr fs:[eax], esp
- 0048B18E |. 8B45 FC mov eax, dword ptr [ebp-4]
- 0048B191 |. E8 FE90F7FF call 00404294 ; 注册码长度
- 0048B196 |. 83F8 0C cmp eax, 0C ; 必须为12位
- 0048B199 |. 74 04 je short 0048B19F
- 0048B19B |. 33DB xor ebx, ebx
- 0048B19D |. EB 26 jmp short 0048B1C5
- 0048B19F |> BB 05000000 mov ebx, 5 ; EBX=5
- 0048B1A4 |> 8B45 FC /mov eax, dword ptr [ebp-4]
- 0048B1A7 |. 8A4418 FF |mov al, byte ptr [eax+ebx-1] ; 依次取试练码的5-8位
- 0048B1AB |. E8 60FFFFFF |call 0048B110 ; 查表
- 0048B1B0 |. 8B55 FC |mov edx, dword ptr [ebp-4]
- 0048B1B3 |. 3A441A 03 |cmp al, byte ptr [edx+ebx+3] ; 查表所得分别依次与试练码的9-12位比较
- 0048B1B7 |. 74 04 |je short 0048B1BD ; 遇不相同则跳向失败
- 0048B1B9 |. 33DB |xor ebx, ebx
- 0048B1BB |. EB 08 |jmp short 0048B1C5
- 0048B1BD 43 |inc ebx
- 0048B1BE 83FB 09 |cmp ebx, 9
- 0048B1C1 ^ 75 E1 \jnz short 0048B1A4 ; 循环4次
- 0048B1C3 B3 01 mov bl, 1 ; 关键赋值
- 0048B1C5 33C0 xor eax, eax
- 0048B1C7 5A pop edx
- 0048B1C8 59 pop ecx
- 0048B1C9 59 pop ecx
- 0048B1CA |. 64:8910 mov dword ptr fs:[eax], edx
- 0048B1CD |. 68 E2B14800 push 0048B1E2
- 0048B1D2 |> 8D45 FC lea eax, dword ptr [ebp-4]
- 0048B1D5 E8 FA8DF7FF call 00403FD4
- 0048B1DA C3 retn
- 0048B1DB ^ E9 7487F7FF jmp 00403954
- 0048B1E0 ^ EB F0 jmp short 0048B1D2
- 0048B1E2 8BC3 mov eax, ebx ; 关键传递
- 0048B1E4 5B pop ebx
- 0048B1E5 59 pop ecx
- 0048B1E6 5D pop ebp
- 0048B1E7 C3 retn
复制代码 0048B1AB处表内容为:- 0048B14C |> \B0 38 mov al, 38 ; Case 30 ('0') of switch 0048B115
- 0048B14E |. C3 retn
- 0048B14F |> B0 36 mov al, 36 ; Case 31 ('1') of switch 0048B115
- 0048B151 |. C3 retn
- 0048B152 |> B0 34 mov al, 34 ; Case 32 ('2') of switch 0048B115
- 0048B154 |. C3 retn
- 0048B155 |> B0 30 mov al, 30 ; Case 33 ('3') of switch 0048B115
- 0048B157 |. C3 retn
- 0048B158 |> B0 35 mov al, 35 ; Case 34 ('4') of switch 0048B115
- 0048B15A |. C3 retn
- 0048B15B |> B0 32 mov al, 32 ; Case 35 ('5') of switch 0048B115
- 0048B15D |. C3 retn
- 0048B15E |> B0 39 mov al, 39 ; Case 36 ('6') of switch 0048B115
- 0048B160 |. C3 retn
- 0048B161 |> B0 31 mov al, 31 ; Case 37 ('7') of switch 0048B115
- 0048B163 |. C3 retn
- 0048B164 |> B0 33 mov al, 33 ; Case 38 ('8') of switch 0048B115
- 0048B166 |. C3 retn
- 0048B167 |> B0 37 mov al, 37 ; Case 39 ('9') of switch 0048B115
- 0048B169 |. C3 retn
复制代码 --------------------------------------------------------------------------------
【算法总结】
注册码12位,前4位任意。
5-8位根据以下规则转换成另一个数字:
0 → 8
1 → 6
2 → 4
3 → 0
4 → 5
5 → 2
6 → 9
7 → 1
8 → 3
9 → 7
转换后的5-8位分别依次与9-12位比较,均相等则注册成功(例如:123456782913)。注册码保存到C:\WINDOWS\system32
\SuperCopy.ini
算号器源码(VB Code):
Private Sub Command1_Click()
Randomize
X1 = Int(Rnd * 90000000) + 10000000
Text1.Text = X1
For i = 5 To 8
temp = Mid(Text1.Text, i, 1)
Select Case temp
Case 0
sn = sn & 8
Case 1
sn = sn & 6
Case 2
sn = sn & 4
Case 3
sn = sn & 0
Case 4
sn = sn & 5
Case 5
sn = sn & 2
Case 6
sn = sn & 9
Case 7
sn = sn & 1
Case 8
sn = sn & 3
Case 9
sn = sn & 7
End Select
Next
Text1.Text = X1 & sn
End Sub
VB6.0精简版测试通过~~~~~~~
--------------------------------------------------------------------------------
【版权声明】: 本文 蚊香 原创, 转载请注明作者并保持文章的完整, 谢谢!
2008年08月06日 上午 10:12:22 |
-
-
KG.rar
3.24 KB, 下载次数: 2, 下载积分: 飘云币 -2 枚
评分
-
查看全部评分
|