solved new crackme

This commit is contained in:
Chenx221 2024-10-05 13:13:23 +08:00
parent e25f4c6f03
commit b0e60a0114
Signed by: chenx221
GPG Key ID: D7A9EC07024C3021
13 changed files with 941 additions and 0 deletions

BIN
bjcm10b/BJCM10B.EXE Normal file

Binary file not shown.

40
bjcm10b/README.TXT Normal file
View File

@ -0,0 +1,40 @@
aUTHOr -- Bjanes
pROGRAm -- VB6 Crackme
vERSIOn -- 1.0b
dATe -- 20/09/1999
pLACe -- Somewhere on my comp :)
pROTECTIOn - Name/Serial
rULEs -- There is only one rule -> You must find correct serial
Greetings to all crackers out there,
This is first, and the most simplest(to crack) version of my
crackme program.
I wrote it for NEWBIES to advance their R. C. E. skills on
cracking Visual Basic programs.
Every version will have one crackme marked "a", and
another one marked with "b".
Crackmes marked with "a" has serial-only protection
and crackmes marked with "b" has name/serial protection!
Also every next version will be more difficult to crack.
[Maybe there will be crackmes marked with "c"(misc. protection)]
Sorry, but I can't give you any hints, because I'm not experienced
with cracking VB programs, actually I hate them :)
If you somehow lose the exe file, have only this text file and don't
know where to download the executable, go to the Eternal Bliss' homepage
and you'll probably find it. The link is http://crackmes.cjb.net/
If you're so stupid that you can't crack this program don't mail me! :)
Mail me only if you sucessfuly crack it, and tell me how.
My Email is -- BornaJanes@hotmail.com
Hope you'll learn something new from it,
Enjoy!
Borna
My gratitude goes to: Eternal Bliss, The Sandman, Jeff, Iczelion, _ytc.

View File

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

BIN
bjcm10b/keygen/keygen1.dll Normal file

Binary file not shown.

BIN
bjcm10b/keygen/keygen1.exe Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
}
}
}

226
bjcm10b/solve.md Normal file
View File

@ -0,0 +1,226 @@
计算serial
算法可简化为:
```c#
private static string? GenerateKey(string name)
{
return $" {(name[0] + name[^1]) * 0xF423F}";
}
```
详细信息:
```assembly
004044E0 | 55 | push ebp | CheckSerial
004044E1 | 8BEC | mov ebp,esp |
...
...
00404552 | FF92 0C030000 | call dword ptr ds:[edx+30C] |
00404558 | 8B1D 38104000 | mov ebx,dword ptr ds:[<__vbaObjSet>] |
0040455E | 50 | push eax |
0040455F | 8D45 CC | lea eax,dword ptr ss:[ebp-34] |
00404562 | 50 | push eax |
00404563 | FFD3 | call ebx |
00404565 | 8B08 | mov ecx,dword ptr ds:[eax] |
00404567 | 8D55 D4 | lea edx,dword ptr ss:[ebp-2C] | [ebp-2C]:Name
0040456A | 52 | push edx |
0040456B | 50 | push eax |
0040456C | 8985 44FFFFFF | mov dword ptr ss:[ebp-BC],eax |
00404572 | FF91 A0000000 | call dword ptr ds:[ecx+A0] |
00404578 | 3BC7 | cmp eax,edi |
0040457A | DBE2 | fnclex |
0040457C | 7D 18 | jge bjcm10b.404596 |
0040457E | 8B8D 44FFFFFF | mov ecx,dword ptr ss:[ebp-BC] |
00404584 | 68 A0000000 | push A0 |
00404589 | 68 00304000 | push bjcm10b.403000 |
0040458E | 51 | push ecx |
0040458F | 50 | push eax |
00404590 | FF15 2C104000 | call dword ptr ds:[<__vbaHresultCheckObj>] |
00404596 | 8B55 D4 | mov edx,dword ptr ss:[ebp-2C] |
00404599 | 52 | push edx |
0040459A | FF15 10104000 | call dword ptr ds:[<__vbaLenBstr>] |
004045A0 | 33C9 | xor ecx,ecx |
004045A2 | 83F8 02 | cmp eax,2 | Name长度检查
004045A5 | 0F9CC1 | setl cl |
004045A8 | F7D9 | neg ecx |
004045AA | 898D 3CFFFFFF | mov dword ptr ss:[ebp-C4],ecx |
004045B0 | 8D4D D4 | lea ecx,dword ptr ss:[ebp-2C] |
004045B3 | FF15 D0104000 | call dword ptr ds:[<__vbaFreeStr>] |
004045B9 | 8D4D CC | lea ecx,dword ptr ss:[ebp-34] |
004045BC | FF15 D4104000 | call dword ptr ds:[<__vbaFreeObj>] |
004045C2 | 66:39BD 3CFFFFFF | cmp word ptr ss:[ebp-C4],di |
004045C9 | 0F84 8B000000 | je bjcm10b.40465A |
...(长度不满足要求)
...
0040465A | 8B0E | mov ecx,dword ptr ds:[esi] |
0040465C | 56 | push esi |
0040465D | FF91 0C030000 | call dword ptr ds:[ecx+30C] |
00404663 | 8D55 CC | lea edx,dword ptr ss:[ebp-34] |
00404666 | 50 | push eax |
00404667 | 52 | push edx |
00404668 | FFD3 | call ebx |
0040466A | 8B06 | mov eax,dword ptr ds:[esi] |
0040466C | 56 | push esi |
0040466D | FF90 0C030000 | call dword ptr ds:[eax+30C] |
00404673 | 8D4D C8 | lea ecx,dword ptr ss:[ebp-38] |
00404676 | 50 | push eax |
00404677 | 51 | push ecx |
00404678 | FFD3 | call ebx |
0040467A | 8B45 CC | mov eax,dword ptr ss:[ebp-34] |
0040467D | 8D55 B8 | lea edx,dword ptr ss:[ebp-48] |
00404680 | 8945 C0 | mov dword ptr ss:[ebp-40],eax |
00404683 | 6A 01 | push 1 |
00404685 | 8D45 A8 | lea eax,dword ptr ss:[ebp-58] |
00404688 | 52 | push edx |
00404689 | 50 | push eax |
0040468A | 897D CC | mov dword ptr ss:[ebp-34],edi |
0040468D | C745 B8 09000000 | mov dword ptr ss:[ebp-48],9 | 09:'\t'
00404694 | FF15 B4104000 | call dword ptr ds:[<Ordinal#617>] |
0040469A | 8B45 C8 | mov eax,dword ptr ss:[ebp-38] |
0040469D | 8D4D 98 | lea ecx,dword ptr ss:[ebp-68] |
004046A0 | 6A 01 | push 1 |
004046A2 | 8D55 88 | lea edx,dword ptr ss:[ebp-78] |
004046A5 | 51 | push ecx |
004046A6 | 52 | push edx |
004046A7 | 897D C8 | mov dword ptr ss:[ebp-38],edi |
004046AA | 8945 A0 | mov dword ptr ss:[ebp-60],eax |
004046AD | C745 98 09000000 | mov dword ptr ss:[ebp-68],9 | 09:'\t'
004046B4 | FF15 C0104000 | call dword ptr ds:[<Ordinal#619>] |
004046BA | 8B3D 80104000 | mov edi,dword ptr ds:[<__vbaStrVarVal>] |
004046C0 | 8D45 88 | lea eax,dword ptr ss:[ebp-78] |
004046C3 | 8D4D D0 | lea ecx,dword ptr ss:[ebp-30] |
004046C6 | 50 | push eax |
004046C7 | 51 | push ecx |
004046C8 | FFD7 | call edi |
004046CA | 50 | push eax |
004046CB | FF15 24104000 | call dword ptr ds:[<Ordinal#516>] | 和下面那块一样取Name的头尾字符
004046D1 | 66:8BD0 | mov dx,ax |
004046D4 | 8D45 A8 | lea eax,dword ptr ss:[ebp-58] |
004046D7 | 8D4D D4 | lea ecx,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
004046DA | 50 | push eax |
004046DB | 51 | push ecx |
004046DC | 66:8995 26FFFFFF | mov word ptr ss:[ebp-DA],dx |
004046E3 | FFD7 | call edi |
004046E5 | 50 | push eax |
004046E6 | FF15 24104000 | call dword ptr ds:[<Ordinal#516>] |
004046EC | 66:8B95 26FFFFFF | mov dx,word ptr ss:[ebp-DA] |
004046F3 | 8D4D D8 | lea ecx,dword ptr ss:[ebp-28] |
004046F6 | 66:03D0 | add dx,ax | 两字符相加
004046F9 | C785 78FFFFFF 020000 | mov dword ptr ss:[ebp-88],2 |
00404703 | 0F80 94030000 | jo <bjcm10b.ErrOverflow> |
00404709 | 66:8955 80 | mov word ptr ss:[ebp-80],dx |
0040470D | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-88] |
00404713 | FF15 08104000 | call dword ptr ds:[<__vbaVarMove>] |
...
...
00404751 | 83C4 2C | add esp,2C |
00404754 | 8D55 D8 | lea edx,dword ptr ss:[ebp-28] | vb var
00404757 | 8D85 78FFFFFF | lea eax,dword ptr ss:[ebp-88] |
0040475D | 8D4D B8 | lea ecx,dword ptr ss:[ebp-48] |
00404760 | 52 | push edx |
00404761 | 50 | push eax |
00404762 | 51 | push ecx |
00404763 | C745 80 3F420F00 | mov dword ptr ss:[ebp-80],F423F |
0040476A | C785 78FFFFFF 030000 | mov dword ptr ss:[ebp-88],3 |
00404774 | FF15 6C104000 | call dword ptr ds:[<__vbaVarMul>] | 前面相加结果*0xF423F
0040477A | 50 | push eax |
0040477B | FF15 AC104000 | call dword ptr ds:[<__vbaI4Var>] |
00404781 | 8B16 | mov edx,dword ptr ds:[esi] | esi:"冈]"
00404783 | 56 | push esi | esi:"冈]"
00404784 | 8945 E8 | mov dword ptr ss:[ebp-18],eax |
00404787 | FF92 FC020000 | call dword ptr ds:[edx+2FC] |
0040478D | 50 | push eax |
0040478E | 8D45 CC | lea eax,dword ptr ss:[ebp-34] |
00404791 | 50 | push eax |
00404792 | FFD3 | call ebx |
00404794 | 8BF8 | mov edi,eax |
00404796 | 8D55 D4 | lea edx,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
00404799 | 52 | push edx |
0040479A | 57 | push edi |
0040479B | 8B0F | mov ecx,dword ptr ds:[edi] |
0040479D | FF91 A0000000 | call dword ptr ds:[ecx+A0] |
004047A3 | 85C0 | test eax,eax |
004047A5 | DBE2 | fnclex |
004047A7 | 7D 12 | jge bjcm10b.4047BB |
004047A9 | 68 A0000000 | push A0 |
004047AE | 68 00304000 | push bjcm10b.403000 |
004047B3 | 57 | push edi |
004047B4 | 50 | push eax |
004047B5 | FF15 2C104000 | call dword ptr ds:[<__vbaHresultCheckObj>] |
004047BB | 8B45 D4 | mov eax,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
004047BE | 50 | push eax | eax:Serial
004047BF | 68 B0304000 | push bjcm10b.4030B0 | Sorry, try again!
004047C4 | FF15 58104000 | call dword ptr ds:[<__vbaStrCmp>] | 没用的检查
004047CA | 8BF8 | mov edi,eax |
004047CC | 8D4D D4 | lea ecx,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
004047CF | F7DF | neg edi |
004047D1 | 1BFF | sbb edi,edi |
004047D3 | 47 | inc edi |
004047D4 | F7DF | neg edi |
004047D6 | FF15 D0104000 | call dword ptr ds:[<__vbaFreeStr>] |
004047DC | 8D4D CC | lea ecx,dword ptr ss:[ebp-34] |
004047DF | FF15 D4104000 | call dword ptr ds:[<__vbaFreeObj>] |
004047E5 | 66:85FF | test di,di |
004047E8 | 0F84 81000000 | je bjcm10b.40486F |
...
...
0040486F | 8B0E | mov ecx,dword ptr ds:[esi] | esi:"冈]"
00404871 | 8D45 E8 | lea eax,dword ptr ss:[ebp-18] | 前面相乘的结果
00404874 | 56 | push esi | esi:"冈]"
00404875 | 8945 80 | mov dword ptr ss:[ebp-80],eax |
00404878 | C785 78FFFFFF 034000 | mov dword ptr ss:[ebp-88],4003 |
00404882 | FF91 FC020000 | call dword ptr ds:[ecx+2FC] |
00404888 | 8D55 CC | lea edx,dword ptr ss:[ebp-34] |
0040488B | 50 | push eax |
0040488C | 52 | push edx |
0040488D | FFD3 | call ebx |
0040488F | 8BF0 | mov esi,eax | esi:"冈]"
00404891 | 8D4D D4 | lea ecx,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
00404894 | 51 | push ecx |
00404895 | 56 | push esi | esi:"冈]"
00404896 | 8B06 | mov eax,dword ptr ds:[esi] | esi:"冈]"
00404898 | FF90 A0000000 | call dword ptr ds:[eax+A0] |
0040489E | 85C0 | test eax,eax |
004048A0 | DBE2 | fnclex |
004048A2 | 7D 12 | jge bjcm10b.4048B6 |
004048A4 | 68 A0000000 | push A0 |
004048A9 | 68 00304000 | push bjcm10b.403000 |
004048AE | 56 | push esi | esi:"冈]"
004048AF | 50 | push eax |
004048B0 | FF15 2C104000 | call dword ptr ds:[<__vbaHresultCheckObj>] |
004048B6 | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-88] |
004048BC | 52 | push edx |
004048BD | FF15 84104000 | call dword ptr ds:[<Ordinal#536>] |
004048C3 | 8BD0 | mov edx,eax |
004048C5 | 8D4D D0 | lea ecx,dword ptr ss:[ebp-30] |
004048C8 | FF15 BC104000 | call dword ptr ds:[<__vbaStrMove>] |
004048CE | 50 | push eax |
004048CF | 8B45 D4 | mov eax,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
004048D2 | 50 | push eax |
004048D3 | FF15 58104000 | call dword ptr ds:[<__vbaStrCmp>] | 比较输入的Serial与正确Serial
004048D9 | 8BF0 | mov esi,eax | esi:"冈]"
004048DB | 8D4D D4 | lea ecx,dword ptr ss:[ebp-2C] | [ebp-2C]:"冈]"
004048DE | F7DE | neg esi | esi:"冈]"
004048E0 | 1BF6 | sbb esi,esi | esi:"冈]"
004048E2 | 8D55 D0 | lea edx,dword ptr ss:[ebp-30] |
004048E5 | 51 | push ecx |
004048E6 | 46 | inc esi | esi:"冈]"
004048E7 | 52 | push edx |
004048E8 | 6A 02 | push 2 |
004048EA | F7DE | neg esi | esi:"冈]"
004048EC | FF15 9C104000 | call dword ptr ds:[<__vbaFreeStrList>] |
004048F2 | 83C4 0C | add esp,C |
004048F5 | 8D4D CC | lea ecx,dword ptr ss:[ebp-34] |
004048F8 | FF15 D4104000 | call dword ptr ds:[<__vbaFreeObj>] |
004048FE | 8B3D 34104000 | mov edi,dword ptr ds:[<__vbaBoolStr>] |
00404904 | 68 00314000 | push bjcm10b.403100 | 403100:L"False"
00404909 | FFD7 | call edi |
0040490B | 66:3BF0 | cmp si,ax |
0040490E | 0F85 81000000 | jne bjcm10b.404995 |
...(错误的Serial)
...
00404995 | 68 10314000 | push bjcm10b.403110 | 403110:L"True"
...(正确)
```

View File

@ -0,0 +1,81 @@

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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{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|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|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|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|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|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|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|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|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|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|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|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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {01ED3EE8-E89A-4A27-AF68-EF2490CB6BD7}
EndGlobalSection
EndGlobal

219
bjcm10b/source/keygen1/Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,219 @@
namespace keygen1
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
button1 = new Button();
label1 = new Label();
textBox1 = new TextBox();
label2 = new Label();
textBox2 = new TextBox();
label3 = new Label();
checkBox1 = new CheckBox();
button2 = new Button();
button3 = new Button();
label4 = new Label();
textBox3 = new TextBox();
button4 = new Button();
label5 = new Label();
textBox4 = new TextBox();
SuspendLayout();
//
// button1
//
button1.Location = new Point(393, 2);
button1.Name = "button1";
button1.Size = new Size(93, 172);
button1.TabIndex = 0;
button1.Text = "Generate";
button1.UseVisualStyleBackColor = true;
button1.Click += Button1_Click;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(30, 18);
label1.Name = "label1";
label1.Size = new Size(39, 15);
label1.TabIndex = 1;
label1.Text = "Name";
//
// textBox1
//
textBox1.Location = new Point(75, 14);
textBox1.Name = "textBox1";
textBox1.Size = new Size(262, 23);
textBox1.TabIndex = 2;
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(34, 51);
label2.Name = "label2";
label2.Size = new Size(35, 15);
label2.TabIndex = 3;
label2.Text = "Serial";
//
// textBox2
//
textBox2.Location = new Point(75, 47);
textBox2.Name = "textBox2";
textBox2.Size = new Size(262, 23);
textBox2.TabIndex = 4;
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(312, 155);
label3.Name = "label3";
label3.Size = new Size(74, 15);
label3.TabIndex = 5;
label3.Text = "By Chenx221";
//
// checkBox1
//
checkBox1.AutoSize = true;
checkBox1.Location = new Point(75, 155);
checkBox1.Name = "checkBox1";
checkBox1.Size = new Size(89, 19);
checkBox1.TabIndex = 6;
checkBox1.Text = "Auto Mode ";
checkBox1.UseVisualStyleBackColor = true;
//
// button2
//
button2.Location = new Point(343, 13);
button2.Name = "button2";
button2.Size = new Size(44, 24);
button2.TabIndex = 7;
button2.Text = "Copy";
button2.UseVisualStyleBackColor = true;
button2.Click += Button2_Click;
//
// button3
//
button3.Location = new Point(343, 47);
button3.Name = "button3";
button3.Size = new Size(44, 23);
button3.TabIndex = 8;
button3.Text = "Copy";
button3.UseVisualStyleBackColor = true;
button3.Click += Button3_Click;
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(10, 82);
label4.Name = "label4";
label4.Size = new Size(59, 15);
label4.TabIndex = 9;
label4.Text = "Company";
label4.Visible = false;
//
// textBox3
//
textBox3.Location = new Point(75, 79);
textBox3.Name = "textBox3";
textBox3.Size = new Size(262, 23);
textBox3.TabIndex = 10;
textBox3.Visible = false;
//
// button4
//
button4.Location = new Point(343, 79);
button4.Name = "button4";
button4.Size = new Size(44, 23);
button4.TabIndex = 11;
button4.Text = "Copy";
button4.UseVisualStyleBackColor = true;
button4.Visible = false;
button4.Click += Button4_Click;
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(31, 116);
label5.Name = "label5";
label5.Size = new Size(35, 15);
label5.TabIndex = 12;
label5.Text = "Serial";
label5.Visible = false;
//
// textBox4
//
textBox4.Location = new Point(75, 113);
textBox4.Name = "textBox4";
textBox4.Size = new Size(262, 23);
textBox4.TabIndex = 13;
textBox4.Visible = false;
//
// Form1
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(491, 183);
Controls.Add(textBox4);
Controls.Add(label5);
Controls.Add(button4);
Controls.Add(textBox3);
Controls.Add(label4);
Controls.Add(button3);
Controls.Add(button2);
Controls.Add(checkBox1);
Controls.Add(label3);
Controls.Add(textBox2);
Controls.Add(label2);
Controls.Add(textBox1);
Controls.Add(label1);
Controls.Add(button1);
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
Name = "Form1";
Text = "KeyGen For bishop_crackme_05";
ResumeLayout(false);
PerformLayout();
}
#endregion
private Button button1;
private Label label1;
private TextBox textBox1;
private Label label2;
private TextBox textBox2;
private Label label3;
private CheckBox checkBox1;
private Button button2;
private Button button3;
private Label label4;
private TextBox textBox3;
private Button button4;
private Label label5;
private TextBox textBox4;
}
}

View File

@ -0,0 +1,157 @@
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
namespace keygen1
{
public partial class Form1 : Form
{
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern IntPtr FindWindow(string? lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder? lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
const uint WM_SETTEXT = 0x000C;
const uint BM_CLICK = 0x00F5;
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("Name不能为空");
return;
}
//if (string.IsNullOrEmpty(textBox2.Text))
//{
// MessageBox.Show("First Name不能为空");
// return;
//}
//if (string.IsNullOrEmpty(textBox3.Text))
//{
// MessageBox.Show("Company不能为空");
// return;
//}
//Generate(textBox1.Text, textBox2.Text, textBox3.Text);
Generate(textBox1.Text);
}
private void Generate(string username)
{
if (username.Length < 2)
{
MessageBox.Show("Name长度需大于等于2");
return;
}
//if (username == "Ab")
//{
// MessageBox.Show("Name不能为Ab");
// return;
//}
//if(Regex.IsMatch(username, @"\d"))
//{
// MessageBox.Show("Name不允许包含数字");
// return;
//}
//if (username[0]==' ')
//{
// MessageBox.Show("Name开头不能包含空格");
// return;
//}
string? key = GenerateKey(username);
if (string.IsNullOrEmpty(key))
{
MessageBox.Show("生成Key失败");
return;
}
//if (!int.TryParse(username, out int serial1))
//{
// MessageBox.Show("Serial1不是有效数字");
// return;
//}
//string key = GenerateKey(serial1);
//textBox4.Text = string.Join("-", key);
textBox2.Text = key;
if (checkBox1.Checked) AutoMode(username, key);
}
private static string? GenerateKey(string name)
{
return $" {(name[0] + name[^1]) * 0xF423F}";
}
private static void AutoMode(string username, string key)
{
string windowTitle = "Bjanes Crackme V1.0b";
IntPtr hWnd = FindWindow(null, windowTitle);
if (hWnd == IntPtr.Zero)
{
MessageBox.Show("窗口未找到");
return;
}
int serialControlId = 0x1;
int frameControlId = 0x3;
int usernameControlId = 0x5;
int submitButtonId = 0x4;
IntPtr serialHwnd = GetDlgItem(hWnd, serialControlId);
IntPtr frameHwnd = GetDlgItem(hWnd, frameControlId);
IntPtr usernameHwnd = GetDlgItem(frameHwnd, usernameControlId);
IntPtr submitButtonHwnd = GetDlgItem(frameHwnd, submitButtonId);
if (usernameHwnd == IntPtr.Zero || frameHwnd == IntPtr.Zero || serialHwnd == IntPtr.Zero || submitButtonHwnd == IntPtr.Zero)
{
MessageBox.Show("控件未找到");
return;
}
StringBuilder usernameToSet = new(username);
StringBuilder serialToSet = new(key);
SendMessage(usernameHwnd, WM_SETTEXT, IntPtr.Zero, usernameToSet);
SendMessage(serialHwnd, WM_SETTEXT, IntPtr.Zero, serialToSet);
SendMessage(submitButtonHwnd, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
private void Button2_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
Clipboard.SetText(textBox1.Text);
}
}
private void Button3_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox2.Text))
{
Clipboard.SetText(textBox2.Text);
}
}
private void Button4_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox3.Text))
{
Clipboard.SetText(textBox3.Text);
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
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">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,17 @@
namespace keygen1
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
}

View File

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Platforms>AnyCPU;x86;x64</Platforms>
<Authors>chenx221</Authors>
<Company>chenx221</Company>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<DebugType>portable</DebugType>
</PropertyGroup>
</Project>