solved new crackme

*更新周期改成2天
This commit is contained in:
Chenx221 2024-10-21 16:31:14 +08:00
parent 62a9a41330
commit 6d8615ace5
Signed by: chenx221
GPG Key ID: D7A9EC07024C3021
11 changed files with 752 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,24 @@
/\_____/\________
/ \ / \ _ \ . . mAsTeR_pOwEr !
/ . \ ___/\
/ . . \ /\_\/
\____\ /____/\/ /
\____\ /\____\/\/
\\/
/\____________________________________________________/\
/ - - ---------------------------------------------- - - \
\ rELEASE : ByteL0rds Crackme_n1 /
| uRL : http://kickme.to/mp2k |
| dATE : 2003-08-28 |
| cRACKER : ByteL0rd / mAsTeR_pOwEr |
/ - - --------------------------------------------- - - \
\_ Created with the release manager (c) by Ghosthunter _/
\ mp2k ____________ design by tkazsh /
\ __________ / \ _____________ /
\/ \ / MP2K \ / \/
\/ . . \/
\_____\ /_____/
\ /
\/

View File

@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"sp_keygen/1.0.0": {
"runtime": {
"sp_keygen.dll": {}
}
}
}
},
"libraries": {
"sp_keygen/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@ -0,0 +1,97 @@
ÜÜÜßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÜÜ
°²ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²°
Þ Þ²ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²
Þ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²
Þ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ ÞÛÛÛÛÝÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Þ ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ ÛÛÛÛÛÝÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÝÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ ÞÛÛÛÛÛÝÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ±
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ ÞÛÛÛÛÛÝ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ Master
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Þ²ÛÛÛÛÝ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ Power
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ²ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛ °²±ÛÛÝ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 2k2
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Û ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛݲÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²°
°Û ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛÛÛÛÛÛÛÛÛݲ²ÛÛÛÛÛÛÛÛÛÛÛÛÛ±ÛÛÛÛÛÛÛÛÛÛÛÛÛ²ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²
²Û ÛÛÛÛÛÛÛÛÛÛÛÛÛ²ÞÛÛÛÛÛÛÛÛÛݱ±ÛÛÛÛÛÛÛÛÛÛÛÛÛ±ÛÛÛÛÛÛÛÛÛÛÛÛ° ÞÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛÛÛÛÛÛÛÛÛ²± °±²ÛÛÛÛÛÛÛÛÛÛÛÛ²ÛÛÛÛÛÛÛÛÛÛÛ²° (km!)ÞÛÛÛÛÝ
²ÛÛÛÛÛÛ²ßßßß °²ÛÛÛÛÛÛÛÛÛÛÛÛÝÛÛÛÛÛÛÛÛÛ²±° ßßßßß
²²ßßß ÜÜÜßßßßßßßßßßßßßßßßÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜßßßßßßßßßßßßßßßßßßßßßß
ßßß±ßßßßß ÞÛÛÛÛÛÝ
° ÛÛÝ ByteL0rds Crackme_n1 ÛÛÛÛÛÛ
ÞÛÛ ÞÛÛÛÛÛÝ
ßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛß
ÜÜÜÜÜ
Ü°²ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²°ÜÜÛÛÛÛÛÛÝ
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°Ý
ÛÛÛÛÛ²° ÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛßßßß²°°ß
ÞÛÛÛÛÜÜÜÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛßßßßßßßßßß²ß
ÞÛÛÛÛßßßßßßßßß
ÞÛ²°Û Cracker: ByteL0rd
ÞÛ° Û
ÞÛ°ÞÛÝ
ÞÛÝÞÛ²
ÞÛÝÞÛ° Release Type:
ÞÛÛ ÛÝ
ÞÛÛ°ÛÝ [ ] Patch [ ] Serial [ ] Regfile
ÛÛÞÛÛ [ ] Loader [ ] Keygen [X] Other
²ÛÞÛÛ
°ÛÛÛÛ URL:
°²ÛÛÛ
²ÛÛÛÜÜ http://kickme.to/mp2k
ßÛÛÛÛÛÛÜÜÜ
ßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜܲ
ÜÜÜÛÛÜÜ ßßßßßßßßßßßßßßßßßßßßßßßßßßß
ÛÛÛÞÛÛß²
ÞÛÛ²ÞÛÝ Release Info:
Þ²ÛÛÛÛÝ Okay,
Þ²ÛÛÛÛÝ this is my first KeyGenMe I've ever written so don't expect to much,
Þ²ÛÛÛÛÝ there is no anti-... or any hidding tricks...Just a few simple arithmetic
Þ²ÛÛÛÛÝ operations so I think just shouldn't have problems to write a keygen
Þ²ÛÛÛÛÝ for it or at least give me a working key!
Þ²ÛÛÛÛÝ Rules: -no patching
Þ²ÛÛÛÛÝ
Þ²ÛÛÛÛÝ If you have suceeded send me your solution with a little explanation to
Þ²ÛÛÛÛÝ bytel0rd@yahoo.de
Þ²ÛÛÛÛÝ
Þ²ÛÛÛÛÝ greetz
Þ²ÛÛÛÛÝ ByteL0rd
Þ²ÛÛÛÛÝ
Þ²ÛÛÛÛÝ verify->
Þ²ÛÛÛÛÝ crackme_1.exe CRC32= 160F620
Þ²ÛÛÛÛÝ
°²ÛÛÛÛ
ß²ÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
ÜÜ ßßßßßßßßßßßßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜ
ÜÛÛÛÛÛÜÜÜÜ
ÞÛÛÛÛÛÛßß
ÞÛ² ÛÛÝ Contact:
ÞÛÝ°ÛÛÝ WWW -> http://zor.org/mp2k/
ÞÛÛ ÛÛÝ Mirror -> http://mp2k.da.ru/
ÞÛÛ ÛÛÝ
ÞÛÛÝÛÛÝ E-Mail -> mp2k@mail.ru
ÞÛÛÝÛÛÝ
Þ²ÛÛÛÛÝ Don't request cracks via E-Mail or your Mail will be deleted!
Þ°±ÛÛÛÝ Use the Request Function on our website instead.
Þ°ÛÛÛÛÜÜÜÜÜ
°²ÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜ
ÛÜ ßßßßßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²²ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
ÞÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜ
ÞÛÛ² ÛÛÛÛÛßß
ÞÛÛ°ÞÛÝ
ÞÛÛ ÛÛ Apply:
ÞÛÛÝÛÛ We are looking for Crackers, Coders and Suppliers
Þ²ÛÝÛÛ Please visit our website for more information.
°²ÛÛÛÝ
ßÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜ
ÜÛ ßßßßßßßßßßßßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛܲ±ÜÜÜÜÜÜÜ
ÞÛÛÛÛÛÛÛÜÜÜÜÜÜ ßßßßßßßßßßßßßßßßÜÜÜÜÜÜÜÜÜÜ
ÞÛÛ °ÛÛÛÛßßßß
ÞÛÛÛ ÛÛÛÝ NFO Created by Kami 8/28/02
Þ²ÛÛÝßÛÛÝ Last Updated by Ghosthunter 10/08/02
Þ°²ÛÛÛÞÛ Released with: RM 1.051 (c) by Ghosthunter
°°²ÛÛÛÛÛÜÜÜÜÜÜÜÜ
ßßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

View File

@ -0,0 +1,338 @@
先来通过的凭证:
```
Name: chenx221
RegKey: 123-456-789-X
Serial: 11141
```
细节:
检查长度然后带着name, regkey,serial进`crackme_1.403790`
```assembly
00403B2 | 6A 14 | push 14 |
00403B2 | 8D85 F3FBFFFF | lea eax,dword ptr ss:[ebp-40D] | name
00403B3 | 50 | push eax |
00403B3 | 6A 05 | push 5 |
00403B3 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00403B3 | 50 | push eax |
00403B3 | E8 0DFBFFFF | call <JMP.&_GetDlgItemTextA@16> |
00403B3 | 8D45 F8 | lea eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
00403B4 | 8D95 F3FBFFFF | lea edx,dword ptr ss:[ebp-40D] |
00403B4 | E8 FFF4FFFF | call crackme_1.40304C |
00403B4 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:Name
00403B5 | E8 3FF5FFFF | call <crackme_1.GetLength> |
00403B5 | 83F8 05 | cmp eax,5 |
00403B5 | 0F8C 91000000 | jl <crackme_1.Fail> | length >= 5
00403B5 | 6A 14 | push 14 |
00403B6 | 8D85 F3FBFFFF | lea eax,dword ptr ss:[ebp-40D] |
00403B6 | 50 | push eax |
00403B6 | 6A 06 | push 6 |
00403B6 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00403B6 | 50 | push eax |
00403B6 | E8 DAFAFFFF | call <JMP.&_GetDlgItemTextA@16> |
00403B7 | 8D45 F4 | lea eax,dword ptr ss:[ebp-C] | [ebp-0C]:"11141"
00403B7 | 8D95 F3FBFFFF | lea edx,dword ptr ss:[ebp-40D] |
00403B7 | E8 CCF4FFFF | call crackme_1.40304C |
00403B8 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | RegKey
00403B8 | E8 0CF5FFFF | call <crackme_1.GetLength> |
00403B8 | 83F8 0D | cmp eax,D | length == 13
00403B8 | 75 62 | jne <crackme_1.Fail> |
00403B8 | 6A 14 | push 14 |
00403B8 | 8D85 F3FBFFFF | lea eax,dword ptr ss:[ebp-40D] |
00403B9 | 50 | push eax |
00403B9 | 6A 07 | push 7 |
00403B9 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00403B9 | 50 | push eax |
00403B9 | E8 ABFAFFFF | call <JMP.&_GetDlgItemTextA@16> |
00403BA | 8D45 FC | lea eax,dword ptr ss:[ebp-4] | [ebp-04]:"chenx221"
00403BA | 8D95 F3FBFFFF | lea edx,dword ptr ss:[ebp-40D] |
00403BA | E8 9DF4FFFF | call crackme_1.40304C |
00403BA | 8B45 FC | mov eax,dword ptr ss:[ebp-4] | Serial
00403BB | E8 DDF4FFFF | call <crackme_1.GetLength> |
00403BB | 83F8 05 | cmp eax,5 | length == 5
00403BB | 75 33 | jne <crackme_1.Fail> |
00403BB | 8B4D FC | mov ecx,dword ptr ss:[ebp-4] | S
00403BB | 8B55 F4 | mov edx,dword ptr ss:[ebp-C] | R
00403BC | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | N
00403BC | E8 C6FBFFFF | call crackme_1.403790 |
```
name字符ascii求和然后统计1的个数
```assembly
0040379 | 55 | push ebp |
0040379 | 8BEC | mov ebp,esp |
0040379 | 83C4 E8 | add esp,FFFFFFE8 |
0040379 | 53 | push ebx |
0040379 | 56 | push esi |
0040379 | 57 | push edi | edi:&"1010101011"
0040379 | 33DB | xor ebx,ebx |
0040379 | 895D E8 | mov dword ptr ss:[ebp-18],ebx | [ebp-18]:"1010101011"
0040379 | 895D EC | mov dword ptr ss:[ebp-14],ebx |
004037A | 895D F0 | mov dword ptr ss:[ebp-10],ebx | [ebp-10]:"122xnehc"
004037A | 894D F4 | mov dword ptr ss:[ebp-C],ecx | S
004037A | 8955 F8 | mov dword ptr ss:[ebp-8],edx | R
004037A | 8945 FC | mov dword ptr ss:[ebp-4],eax | N
004037A | 8B45 FC | mov eax,dword ptr ss:[ebp-4] | Name
004037B | E8 9FF9FFFF | call <crackme_1.LStrAddRef> |
004037B | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | RegKey
004037B | E8 97F9FFFF | call <crackme_1.LStrAddRef> |
004037B | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | Serial
004037C | E8 8FF9FFFF | call <crackme_1.LStrAddRef> |
004037C | BF 68564000 | mov edi,crackme_1.405668 | edi:&"1010101011", 405668:&"1010101011"
004037C | 33C0 | xor eax,eax |
004037C | 55 | push ebp |
004037C | 68 8D3A4000 | push crackme_1.403A8D |
004037D | 64:FF30 | push dword ptr fs:[eax] |
004037D | 64:8920 | mov dword ptr fs:[eax],esp |
004037D | C705 88564000 040000 | mov dword ptr ds:[405688],4 |
004037E | 33C0 | xor eax,eax |
004037E | A3 6C564000 | mov dword ptr ds:[40566C],eax |
004037E | 8BC7 | mov eax,edi | edi:&"1010101011"
004037E | E8 58F7FFFF | call <crackme_1.LStrClr> |
004037F | 8D45 F0 | lea eax,dword ptr ss:[ebp-10] | [ebp-10]:"122xnehc"
004037F | E8 50F7FFFF | call <crackme_1.LStrClr> |
004037F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] | [ebp-04]:"chenx221"
004037F | E8 94F8FFFF | call <crackme_1.GetLength> |
0040380 | 8BF0 | mov esi,eax |
0040380 | 85F6 | test esi,esi |
0040380 | 7E 26 | jle crackme_1.40382C |
0040380 | BB 01000000 | mov ebx,1 |
0040380 | 8D45 EC | lea eax,dword ptr ss:[ebp-14] |
0040380 | 8B55 FC | mov edx,dword ptr ss:[ebp-4] | [ebp-04]:"chenx221"
0040381 | 8A541A FF | mov dl,byte ptr ds:[edx+ebx-1] |
0040381 | E8 22F8FFFF | call crackme_1.40303C |
0040381 | 8B55 EC | mov edx,dword ptr ss:[ebp-14] |
0040381 | 8D45 F0 | lea eax,dword ptr ss:[ebp-10] | [ebp-10]:"122xnehc"
0040382 | 8B4D F0 | mov ecx,dword ptr ss:[ebp-10] | [ebp-10]:"122xnehc"
0040382 | E8 B8F8FFFF | call <crackme_1.LStrCat3> |
0040382 | 43 | inc ebx |
0040382 | 4E | dec esi |
0040382 | 75 DF | jne crackme_1.40380B |
0040382 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] | [ebp-10]:翻转Name
0040382 | E8 60F8FFFF | call <crackme_1.GetLength> |
0040383 | 8BF0 | mov esi,eax |
0040383 | 85F6 | test esi,esi |
0040383 | 7E 17 | jle crackme_1.403851 |
0040383 | BB 01000000 | mov ebx,1 |
0040383 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] | [ebp-10]:"122xnehc"
0040384 | 0FB64418 FF | movzx eax,byte ptr ds:[eax+ebx-1] |
0040384 | 0105 6C564000 | add dword ptr ds:[40566C],eax |
0040384 | 43 | inc ebx |
0040384 | 4E | dec esi |
0040384 | 75 EE | jne crackme_1.40383F |
0040385 | 8D55 E8 | lea edx,dword ptr ss:[ebp-18] | [ebp-18]:"1010101011"
0040385 | A1 6C564000 | mov eax,dword ptr ds:[40566C] | 累加ascii
0040385 | E8 7AFEFFFF | call <crackme_1.Hex2Bin> |
0040385 | 8B55 E8 | mov edx,dword ptr ss:[ebp-18] | 累加结果的二进制(不用不足位数
0040386 | 8BC7 | mov eax,edi | edi:&"1010101011"
0040386 | E8 34F7FFFF | call <crackme_1.LStrAsg> |
0040386 | 33C0 | xor eax,eax |
0040386 | A3 6C564000 | mov dword ptr ds:[40566C],eax |
0040386 | 8B07 | mov eax,dword ptr ds:[edi] | [edi]:"1010101011"
0040387 | E8 1EF8FFFF | call <crackme_1.GetLength> | 获取二进制长度
0040387 | 8BF0 | mov esi,eax |
0040387 | 85F6 | test esi,esi |
0040387 | 7E 18 | jle crackme_1.403894 | 统计二进制1的个数
0040387 | BB 01000000 | mov ebx,1 |
0040388 | 8B07 | mov eax,dword ptr ds:[edi] | [edi]:"1010101011"
0040388 | 807C18 FF 31 | cmp byte ptr ds:[eax+ebx-1],31 | 31:'1'
0040388 | 75 06 | jne crackme_1.403890 |
0040388 | FF05 6C564000 | inc dword ptr ds:[40566C] |
0040389 | 43 | inc ebx |
0040389 | 4E | dec esi |
0040389 | 75 ED | jne crackme_1.403881 |
0040389 | 33C0 | xor eax,eax |
```
regkey检查格式并求一个值
```c#
for (int i = 0; i < RegKey.Length; i++)
{
if (i == 3 || i == 7 || i == 11)
continue; //这几个位置检查'-'
else if (i == 12)
{
regSum += RegKey[i] % 2;
continue;
}
int n = int.Parse(RegKey[i].ToString());
if (i < 3)
regSum += n * (0xB - (i + 1));
else if (i < 7)
regSum += n * (0xC - (i + 1));
else if (i < 11)
regSum += n * (0xD - (i + 1));
}
```
```assembly
0040389 | A3 70564000 | mov dword ptr ds:[405670],eax |
0040389 | BB 01000000 | mov ebx,1 |
004038A | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | RegKey
004038A | 8A5418 FF | mov dl,byte ptr ds:[eax+ebx-1] |
004038A | 8BC2 | mov eax,edx |
004038A | 3C 31 | cmp al,31 | <"1"
004038A | 0F82 C1010000 | jb <crackme_1.Fail2> |
004038B | 3C 39 | cmp al,39 | >"9"
004038B | 0F87 B9010000 | ja <crackme_1.Fail2> |
004038B | 33C0 | xor eax,eax |
004038B | 8AC2 | mov al,dl |
004038B | 83E8 30 | sub eax,30 | "数"2数
004038C | BA 0B000000 | mov edx,B | 0B:'\v'
004038C | 2BD3 | sub edx,ebx |
004038C | F7EA | imul edx |
004038C | 0105 70564000 | add dword ptr ds:[405670],eax |
004038C | 43 | inc ebx |
004038D | 83FB 04 | cmp ebx,4 |
004038D | 75 CB | jne crackme_1.4038A0 |
004038D | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
004038D | 8078 03 2D | cmp byte ptr ds:[eax+3],2D | 第四位需要-
004038D | 0F85 90010000 | jne <crackme_1.Fail2> |
004038E | BB 05000000 | mov ebx,5 |
004038E | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
004038E | 8A4418 FF | mov al,byte ptr ds:[eax+ebx-1] |
004038E | 8BD0 | mov edx,eax |
004038F | 80FA 31 | cmp dl,31 | 31:'1'
004038F | 0F82 79010000 | jb <crackme_1.Fail2> |
004038F | 80FA 39 | cmp dl,39 | 39:'9'
004038F | 0F87 70010000 | ja <crackme_1.Fail2> |
0040390 | 25 FF000000 | and eax,FF |
0040390 | 83E8 30 | sub eax,30 |
0040390 | BA 0C000000 | mov edx,C | 0C:'\f'
0040390 | 2BD3 | sub edx,ebx |
0040391 | F7EA | imul edx |
0040391 | 0105 70564000 | add dword ptr ds:[405670],eax |
0040391 | 43 | inc ebx |
0040391 | 83FB 08 | cmp ebx,8 |
0040391 | 75 C8 | jne crackme_1.4038E7 |
0040391 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
0040392 | 8078 07 2D | cmp byte ptr ds:[eax+7],2D | 第八位-
0040392 | 0F85 46010000 | jne <crackme_1.Fail2> |
0040392 | BB 09000000 | mov ebx,9 | 09:'\t'
0040393 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
0040393 | 8A4418 FF | mov al,byte ptr ds:[eax+ebx-1] |
0040393 | 8BD0 | mov edx,eax |
0040393 | 80FA 31 | cmp dl,31 | 31:'1'
0040393 | 0F82 2F010000 | jb <crackme_1.Fail2> |
0040394 | 80FA 39 | cmp dl,39 | 39:'9'
0040394 | 0F87 26010000 | ja <crackme_1.Fail2> |
0040394 | 25 FF000000 | and eax,FF |
0040395 | 83E8 30 | sub eax,30 |
0040395 | BA 0D000000 | mov edx,D | 0D:'\r'
0040395 | 2BD3 | sub edx,ebx |
0040395 | F7EA | imul edx |
0040395 | 0105 70564000 | add dword ptr ds:[405670],eax |
0040396 | 43 | inc ebx |
0040396 | 83FB 0C | cmp ebx,C | 0C:'\f'
0040396 | 75 C8 | jne crackme_1.403931 |
0040396 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
0040396 | 8078 0B 2D | cmp byte ptr ds:[eax+B],2D | 第十二位-
0040397 | 0F85 FC000000 | jne <crackme_1.Fail2> |
0040397 | 8B45 F8 | mov eax,dword ptr ss:[ebp-8] | [ebp-08]:"123-456-789-X"
0040397 | 8A50 0C | mov dl,byte ptr ds:[eax+C] |
0040397 | 8BC2 | mov eax,edx |
0040397 | 3C 41 | cmp al,41 | 41:'A'
0040398 | 0F82 EC000000 | jb <crackme_1.Fail2> |
0040398 | 3C 5A | cmp al,5A | 5A:'Z'
0040398 | 0F87 E4000000 | ja <crackme_1.Fail2> |
0040398 | 33C0 | xor eax,eax |
0040399 | 8AC2 | mov al,dl |
0040399 | 83E0 01 | and eax,1 |
0040399 | 0105 70564000 | add dword ptr ds:[405670],eax |
```
计算前面的值^二进制1的个数 (v1)
```assembly
0040399 | 33C0 | xor eax,eax |
0040399 | 8905 7C564000 | mov dword ptr ds:[40567C],eax |
004039A | C705 80564000 000000 | mov dword ptr ds:[405680],80000000 |
004039A | 66:C705 84564000 FF3 | mov word ptr ds:[405684],3FFF | 00405684:"-@"
004039B | 8B35 6C564000 | mov esi,dword ptr ds:[40566C] | 二进制中1的个数
004039B | 85F6 | test esi,esi |
004039B | 7E 18 | jle crackme_1.4039D8 |
004039C | DB05 70564000 | fild dword ptr ds:[405670] | 前面的结果^1的个数
004039C | DB2D 7C564000 | fld tword ptr ds:[40567C] |
004039C | DEC9 | fmulp st(1),st(0) |
004039C | DB3D 7C564000 | fstp tword ptr ds:[40567C] |
004039D | 9B | fwait |
004039D | 4E | dec esi |
004039D | 75 E8 | jne crackme_1.4039C0 |
```
Serial字符串转数值
```assembly
004039D | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | Serial
004039D | E8 B4F6FFFF | call <crackme_1.GetLength> |
004039E | 8BF0 | mov esi,eax |
004039E | 85F6 | test esi,esi |
004039E | 7E 18 | jle crackme_1.4039FE |
004039E | BB 01000000 | mov ebx,1 |
004039E | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | 检查Serial是否都是数
004039E | 8A4418 FF | mov al,byte ptr ds:[eax+ebx-1] |
004039F | 3C 31 | cmp al,31 | 31:'1'
004039F | 72 7C | jb <crackme_1.Fail2> |
004039F | 3C 39 | cmp al,39 | 39:'9'
004039F | 77 78 | ja <crackme_1.Fail2> |
004039F | 43 | inc ebx |
004039F | 4E | dec esi |
004039F | 75 ED | jne crackme_1.4039EB |
004039F | 33C0 | xor eax,eax |
00403A0 | A3 74564000 | mov dword ptr ds:[405674],eax |
00403A0 | C705 78564000 010000 | mov dword ptr ds:[405678],1 |
00403A0 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | [ebp-0C]:"11141"
00403A1 | E8 7DF6FFFF | call <crackme_1.GetLength> |
00403A1 | 8BF0 | mov esi,eax |
00403A1 | 4E | dec esi |
00403A1 | 85F6 | test esi,esi |
00403A1 | 7C 37 | jl crackme_1.403A55 | 字符串转数
00403A1 | 46 | inc esi |
00403A1 | 33DB | xor ebx,ebx |
00403A2 | 8B45 F4 | mov eax,dword ptr ss:[ebp-C] | [ebp-0C]:"11141"
00403A2 | E8 6BF6FFFF | call <crackme_1.GetLength> |
00403A2 | 2BC3 | sub eax,ebx |
00403A2 | 8B55 F4 | mov edx,dword ptr ss:[ebp-C] | [ebp-0C]:"11141"
00403A2 | 0FB64402 FF | movzx eax,byte ptr ds:[edx+eax-1] | 从最后一位开始
00403A3 | 83E8 30 | sub eax,30 | -0 字符转数
00403A3 | F72D 78564000 | imul dword ptr ds:[405678] |
00403A3 | 0105 74564000 | add dword ptr ds:[405674],eax |
00403A4 | A1 78564000 | mov eax,dword ptr ds:[405678] |
00403A4 | 03C0 | add eax,eax | *2
00403A4 | 8D0480 | lea eax,dword ptr ds:[eax+eax*4] | *5
00403A4 | A3 78564000 | mov dword ptr ds:[405678],eax |
00403A5 | 43 | inc ebx |
00403A5 | 4E | dec esi |
00403A5 | 75 CC | jne crackme_1.403A21 |
```
前面的前面 算的v1 % 上面序列号数值
```assembly
00403A5 | 99 | cdq |
00403A5 | 52 | push edx |
00403A5 | 50 | push eax |
00403A5 | DB2D 7C564000 | fld tword ptr ds:[40567C] |
00403A6 | E8 14EBFFFF | call crackme_1.40257C |
00403A6 | E8 63F7FFFF | call crackme_1.4031D0 | 之前算的^结果 % 上面的结果
00403A6 | A3 88564000 | mov dword ptr ds:[405688],eax |
```
检查模数是否是素数,是的就成功了
```
00403BC | A1 88564000 | mov eax,dword ptr ds:[405688] |
00403BC | E8 80FBFFFF | call crackme_1.403754 | 判断素数
00403BD | 3C 01 | cmp al,1 |
00403BD | 75 17 | jne <crackme_1.Fail> |
00403BD | 6A 40 | push 40 | Success
00403BD | 68 4C3C4000 | push crackme_1.403C4C | 403C4C:"Succeed!"
00403BD | 68 583C4000 | push crackme_1.403C58 | 403C58:"Great you got a working Serial and key,now write a keygen and send it to me!"
00403BE | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
00403BE | 50 | push eax |
00403BE | E8 67FAFFFF | call <JMP.&_MessageBoxA@16> |
```

View File

@ -0,0 +1,163 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35303.130
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "keygen1", "keygen1\keygen1.csproj", "{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "keygen2", "keygen2\keygen2.csproj", "{2446CB50-1882-4219-9DB0-E7F5517E6E20}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "keygen3", "keygen3\keygen3.csproj", "{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GiveMeSerial", "GiveMeSerial\GiveMeSerial.vcxproj", "{E3604156-7DF2-4B5F-AECA-64786B92F38C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DllInjector", "DllInjector\DllInjector.csproj", "{A5A24406-1296-457B-91A3-60E67511D807}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GetSerial", "GetSerial\GetSerial.vcxproj", "{85044A5C-C4A3-4C79-9AD5-6895F61F8515}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GuessSerial", "GuessSerial\GuessSerial.csproj", "{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Validator", "Validator\Validator.csproj", "{6BE1ED72-6CA9-4442-B529-C867A9D6904C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FindKey", "FindKey\FindKey.csproj", "{D5E3C871-EA87-48E7-9287-E96B8410EB18}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sp_keygen", "sp_keygen\sp_keygen.csproj", "{D6614743-D01E-4899-A5E7-B4E45BD1B033}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|x64.ActiveCfg = Debug|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|x64.Build.0 = Debug|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|x86.ActiveCfg = Debug|x86
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Debug|x86.Build.0 = Debug|x86
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|Any CPU.Build.0 = Release|Any CPU
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|x64.ActiveCfg = Release|x64
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|x64.Build.0 = Release|x64
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|x86.ActiveCfg = Release|x86
{D0E162E3-FC99-4405-BEE1-AB85D9D41DA9}.Release|x86.Build.0 = Release|x86
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|x64.ActiveCfg = Debug|x64
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|x64.Build.0 = Debug|x64
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|x86.ActiveCfg = Debug|x86
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|x86.Build.0 = Debug|x86
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|Any CPU.Build.0 = Release|Any CPU
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|x64.ActiveCfg = Release|x64
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|x64.Build.0 = Release|x64
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|x86.ActiveCfg = Release|x86
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Release|x86.Build.0 = Release|x86
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|x64.ActiveCfg = Debug|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|x64.Build.0 = Debug|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|x86.ActiveCfg = Debug|x86
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Debug|x86.Build.0 = Debug|x86
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|Any CPU.Build.0 = Release|Any CPU
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|x64.ActiveCfg = Release|x64
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|x64.Build.0 = Release|x64
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|x86.ActiveCfg = Release|x86
{BC47A6DE-7F9D-4D65-A996-69FB778C95F3}.Release|x86.Build.0 = Release|x86
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|Any CPU.ActiveCfg = Debug|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|Any CPU.Build.0 = Debug|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|x64.ActiveCfg = Debug|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|x64.Build.0 = Debug|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|x86.ActiveCfg = Debug|Win32
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Debug|x86.Build.0 = Debug|Win32
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|Any CPU.ActiveCfg = Release|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|Any CPU.Build.0 = Release|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|x64.ActiveCfg = Release|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|x64.Build.0 = Release|x64
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|x86.ActiveCfg = Release|Win32
{E3604156-7DF2-4B5F-AECA-64786B92F38C}.Release|x86.Build.0 = Release|Win32
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|x64.ActiveCfg = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|x64.Build.0 = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|x86.ActiveCfg = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Debug|x86.Build.0 = Debug|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Release|Any CPU.Build.0 = Release|Any CPU
{A5A24406-1296-457B-91A3-60E67511D807}.Release|x64.ActiveCfg = Release|x64
{A5A24406-1296-457B-91A3-60E67511D807}.Release|x64.Build.0 = Release|x64
{A5A24406-1296-457B-91A3-60E67511D807}.Release|x86.ActiveCfg = Release|x86
{A5A24406-1296-457B-91A3-60E67511D807}.Release|x86.Build.0 = Release|x86
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|Any CPU.ActiveCfg = Debug|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|Any CPU.Build.0 = Debug|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|x64.ActiveCfg = Debug|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|x64.Build.0 = Debug|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|x86.ActiveCfg = Debug|Win32
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Debug|x86.Build.0 = Debug|Win32
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|Any CPU.ActiveCfg = Release|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|Any CPU.Build.0 = Release|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|x64.ActiveCfg = Release|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|x64.Build.0 = Release|x64
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|x86.ActiveCfg = Release|Win32
{85044A5C-C4A3-4C79-9AD5-6895F61F8515}.Release|x86.Build.0 = Release|Win32
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|x64.ActiveCfg = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|x64.Build.0 = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|x86.ActiveCfg = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Debug|x86.Build.0 = Debug|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|Any CPU.Build.0 = Release|Any CPU
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|x64.ActiveCfg = Release|x64
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|x64.Build.0 = Release|x64
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|x86.ActiveCfg = Release|x86
{7B2D3886-A213-4F99-89F7-D0D7DDAA97D9}.Release|x86.Build.0 = Release|x86
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|x64.ActiveCfg = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|x64.Build.0 = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|x86.ActiveCfg = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Debug|x86.Build.0 = Debug|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|Any CPU.Build.0 = Release|Any CPU
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|x64.ActiveCfg = Release|x64
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|x64.Build.0 = Release|x64
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|x86.ActiveCfg = Release|x86
{6BE1ED72-6CA9-4442-B529-C867A9D6904C}.Release|x86.Build.0 = Release|x86
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|x64.ActiveCfg = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|x64.Build.0 = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|x86.ActiveCfg = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Debug|x86.Build.0 = Debug|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|Any CPU.Build.0 = Release|Any CPU
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|x64.ActiveCfg = Release|x64
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|x64.Build.0 = Release|x64
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|x86.ActiveCfg = Release|x86
{D5E3C871-EA87-48E7-9287-E96B8410EB18}.Release|x86.Build.0 = Release|x86
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|x64.ActiveCfg = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|x64.Build.0 = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|x86.ActiveCfg = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Debug|x86.Build.0 = Debug|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|Any CPU.Build.0 = Release|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|x64.ActiveCfg = Release|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|x64.Build.0 = Release|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|x86.ActiveCfg = Release|Any CPU
{D6614743-D01E-4899-A5E7-B4E45BD1B033}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {01ED3EE8-E89A-4A27-AF68-EF2490CB6BD7}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,84 @@
using System.Text.RegularExpressions;
namespace sp_keygen
{
internal class Program
{
static void Main(string[] args)
{
if (args.Length != 2)
{
Console.WriteLine("Usage: sp_keygen.exe <Name> <RegKey>");
return;
}
string Name = args[0];
string RegKey = args[1];
string pattern = @"^[1-9]{3}-[1-9]{3}-[1-9]{3}-[A-Z]$";
if (Name.Length < 5 || RegKey.Length != 13 || !Regex.IsMatch(RegKey, pattern))
{
Console.WriteLine("Invalid input");
return;
}
for (int serialNum = 11111; serialNum <= 99999; serialNum++)
{
string Serial = serialNum.ToString();
string pattern2 = @"^[1-9]+$";
if (!Regex.IsMatch(Serial.ToString(), pattern2))
continue;
char[] charArray = Name.ToCharArray();
Array.Reverse(charArray);
int charSum = 0;
foreach (char c in charArray)
{
charSum += c;
}
string csbin = Convert.ToString(charSum, 2);
char[] csbinArray = csbin.ToCharArray();
int n1Num = 0;
foreach (char c in csbinArray)
{
if (c == '1')
n1Num++;
}
int regSum = 0;
for (int i = 0; i < RegKey.Length; i++)
{
if (i == 3 || i == 7 || i == 11)
continue;
else if (i == 12)
{
regSum += RegKey[i] % 2;
continue;
}
int n = int.Parse(RegKey[i].ToString());
if (i < 3)
regSum += n * (0xB - (i + 1));
else if (i < 7)
regSum += n * (0xC - (i + 1));
else if (i < 11)
regSum += n * (0xD - (i + 1));
}
double Sum = Math.Pow(regSum, n1Num);
long Suml = (long)Sum;
int mod = (int)(Suml % serialNum);
if (IsPrime(mod))
{
Console.WriteLine("Valid Serial: " + Serial);
break;
}
}
}
public static bool IsPrime(int number)
{
if (number <= 1) return false;
if (number <= 3) return true;
if (number % 2 == 0 || number % 3 == 0) return false;
for (int i = 5; i * i <= number; i += 6)
{
if (number % i == 0 || number % (i + 2) == 0) return false;
}
return true;
}
}
}

View File

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>