- UID
- 54196
注册时间2008-7-2
阅读权限95
最后登录1970-1-1
超级版主
TA的每日心情 | 开心 2019-2-26 11:14 |
---|
签到天数: 459 天 [LV.9]以坛为家II
|
感谢PYG,本文主要目的是学习使用PYG专用算法注册机生成器,让菜鸟也可以写注册机,
工具在此:
[20130925更新]PYG专用算法注册机生成器 ver 1.0.0.7
https://www.chinapyg.com/thread-70039-1-1.html
官方教学视频在此:
PYG专用算法注册机生成器配套教程-第一讲
https://www.chinapyg.com/thread-72385-1-1.html
PYG专用算法注册机生成器配套教程-第二讲
https://www.chinapyg.com/thread-72386-1-1.html
目标程序:PC AutoShutdown 5.9.0.0
注册文件保存位置:
C:\Documents and Settings\All Users\Application Data\PC Auto Shutdown\AutoShutdown.ini
Username=1
code=LdfPAS&23FC82
注册码分段验证
OD载入目标程序,找到注册按钮事件处,下断,输入用户名和假码,断在下面的位置
- 004AC298 . 55 PUSH EBP ; 注册
- 004AC299 . 8BEC MOV EBP, ESP
- 004AC29B . B9 10000000 MOV ECX, 0x10
- 004AC2A0 > 6A 00 PUSH 0x0
- 004AC2A2 . 6A 00 PUSH 0x0
复制代码 下面是MD5了一个注册码,与一个内置的MD5比较(不知知道是不是通用注册码)
- 004AC358 . E8 BF7DFFFF CALL 004A411C ; AutoShut.004A411C
- 004AC35D . 8B45 C4 MOV EAX, DWORD PTR SS:[EBP-0x3C] ; 假码md5--->eax
- 004AC360 . BA A0C84A00 MOV EDX, 0x4AC8A0 ; FAB282623843E2327403D39E252AE27B
- 004AC365 . E8 AA86F5FF CALL 00404A14 ; AutoShut.00404A14
- 004AC36A . 0F85 BE010000 JNZ 004AC52E ; AutoShut.004AC52E
复制代码 如果CALL往里面走就会看到MD5的计算过程
- 004A35F0 . 20 4D 44 35 2>ASCII " MD5 Message-Dig"
- 004A3600 . 65 73 74 20 2>ASCII "est (c) 97-98 F."
- 004A3610 . 20 50 69 65 7>ASCII " Piette V1.02 ",0
- 004A361F 00 DB 00
- 004A3620 /$ 53 PUSH EBX
- 004A3621 |. 8BD8 MOV EBX, EAX
- 004A3623 |. 8BC3 MOV EAX, EBX
- 004A3625 |. 33C9 XOR ECX, ECX
- 004A3627 |. BA 58000000 MOV EDX, 0x58
- 004A362C |. E8 87FAF5FF CALL 004030B8 ; AutoShut.004030B8
- 004A3631 |. C703 01234567 MOV DWORD PTR DS:[EBX], 0x67452301 //MD5标志性数字
- 004A3637 |. C743 04 89ABC>MOV DWORD PTR DS:[EBX+0x4], 0xEFCDAB89
- 004A363E |. C743 08 FEDCB>MOV DWORD PTR DS:[EBX+0x8], 0x98BADCFE
- 004A3645 |. C743 0C 76543>MOV DWORD PTR DS:[EBX+0xC], 0x10325476
- 004A364C |. 5B POP EBX
- 004A4070 /$ 55 PUSH EBP //这是计算过程
复制代码 注册码是分段验证的
第一段为固定字符LdfPAS&
- 004AC531 . 50 PUSH EAX ; 取字符串的中指定字符的函数
- 004AC532 . B9 07000000 MOV ECX, 0x7 ; 取的长度
- 004AC537 . BA 01000000 MOV EDX, 0x1 ; 第一位开始
- 004AC53C . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-0xC]
- 004AC53F . E8 E485F5FF CALL 00404B28 ; AutoShut.00404B28
复制代码- 004AC54F . 8B45 AC MOV EAX, DWORD PTR SS:[EBP-0x54] ; 前7位的验证
- 004AC552 . BA E0C94A00 MOV EDX, 0x4AC9E0 ; MD5(LdfPAS&)=749FE87A625A53C7EA205BD929931D57
- 004AC557 . E8 B884F5FF CALL 00404A14 ; AutoShut.00404A14
- 004AC55C . 0F85 D7020000 JNZ 004AC839 ; AutoShut.004AC839
复制代码 第8、9位的验证
- 004AC571 . B9 02000000 MOV ECX, 0x2 ; 取字符的长度
- 004AC576 . BA 08000000 MOV EDX, 0x8 ; 第8位开始
- 004AC57B . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-0xC]
- 004AC57E . E8 A585F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC583 . 8B45 A8 MOV EAX, DWORD PTR SS:[EBP-0x58]
- 004AC586 . 50 PUSH EAX
- 004AC587 . 8D45 A4 LEA EAX, DWORD PTR SS:[EBP-0x5C]
- 004AC58A . 50 PUSH EAX
- 004AC58B . B9 02000000 MOV ECX, 0x2 ; 取用户名MD5后的字符串中第D位开始的两个字符
- 004AC590 . BA 0D000000 MOV EDX, 0xD
- 004AC595 . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-0x10]
- 004AC598 . E8 8B85F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC59D . 8B55 A4 MOV EDX, DWORD PTR SS:[EBP-0x5C]
- 004AC5A0 . 58 POP EAX
- 004AC5A1 . E8 6E84F5FF CALL 00404A14 ; 验证
- 004AC5A6 . 0F85 8D020000 JNZ 004AC839 ; AutoShut.004AC839
复制代码 第10、11、12位的验证
- 004AC571 . B9 02000000 MOV ECX, 0x2 ; 取字符的长度
- 004AC576 . BA 08000000 MOV EDX, 0x8 ; 第8位开始
- 004AC57B . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-0xC]
- 004AC57E . E8 A585F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC583 . 8B45 A8 MOV EAX, DWORD PTR SS:[EBP-0x58]
- 004AC586 . 50 PUSH EAX
- 004AC587 . 8D45 A4 LEA EAX, DWORD PTR SS:[EBP-0x5C]
- 004AC58A . 50 PUSH EAX
- 004AC58B . B9 02000000 MOV ECX, 0x2 ; 取用户名MD5后的字符串中第D位开始的两个字符
- 004AC590 . BA 0D000000 MOV EDX, 0xD
- 004AC595 . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-0x10]
- 004AC598 . E8 8B85F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC59D . 8B55 A4 MOV EDX, DWORD PTR SS:[EBP-0x5C]
- 004AC5A0 . 58 POP EAX
- 004AC5A1 . E8 6E84F5FF CALL 00404A14 ; 验证
- 004AC5A6 . 0F85 8D020000 JNZ 004AC839 ; AutoShut.004AC839
- 第10、11、12位的验证
- 004AC5B0 . B9 0B000000 MOV ECX, 0xB ; 取字符长度
- 004AC5B5 . BA 11000000 MOV EDX, 0x11 ; 开始位置
- 004AC5BA . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-0x10]
- 004AC5BD . E8 6685F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC5C2 . 8B45 9C MOV EAX, DWORD PTR SS:[EBP-0x64]
- 004AC5C5 . 8D55 A0 LEA EDX, DWORD PTR SS:[EBP-0x60]
- 004AC5C8 . E8 4F7BFFFF CALL 004A411C ; 对取得的字符MD5一下
- 004AC5CD . 8B55 A0 MOV EDX, DWORD PTR SS:[EBP-0x60]
- 004AC5D0 . 8D45 F0 LEA EAX, DWORD PTR SS:[EBP-0x10]
- 004AC5D3 . E8 C880F5FF CALL 004046A0 ; AutoShut.004046A0
- 004AC5D8 . 8D45 98 LEA EAX, DWORD PTR SS:[EBP-0x68]
- 004AC5DB . 50 PUSH EAX
- 004AC5DC . B9 03000000 MOV ECX, 0x3 ; 长度
- 004AC5E1 . BA 0A000000 MOV EDX, 0xA ; 假码中开始位置
- 004AC5E6 . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-0xC]
- 004AC5E9 . E8 3A85F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC5EE . 8B45 98 MOV EAX, DWORD PTR SS:[EBP-0x68]
- 004AC5F1 . 50 PUSH EAX
- 004AC5F2 . 8D45 94 LEA EAX, DWORD PTR SS:[EBP-0x6C]
- 004AC5F5 . 50 PUSH EAX
- 004AC5F6 . B9 03000000 MOV ECX, 0x3
- 004AC5FB . BA 14000000 MOV EDX, 0x14
- 004AC600 . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-0x10]
- 004AC603 . E8 2085F5FF CALL 00404B28 ; AutoShut.00404B28
- 004AC608 . 8B55 94 MOV EDX, DWORD PTR SS:[EBP-0x6C]
- 004AC60B . 58 POP EAX
- 004AC60C . E8 0384F5FF CALL 00404A14 ; 验证
- 004AC611 . 0F85 22020000 JNZ 004AC839
复制代码
算法总结如下:
假定函数strA(B,C)---->从字符串strA中取字符 开始位置B 大小为C
(涉及到的字母全为大写)
1.用户名的MD5=strA
2.strA(0x11,0xB)=strB
3.MD5(strB)=strC
注册码="LdfPAS&"+strA(0xD,2)+strC(0x14,3)
|
|