solved new crackme
This commit is contained in:
parent
753bef8589
commit
82372320dc
3
Cerberus/info.txt
Normal file
3
Cerberus/info.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
This is my first keygen.
|
||||||
|
It's written in visual c++.
|
||||||
|
You have to make a keygen and a tutorial.
|
BIN
Cerberus/keygen.exe
Normal file
BIN
Cerberus/keygen.exe
Normal file
Binary file not shown.
23
Cerberus/keygen/sp_keygen.deps.json
Normal file
23
Cerberus/keygen/sp_keygen.deps.json
Normal 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": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
Cerberus/keygen/sp_keygen.dll
Normal file
BIN
Cerberus/keygen/sp_keygen.dll
Normal file
Binary file not shown.
BIN
Cerberus/keygen/sp_keygen.exe
Normal file
BIN
Cerberus/keygen/sp_keygen.exe
Normal file
Binary file not shown.
13
Cerberus/keygen/sp_keygen.runtimeconfig.json
Normal file
13
Cerberus/keygen/sp_keygen.runtimeconfig.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
287
Cerberus/solve.md
Normal file
287
Cerberus/solve.md
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
算密钥
|
||||||
|
|
||||||
|
先上算法:
|
||||||
|
|
||||||
|
```c#
|
||||||
|
//判断空判断长度这里省略
|
||||||
|
public static string CalcSerial(string name)
|
||||||
|
{
|
||||||
|
int name_length = name.Length;
|
||||||
|
int esi = 0x18;
|
||||||
|
int ebx = 0x400;
|
||||||
|
int ebp = 0x32;
|
||||||
|
int ecx = name_length;
|
||||||
|
int eax, edx, edi, v10 = 0;
|
||||||
|
foreach (char c in name)
|
||||||
|
{
|
||||||
|
eax = c;
|
||||||
|
eax += 0x56B;
|
||||||
|
edx = eax;
|
||||||
|
edx ^= 0x890428;
|
||||||
|
esi += edx;
|
||||||
|
edx = name[3];
|
||||||
|
if (ecx <= 9)
|
||||||
|
{
|
||||||
|
edx += ecx;
|
||||||
|
edx ^= 0x209;
|
||||||
|
edx *= esi;
|
||||||
|
ebx += edx;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
edx += ecx;
|
||||||
|
edx ^= 0x209;
|
||||||
|
edx *= ebx;
|
||||||
|
esi += edx;
|
||||||
|
}
|
||||||
|
edx = eax;
|
||||||
|
edx <<= 7;
|
||||||
|
edx += eax;
|
||||||
|
eax += edx * 8;
|
||||||
|
v10 = ebx + eax * 4;
|
||||||
|
ebx = v10; //first loop not run
|
||||||
|
}
|
||||||
|
string temp = name;
|
||||||
|
for (edi = 5; edi > 0; edi--)
|
||||||
|
{
|
||||||
|
eax = temp[edi];
|
||||||
|
ebp = eax + ebp + 0x134A;
|
||||||
|
temp = Fun_403c80(temp);
|
||||||
|
}
|
||||||
|
string temp2 = temp; //edx
|
||||||
|
edi = 1;
|
||||||
|
for (ebx = 5; ebx > 0; ebx--)
|
||||||
|
{
|
||||||
|
ecx = temp2[0];
|
||||||
|
eax = temp2[edi];
|
||||||
|
eax += 0x23;
|
||||||
|
ebp += ecx + 0x134A;
|
||||||
|
ecx = eax * 3;
|
||||||
|
ecx *= 5;
|
||||||
|
edx = ecx * 5;
|
||||||
|
eax += edx * 4;
|
||||||
|
esi += eax * 2;
|
||||||
|
temp2 = Fun_403c80(temp2);
|
||||||
|
edi++;
|
||||||
|
}
|
||||||
|
edx = temp2[5];
|
||||||
|
eax = 0x18;
|
||||||
|
ecx = v10;
|
||||||
|
eax -= edx;
|
||||||
|
ebp += ecx;
|
||||||
|
edx = temp2[2];
|
||||||
|
eax ^= ebp;
|
||||||
|
esi += 0x3c;
|
||||||
|
int eax2 = 0x1337;
|
||||||
|
eax2 -= edx;
|
||||||
|
eax2 ^= esi;
|
||||||
|
return $"LNT-{eax2}-{eax}"; //user32._wsprintfA(edx,"%s-%d-%d","LNT",eax2,eax); //esi
|
||||||
|
}
|
||||||
|
|
||||||
|
//反转字符串
|
||||||
|
public static string Fun_403c80(string name)
|
||||||
|
{
|
||||||
|
return new string(name.Reverse().ToArray());
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
测试密钥:
|
||||||
|
|
||||||
|
```
|
||||||
|
chenx221
|
||||||
|
LNT-72236375--441384786
|
||||||
|
```
|
||||||
|
|
||||||
|
细节:
|
||||||
|
|
||||||
|
```assembly
|
||||||
|
00401130 | 0F85 36020000 | jne keygen.40136C |
|
||||||
|
00401136 | 8B9424 78010000 | mov edx,dword ptr ss:[esp+178] | edx:EntryPoint
|
||||||
|
0040113D | 8D4C24 18 | lea ecx,dword ptr ss:[esp+18] | ecx:EntryPoint
|
||||||
|
00401141 | 6A 32 | push 32 |
|
||||||
|
00401143 | 51 | push ecx | ecx:EntryPoint
|
||||||
|
00401144 | 68 E8030000 | push 3E8 |
|
||||||
|
00401149 | 52 | push edx | edx:EntryPoint
|
||||||
|
0040114A | FF15 9C404000 | call dword ptr ds:[<GetDlgItemText |
|
||||||
|
00401150 | 8D7C24 18 | lea edi,dword ptr ss:[esp+18] | Name
|
||||||
|
00401154 | 83C9 FF | or ecx,FFFFFFFF | ecx:EntryPoint
|
||||||
|
00401157 | 33C0 | xor eax,eax |
|
||||||
|
00401159 | F2:AE | repne scasb |
|
||||||
|
0040115B | F7D1 | not ecx | ecx:EntryPoint
|
||||||
|
0040115D | 49 | dec ecx | ecx:EntryPoint
|
||||||
|
0040115E | 83F9 05 | cmp ecx,5 | ecx:EntryPoint
|
||||||
|
00401161 | 7D 29 | jge keygen.40118C | name.length > 4
|
||||||
|
00401163 | 8B8424 78010000 | mov eax,dword ptr ss:[esp+178] |
|
||||||
|
0040116A | 6A 30 | push 30 |
|
||||||
|
0040116C | 68 F0504000 | push keygen.4050F0 | 4050F0:"Cerberus Keygen"
|
||||||
|
00401171 | 68 A4504000 | push keygen.4050A4 | 4050A4:"Sorry name must be over 4 characters"
|
||||||
|
00401176 | 50 | push eax |
|
||||||
|
00401177 | FF15 98404000 | call dword ptr ds:[<MessageBoxA>] |
|
||||||
|
0040117D | 5F | pop edi | edi:EntryPoint
|
||||||
|
0040117E | 5E | pop esi | esi:EntryPoint
|
||||||
|
0040117F | 5D | pop ebp |
|
||||||
|
00401180 | 33C0 | xor eax,eax |
|
||||||
|
00401182 | 5B | pop ebx |
|
||||||
|
00401183 | 81C4 64010000 | add esp,164 |
|
||||||
|
00401189 | C2 1000 | ret 10 |
|
||||||
|
0040118C | 33FF | xor edi,edi | edi:EntryPoint
|
||||||
|
0040118E | 85C9 | test ecx,ecx | ecx:EntryPoint
|
||||||
|
00401190 | 7E 56 | jle keygen.4011E8 |
|
||||||
|
00401192 | EB 04 | jmp keygen.401198 |
|
||||||
|
00401194 | 8B5C24 10 | mov ebx,dword ptr ss:[esp+10] | loop start
|
||||||
|
00401198 | 0FBE443C 18 | movsx eax,byte ptr ss:[esp+edi+18] |
|
||||||
|
0040119D | 05 6B050000 | add eax,56B |
|
||||||
|
004011A2 | 8BD0 | mov edx,eax | edx:EntryPoint
|
||||||
|
004011A4 | 81F2 28048900 | xor edx,890428 | edx:EntryPoint
|
||||||
|
004011AA | 03F2 | add esi,edx | esi:EntryPoint, edx:EntryPoint
|
||||||
|
004011AC | 83F9 09 | cmp ecx,9 | length
|
||||||
|
004011AF | 0FBE5424 1B | movsx edx,byte ptr ss:[esp+1B] | edx:EntryPoint
|
||||||
|
004011B4 | 7E 0F | jle keygen.4011C5 |
|
||||||
|
004011B6 | 03D1 | add edx,ecx | edx:EntryPoint, ecx:EntryPoint
|
||||||
|
004011B8 | 81F2 09020000 | xor edx,209 | edx:EntryPoint
|
||||||
|
004011BE | 0FAFD3 | imul edx,ebx | edx:EntryPoint
|
||||||
|
004011C1 | 03F2 | add esi,edx | esi:EntryPoint, edx:EntryPoint
|
||||||
|
004011C3 | EB 0D | jmp keygen.4011D2 |
|
||||||
|
004011C5 | 03D1 | add edx,ecx | edx:EntryPoint, ecx:EntryPoint
|
||||||
|
004011C7 | 81F2 09020000 | xor edx,209 | edx:EntryPoint
|
||||||
|
004011CD | 0FAFD6 | imul edx,esi | edx:EntryPoint, esi:EntryPoint
|
||||||
|
004011D0 | 03DA | add ebx,edx | edx:EntryPoint
|
||||||
|
004011D2 | 8BD0 | mov edx,eax | edx:EntryPoint
|
||||||
|
004011D4 | C1E2 07 | shl edx,7 | edx:EntryPoint
|
||||||
|
004011D7 | 03D0 | add edx,eax | edx:EntryPoint
|
||||||
|
004011D9 | 47 | inc edi | edi:EntryPoint
|
||||||
|
004011DA | 3BF9 | cmp edi,ecx | edi:EntryPoint, ecx:EntryPoint
|
||||||
|
004011DC | 8D04D0 | lea eax,dword ptr ds:[eax+edx*8] |
|
||||||
|
004011DF | 8D1483 | lea edx,dword ptr ds:[ebx+eax*4] | edx:EntryPoint
|
||||||
|
004011E2 | 895424 10 | mov dword ptr ss:[esp+10],edx | [esp+10]:___RtlUserThreadStart@8+2B, edx:EntryPoint
|
||||||
|
004011E6 | 7C AC | jl keygen.401194 | next loop
|
||||||
|
004011E8 | BF 05000000 | mov edi,5 | edi:EntryPoint
|
||||||
|
004011ED | 0FBE443C 18 | movsx eax,byte ptr ss:[esp+edi+18] |
|
||||||
|
004011F2 | 8D4C24 18 | lea ecx,dword ptr ss:[esp+18] | ecx:EntryPoint
|
||||||
|
004011F6 | 51 | push ecx | ecx:EntryPoint
|
||||||
|
004011F7 | 8DAC28 4A130000 | lea ebp,dword ptr ds:[eax+ebp+134A |
|
||||||
|
004011FE | E8 7D2A0000 | call keygen.403C80 |
|
||||||
|
00401203 | 83C4 04 | add esp,4 |
|
||||||
|
00401206 | 4F | dec edi | edi:EntryPoint
|
||||||
|
00401207 | 85FF | test edi,edi | edi:EntryPoint
|
||||||
|
00401209 | 7F E2 | jg keygen.4011ED |
|
||||||
|
0040120B | 8D543C 18 | lea edx,dword ptr ss:[esp+edi+18] | edx:EntryPoint
|
||||||
|
0040120F | 8D7C24 19 | lea edi,dword ptr ss:[esp+19] | edi:EntryPoint
|
||||||
|
00401213 | 895424 14 | mov dword ptr ss:[esp+14],edx | edx:EntryPoint
|
||||||
|
00401217 | BB 05000000 | mov ebx,5 |
|
||||||
|
0040121C | 8B4424 14 | mov eax,dword ptr ss:[esp+14] |
|
||||||
|
00401220 | 0FBE08 | movsx ecx,byte ptr ds:[eax] | ecx:EntryPoint
|
||||||
|
00401223 | 0FBE07 | movsx eax,byte ptr ds:[edi] | edi:EntryPoint
|
||||||
|
00401226 | 83C0 23 | add eax,23 |
|
||||||
|
00401229 | 8DAC29 4A130000 | lea ebp,dword ptr ds:[ecx+ebp+134A |
|
||||||
|
00401230 | 8D0C40 | lea ecx,dword ptr ds:[eax+eax*2] | ecx:EntryPoint
|
||||||
|
00401233 | 8D0C89 | lea ecx,dword ptr ds:[ecx+ecx*4] | ecx:EntryPoint
|
||||||
|
00401236 | 8D1489 | lea edx,dword ptr ds:[ecx+ecx*4] | edx:EntryPoint
|
||||||
|
00401239 | 8D4C24 18 | lea ecx,dword ptr ss:[esp+18] | ecx:EntryPoint
|
||||||
|
0040123D | 51 | push ecx | ecx:EntryPoint
|
||||||
|
0040123E | 8D0490 | lea eax,dword ptr ds:[eax+edx*4] |
|
||||||
|
00401241 | 8D3446 | lea esi,dword ptr ds:[esi+eax*2] | esi:EntryPoint
|
||||||
|
00401244 | E8 372A0000 | call keygen.403C80 |
|
||||||
|
00401249 | 83C4 04 | add esp,4 |
|
||||||
|
0040124C | 47 | inc edi | edi:EntryPoint
|
||||||
|
0040124D | 4B | dec ebx |
|
||||||
|
0040124E | 75 CC | jne keygen.40121C |
|
||||||
|
00401250 | 0FBE5424 1D | movsx edx,byte ptr ss:[esp+1D] | edx:EntryPoint
|
||||||
|
00401255 | 8B4C24 10 | mov ecx,dword ptr ss:[esp+10] | ecx:EntryPoint, [esp+10]:___RtlUserThreadStart@8+2B
|
||||||
|
00401259 | B8 18000000 | mov eax,18 |
|
||||||
|
0040125E | 2BC2 | sub eax,edx | edx:EntryPoint
|
||||||
|
00401260 | 03E9 | add ebp,ecx | ecx:EntryPoint
|
||||||
|
00401262 | 0FBE5424 1A | movsx edx,byte ptr ss:[esp+1A] | edx:EntryPoint
|
||||||
|
00401267 | 33C5 | xor eax,ebp |
|
||||||
|
00401269 | 83C6 3C | add esi,3C | esi:EntryPoint
|
||||||
|
0040126C | 50 | push eax |
|
||||||
|
0040126D | B8 37130000 | mov eax,1337 |
|
||||||
|
00401272 | 2BC2 | sub eax,edx | edx:EntryPoint
|
||||||
|
00401274 | 8D8C24 B0000000 | lea ecx,dword ptr ss:[esp+B0] | ecx:EntryPoint
|
||||||
|
0040127B | 33C6 | xor eax,esi | esi:EntryPoint
|
||||||
|
0040127D | 8D9424 14010000 | lea edx,dword ptr ss:[esp+114] | edx:EntryPoint
|
||||||
|
00401284 | 50 | push eax |
|
||||||
|
00401285 | 51 | push ecx | ecx:EntryPoint
|
||||||
|
00401286 | 68 98504000 | push keygen.405098 | 405098:"%s-%d-%d"
|
||||||
|
0040128B | 52 | push edx | edx:EntryPoint
|
||||||
|
0040128C | FF15 A0404000 | call dword ptr ds:[<wsprintfA>] |
|
||||||
|
00401292 | 8BBC24 8C010000 | mov edi,dword ptr ss:[esp+18C] | edi:EntryPoint
|
||||||
|
00401299 | 8B35 9C404000 | mov esi,dword ptr ds:[<GetDlgItemT | esi:EntryPoint
|
||||||
|
0040129F | 83C4 14 | add esp,14 |
|
||||||
|
004012A2 | 8D4424 48 | lea eax,dword ptr ss:[esp+48] |
|
||||||
|
004012A6 | 6A 64 | push 64 |
|
||||||
|
004012A8 | 50 | push eax |
|
||||||
|
004012A9 | 68 EA030000 | push 3EA |
|
||||||
|
004012AE | 57 | push edi | edi:EntryPoint
|
||||||
|
004012AF | FFD6 | call esi | esi:EntryPoint
|
||||||
|
004012B1 | 8D4C24 48 | lea ecx,dword ptr ss:[esp+48] | serial
|
||||||
|
004012B5 | 6A 64 | push 64 |
|
||||||
|
004012B7 | 51 | push ecx | ecx:EntryPoint
|
||||||
|
004012B8 | 68 EA030000 | push 3EA |
|
||||||
|
004012BD | 57 | push edi | edi:EntryPoint
|
||||||
|
004012BE | FFD6 | call esi | esi:EntryPoint
|
||||||
|
004012C0 | 85C0 | test eax,eax |
|
||||||
|
004012C2 | 75 22 | jne keygen.4012E6 | serial不能为空
|
||||||
|
004012C4 | 6A 30 | push 30 |
|
||||||
|
004012C6 | 68 F0504000 | push keygen.4050F0 | 4050F0:"Cerberus Keygen"
|
||||||
|
004012CB | 68 7C504000 | push keygen.40507C | 40507C:"You have to enter a serial"
|
||||||
|
004012D0 | 57 | push edi | edi:EntryPoint
|
||||||
|
004012D1 | FF15 98404000 | call dword ptr ds:[<MessageBoxA>] |
|
||||||
|
004012D7 | 5F | pop edi | edi:EntryPoint
|
||||||
|
004012D8 | 5E | pop esi | esi:EntryPoint
|
||||||
|
004012D9 | 5D | pop ebp |
|
||||||
|
004012DA | 33C0 | xor eax,eax |
|
||||||
|
004012DC | 5B | pop ebx |
|
||||||
|
004012DD | 81C4 64010000 | add esp,164 |
|
||||||
|
004012E3 | C2 1000 | ret 10 |
|
||||||
|
004012E6 | 8DB424 10010000 | lea esi,dword ptr ss:[esp+110] | esi:EntryPoint
|
||||||
|
004012ED | 8D4424 48 | lea eax,dword ptr ss:[esp+48] |
|
||||||
|
004012F1 | 8A10 | mov dl,byte ptr ds:[eax] |
|
||||||
|
004012F3 | 8A1E | mov bl,byte ptr ds:[esi] | esi:EntryPoint
|
||||||
|
004012F5 | 8ACA | mov cl,dl |
|
||||||
|
004012F7 | 3AD3 | cmp dl,bl |
|
||||||
|
004012F9 | 75 1E | jne keygen.401319 |
|
||||||
|
004012FB | 84C9 | test cl,cl |
|
||||||
|
004012FD | 74 16 | je keygen.401315 |
|
||||||
|
004012FF | 8A50 01 | mov dl,byte ptr ds:[eax+1] |
|
||||||
|
00401302 | 8A5E 01 | mov bl,byte ptr ds:[esi+1] |
|
||||||
|
00401305 | 8ACA | mov cl,dl |
|
||||||
|
00401307 | 3AD3 | cmp dl,bl |
|
||||||
|
00401309 | 75 0E | jne keygen.401319 |
|
||||||
|
0040130B | 83C0 02 | add eax,2 |
|
||||||
|
0040130E | 83C6 02 | add esi,2 | esi:EntryPoint
|
||||||
|
00401311 | 84C9 | test cl,cl |
|
||||||
|
00401313 | 75 DC | jne keygen.4012F1 |
|
||||||
|
00401315 | 33C0 | xor eax,eax |
|
||||||
|
00401317 | EB 05 | jmp keygen.40131E |
|
||||||
|
00401319 | 1BC0 | sbb eax,eax |
|
||||||
|
0040131B | 83D8 FF | sbb eax,FFFFFFFF |
|
||||||
|
0040131E | 85C0 | test eax,eax |
|
||||||
|
00401320 | 75 25 | jne keygen.401347 |
|
||||||
|
00401322 | 6A 40 | push 40 |
|
||||||
|
00401324 | 68 F0504000 | push keygen.4050F0 | 4050F0:"Cerberus Keygen"
|
||||||
|
00401329 | 68 44504000 | push keygen.405044 | 405044:"Good job cracker!\n\nNow write a keygen and a tutorial."
|
||||||
|
0040132E | 57 | push edi | edi:EntryPoint
|
||||||
|
0040132F | FF15 98404000 | call dword ptr ds:[<MessageBoxA>] |
|
||||||
|
00401335 | 5F | pop edi | edi:EntryPoint
|
||||||
|
00401336 | 5E | pop esi | esi:EntryPoint
|
||||||
|
00401337 | 5D | pop ebp |
|
||||||
|
00401338 | B8 01000000 | mov eax,1 |
|
||||||
|
0040133D | 5B | pop ebx |
|
||||||
|
0040133E | 81C4 64010000 | add esp,164 |
|
||||||
|
00401344 | C2 1000 | ret 10 |
|
||||||
|
00401347 | 6A 10 | push 10 |
|
||||||
|
00401349 | 68 F0504000 | push keygen.4050F0 | 4050F0:"Cerberus Keygen"
|
||||||
|
0040134E | 68 30504000 | push keygen.405030 | 405030:"Wrong!\n\nTry again!"
|
||||||
|
00401353 | 57 | push edi | edi:EntryPoint
|
||||||
|
00401354 | FF15 98404000 | call dword ptr ds:[<MessageBoxA>] |
|
||||||
|
0040135A | 5F | pop edi | edi:EntryPoint
|
||||||
|
0040135B | 5E | pop esi | esi:EntryPoint
|
||||||
|
0040135C | 5D | pop ebp |
|
||||||
|
0040135D | B8 01000000 | mov eax,1 |
|
||||||
|
00401362 | 5B | pop ebx |
|
||||||
|
00401363 | 81C4 64010000 | add esp,164 |
|
||||||
|
00401369 | C2 1000 | ret 10 |
|
||||||
|
```
|
||||||
|
|
||||||
|
(按钮事件 EP往上翻一点就到了)
|
163
Cerberus/source/keygen1.sln
Normal file
163
Cerberus/source/keygen1.sln
Normal 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
|
103
Cerberus/source/sp_keygen/Program.cs
Normal file
103
Cerberus/source/sp_keygen/Program.cs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
namespace sp_keygen
|
||||||
|
{
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
Console.Write("Name: ");
|
||||||
|
string? name = Console.ReadLine();
|
||||||
|
if (string.IsNullOrEmpty(name))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Please input name.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (name.Length <= 4)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Name must be longer than 4 characters.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Console.WriteLine($"Serial: {CalcSerial(name)}");
|
||||||
|
Console.ReadKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string CalcSerial(string name)
|
||||||
|
{
|
||||||
|
int name_length = name.Length;
|
||||||
|
int esi = 0x18;
|
||||||
|
int ebx = 0x400;
|
||||||
|
int ebp = 0x32;
|
||||||
|
int ecx = name_length;
|
||||||
|
int eax, edx, edi, v10 = 0;
|
||||||
|
foreach (char c in name)
|
||||||
|
{
|
||||||
|
eax = c;
|
||||||
|
eax += 0x56B;
|
||||||
|
edx = eax;
|
||||||
|
edx ^= 0x890428;
|
||||||
|
esi += edx;
|
||||||
|
edx = name[3];
|
||||||
|
if (ecx <= 9)
|
||||||
|
{
|
||||||
|
edx += ecx;
|
||||||
|
edx ^= 0x209;
|
||||||
|
edx *= esi;
|
||||||
|
ebx += edx;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
edx += ecx;
|
||||||
|
edx ^= 0x209;
|
||||||
|
edx *= ebx;
|
||||||
|
esi += edx;
|
||||||
|
}
|
||||||
|
edx = eax;
|
||||||
|
edx <<= 7;
|
||||||
|
edx += eax;
|
||||||
|
eax += edx * 8;
|
||||||
|
v10 = ebx + eax * 4;
|
||||||
|
ebx = v10; //first loop not run
|
||||||
|
}
|
||||||
|
string temp = name;
|
||||||
|
for (edi = 5; edi > 0; edi--)
|
||||||
|
{
|
||||||
|
eax = temp[edi];
|
||||||
|
ebp = eax + ebp + 0x134A;
|
||||||
|
temp = Fun_403c80(temp);
|
||||||
|
}
|
||||||
|
string temp2 = temp; //edx
|
||||||
|
edi = 1;
|
||||||
|
for (ebx = 5; ebx > 0; ebx--)
|
||||||
|
{
|
||||||
|
ecx = temp2[0];
|
||||||
|
eax = temp2[edi];
|
||||||
|
eax += 0x23;
|
||||||
|
ebp += ecx + 0x134A;
|
||||||
|
ecx = eax * 3;
|
||||||
|
ecx *= 5;
|
||||||
|
edx = ecx * 5;
|
||||||
|
eax += edx * 4;
|
||||||
|
esi += eax * 2;
|
||||||
|
temp2 = Fun_403c80(temp2);
|
||||||
|
edi++;
|
||||||
|
}
|
||||||
|
edx = temp2[5];
|
||||||
|
eax = 0x18;
|
||||||
|
ecx = v10;
|
||||||
|
eax -= edx;
|
||||||
|
ebp += ecx;
|
||||||
|
edx = temp2[2];
|
||||||
|
eax ^= ebp;
|
||||||
|
esi += 0x3c;
|
||||||
|
int eax2 = 0x1337;
|
||||||
|
eax2 -= edx;
|
||||||
|
eax2 ^= esi;
|
||||||
|
return $"LNT-{eax2}-{eax}"; //user32._wsprintfA(edx,"%s-%d-%d","LNT",eax2,eax); //esi
|
||||||
|
}
|
||||||
|
|
||||||
|
//反转字符串
|
||||||
|
public static string Fun_403c80(string name)
|
||||||
|
{
|
||||||
|
return new string(name.Reverse().ToArray());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
63
Cerberus/source/sp_keygen/Properties/Resources.Designer.cs
generated
Normal file
63
Cerberus/source/sp_keygen/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace sp_keygen.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||||
|
/// </summary>
|
||||||
|
// 此类是由 StronglyTypedResourceBuilder
|
||||||
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("sp_keygen.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||||
|
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
101
Cerberus/source/sp_keygen/Properties/Resources.resx
Normal file
101
Cerberus/source/sp_keygen/Properties/Resources.resx
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 1.3
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">1.3</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1">this is my long string</data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
[base64 mime encoded serialized .NET Framework object]
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>1.3</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
8
Cerberus/source/sp_keygen/Properties/launchSettings.json
Normal file
8
Cerberus/source/sp_keygen/Properties/launchSettings.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"sp_keygen": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"commandLineArgs": "chenx221\r\n123-456-789-X"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
Cerberus/source/sp_keygen/sp_keygen.csproj
Normal file
25
Cerberus/source/sp_keygen/sp_keygen.csproj
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user