本帖最后由 Blackk 于 2011-4-16 12:23 编辑
在网上淘到的一个KenGenMe,
作者的要求:
NO patching , just write a keygen
废话不多说,找到算法验证口: 004BFC80 /. 55 push ebp
004BFC81 |. 8BEC mov ebp, esp
004BFC83 |. B9 05000000 mov ecx, 5
004BFC88 |> 6A 00 /push 0
004BFC8A |. 6A 00 |push 0
004BFC8C |. 49 |dec ecx
//Random ID,输入Licens和Licens2004BFCB0 |. E8 333BFBFF call 004737E8 ; 取Licens
004BFCB5 |. 8D45 EC lea eax, dword ptr [ebp-14]; Licens长度入EAX
004BFCC5 |. E8 1E3BFBFF call 004737E8 ; 取Licens2
004BFCCA |. 8B55 E8 mov edx, dword ptr [ebp-18] ; Licens2长度入EDX
004BFCCE |. E8 3577F4FF call 00407408 ; Licens和Licens2拼接在一起(结婚?)
004BFCD3 |. 837D EC 00 cmp dword ptr [ebp-14], 0 ; 判断是否输入了注册码
//Random ID004BFCFB |. E8 5CC7F5FF call 0041C45C ; 取Random ID的长度
004BFD00 |. A3 E4F24C00 mov dword ptr [4CF2E4], eax ; 存长度
004BFD05 |. 8D55 E4 lea edx, dword ptr [ebp-1C]
004BFD08 |. 8B45 FC mov eax, dword ptr [ebp-4]
004BFD0B |. 8B80 88030000 mov eax, dword ptr [eax+388]
004BFD11 |. E8 D23AFBFF call 004737E8 ; 取Random ID
004BFD16 |. 8B45 E4 mov eax, dword ptr [ebp-1C] ; Random ID放EAX
//Licens2004BFD19 |. E8 3EC7F5FF call 0041C45C ; 将Random ID转为16进制
004BFD1E |. A3 E0F24C00 mov dword ptr [4CF2E0], eax
004BFD23 |. A1 E4F24C00 mov eax, dword ptr [4CF2E4] ;
004BFD28 |. F72D E0F24C00 imul dword ptr [4CF2E0] ; Random ID的16进制 * Random ID的长度=A
004BFD2E |. A3 C8F24C00 mov dword ptr [4CF2C8], eax
004BFD33 |. 8D55 E0 lea edx, dword ptr [ebp-20]
004BFD36 |. A1 C8F24C00 mov eax, dword ptr [4CF2C8]
004BFD3B |. E8 48C5F5FF call 0041C288
004BFD40 |. 8B55 E0 mov edx, dword ptr [ebp-20] ; 将结果A转为10进制
004BFD43 |. B8 CCF24C00 mov eax, 004CF2CC
004BFD48 |. E8 536FF4FF call 00406CA0
004BFD4D |. B8 CCF24C00 mov eax, 004CF2CC
004BFD52 |. B9 05000000 mov ecx, 5
004BFD57 |. BA 01000000 mov edx, 1
004BFD5C |. E8 B778F4FF call 00407618 ; 求模运算
004BFD61 |. BA CCF24C00 mov edx, 004CF2CC
004BFD66 |. B9 01000000 mov ecx, 1
004BFD6B |. B8 04FF4B00 mov eax, 004BFF04 ; UNICODE "1337"
004BFD70 |. E8 0779F4FF call 0040767C ; 字符串拼接结果为Licens2
004BFD75 |. B8 D0F24C00 mov eax, 004CF2D0
004BFD7A |. 8B15 CCF24C00 mov edx, dword ptr [4CF2CC]
//Licens
004BFDA9 |. E8 AEC6F5FF call 0041C45C ; 将Licens2转为16进制数
004BFDAE |. A3 D4F24C00 mov dword ptr [4CF2D4], eax
004BFDB3 |. A1 D4F24C00 mov eax, dword ptr [4CF2D4]
004BFDB8 |. 05 39050000 add eax, 539 ; Licens2 + 539=B
004BFDBD |. A3 D8F24C00 mov dword ptr [4CF2D8], eax
004BFDC2 |. 8D55 DC lea edx, dword ptr [ebp-24]
004BFDC5 |. A1 D8F24C00 mov eax, dword ptr [4CF2D8]
004BFDCA |. E8 B9C4F5FF call 0041C288 ; 将B转为10进制
004BFDCF |. 8B55 DC mov edx, dword ptr [ebp-24]
004BFDD2 |. B8 DCF24C00 mov eax, 004CF2DC
004BFDD7 |. E8 C46EF4FF call 00406CA0
004BFDDC |. BA DCF24C00 mov edx, 004CF2DC
004BFDE1 |. B9 01000000 mov ecx, 1
004BFDE6 |. B8 1CFF4B00 mov eax, 004BFF1C ; UNICODE "Bananenbauer"
004BFDEB |. E8 8C78F4FF call 0040767C ; 字符串拼接为Licens
算法总结:
1.Random ID的16进制 * Random ID的长度=A
2.将A转为10进制
3.Random ID长度 为 7 则:A mod 1000;结果和1337拼接即为Licens2.
为 8 则:A mod 10000;结果和1337拼接即为Licens2.
4.将Licens2(十进制) + 1337(十进制)=B
5.将Bananenbauer和B拼接即为Lincens;
KenGenMe+KeyGen下载:
截图
|