solved new keygenme
This commit is contained in:
parent
426c5e99ac
commit
a2ba539192
211
abooMe/Solve.md
Normal file
211
abooMe/Solve.md
Normal file
@ -0,0 +1,211 @@
|
||||
| 00404670 | 55 | push ebp | |
|
||||
| -------- | ---------------------- | ----------------------------------------- | ------------------------------------------------------------ |
|
||||
| 00404671 | 8BEC | mov ebp,esp | |
|
||||
| 00404673 | 81EC F4000000 | sub esp,F4 | |
|
||||
| 00404679 | 8B45 0C | mov eax,dword ptr ss:\[ebp+C\] | |
|
||||
| 0040467C | 8985 10FFFFFF | mov dword ptr ss:\[ebp-F0\],eax | |
|
||||
| 00404682 | 81BD 10FFFFFF 10010000 | cmp dword ptr ss:\[ebp-F0\],110 | |
|
||||
| 0040468C | 77 2B | ja aboome2.4046B9 | |
|
||||
| 0040468E | 81BD 10FFFFFF 10010000 | cmp dword ptr ss:\[ebp-F0\],110 | |
|
||||
| 00404698 | 74 40 | je aboome2.4046DA | |
|
||||
| 0040469A | 83BD 10FFFFFF 0F | cmp dword ptr ss:\[ebp-F0\],F | |
|
||||
| 004046A1 | 0F84 A4000000 | je aboome2.40474B | |
|
||||
| 004046A7 | 83BD 10FFFFFF 10 | cmp dword ptr ss:\[ebp-F0\],10 | |
|
||||
| 004046AE | 0F84 B8020000 | je aboome2.40496C | |
|
||||
| 004046B4 | E9 DC020000 | jmp \<aboome2.Useless\> | |
|
||||
| 004046B9 | 81BD 10FFFFFF 11010000 | cmp dword ptr ss:\[ebp-F0\],111 | |
|
||||
| 004046C3 | 0F84 89000000 | je aboome2.404752 | |
|
||||
| 004046C9 | 81BD 10FFFFFF 01020000 | cmp dword ptr ss:\[ebp-F0\],201 | |
|
||||
| 004046D3 | 74 58 | je aboome2.40472D | |
|
||||
| 004046D5 | E9 BB020000 | jmp \<aboome2.Useless\> | |
|
||||
| 004046DA | 833D 7CC04100 00 | cmp dword ptr ds:\[41C07C\],0 | |
|
||||
| 004046E1 | 75 40 | jne aboome2.404723 | |
|
||||
| 004046E3 | E8 59FFFFFF | call \<aboome2.sub_404641\> | |
|
||||
| 004046E8 | 6A 00 | push 0 | |
|
||||
| 004046EA | 68 44AC0000 | push AC44 | |
|
||||
| 004046EF | E8 ACCEFFFF | call \<aboome2.sub_4015A0\> | |
|
||||
| 004046F4 | 83C4 08 | add esp,8 | |
|
||||
| 004046F7 | 0FBEC8 | movsx ecx,al | |
|
||||
| 004046FA | 85C9 | test ecx,ecx | |
|
||||
| 004046FC | 75 05 | jne aboome2.404703 | |
|
||||
| 004046FE | E9 92020000 | jmp \<aboome2.Useless\> | |
|
||||
| 00404703 | 6A 00 | push 0 | |
|
||||
| 00404705 | 6A 00 | push 0 | |
|
||||
| 00404707 | E8 38C9FFFF | call \<aboome2.sub_401044\> | |
|
||||
| 0040470C | 83C4 08 | add esp,8 | |
|
||||
| 0040470F | A3 7CC04100 | mov dword ptr ds:\[41C07C\],eax | |
|
||||
| 00404714 | 8B15 7CC04100 | mov edx,dword ptr ds:\[41C07C\] | |
|
||||
| 0040471A | 52 | push edx | |
|
||||
| 0040471B | E8 F1CAFFFF | call \<aboome2.sub_401211\> | |
|
||||
| 00404720 | 83C4 04 | add esp,4 | |
|
||||
| 00404723 | B8 01000000 | mov eax,1 | |
|
||||
| 00404728 | E9 6A020000 | jmp aboome2.404997 | |
|
||||
| 0040472D | FF15 E8204100 | call dword ptr ds:\[\<ReleaseCapture\>\] | |
|
||||
| 00404733 | 6A 00 | push 0 | |
|
||||
| 00404735 | 6A 02 | push 2 | |
|
||||
| 00404737 | 68 A1000000 | push A1 | |
|
||||
| 0040473C | 8B45 08 | mov eax,dword ptr ss:\[ebp+8\] | |
|
||||
| 0040473F | 50 | push eax | |
|
||||
| 00404740 | FF15 E4204100 | call dword ptr ds:\[\<SendMessageA\>\] | |
|
||||
| 00404746 | E9 4A020000 | jmp \<aboome2.Useless\> | |
|
||||
| 0040474B | 33C0 | xor eax,eax | |
|
||||
| 0040474D | E9 45020000 | jmp aboome2.404997 | |
|
||||
| 00404752 | 8B4D 10 | mov ecx,dword ptr ss:\[ebp+10\] | |
|
||||
| 00404755 | 81E1 FFFF0000 | and ecx,FFFF | |
|
||||
| 0040475B | 898D 0CFFFFFF | mov dword ptr ss:\[ebp-F4\],ecx | |
|
||||
| 00404761 | 8B95 0CFFFFFF | mov edx,dword ptr ss:\[ebp-F4\] | |
|
||||
| 00404767 | 81EA EA030000 | sub edx,3EA | |
|
||||
| 0040476D | 8995 0CFFFFFF | mov dword ptr ss:\[ebp-F4\],edx | |
|
||||
| 00404773 | 83BD 0CFFFFFF 04 | cmp dword ptr ss:\[ebp-F4\],4 | |
|
||||
| 0040477A | 0F87 EA010000 | ja \<aboome2.Jump2Useless\> | |
|
||||
| 00404780 | 8B85 0CFFFFFF | mov eax,dword ptr ss:\[ebp-F4\] | |
|
||||
| 00404786 | FF2485 9D494000 | jmp dword ptr ds:\[eax\*4+40499D\] | |
|
||||
| 0040478D | C745 FC 00000000 | mov dword ptr ss:\[ebp-4\],0 | |
|
||||
| 00404794 | C745 F8 00000000 | mov dword ptr ss:\[ebp-8\],0 | |
|
||||
| 0040479B | 6A 0F | push F | |
|
||||
| 0040479D | 8D8D 18FFFFFF | lea ecx,dword ptr ss:\[ebp-E8\] | |
|
||||
| 004047A3 | 51 | push ecx | |
|
||||
| 004047A4 | 68 E8030000 | push 3E8 | Name Edit Control ID |
|
||||
| 004047A9 | 8B55 08 | mov edx,dword ptr ss:\[ebp+8\] | |
|
||||
| 004047AC | 52 | push edx | |
|
||||
| 004047AD | FF15 E0204100 | call dword ptr ds:\[\<GetDlgItemTextA\>\] | get name to ecx |
|
||||
| 004047B3 | 8D85 18FFFFFF | lea eax,dword ptr ss:\[ebp-E8\] | |
|
||||
| 004047B9 | 50 | push eax | |
|
||||
| 004047BA | E8 110C0000 | call \<aboome2.Lib_strlen\> | get name length |
|
||||
| 004047BF | 83C4 04 | add esp,4 | |
|
||||
| 004047C2 | 8945 8C | mov dword ptr ss:\[ebp-74\],eax | |
|
||||
| 004047C5 | 837D 8C 03 | cmp dword ptr ss:\[ebp-74\],3 | Name.length\<=3时验证不通过 |
|
||||
| 004047C9 | 0F8E 10010000 | jle \<aboome2.Jump22Useless\> | |
|
||||
| 004047CF | C745 90 00000000 | mov dword ptr ss:\[ebp-70\],0 | sub_4047CF |
|
||||
| 004047D6 | EB 09 | jmp aboome2.4047E1 | 开始整活 |
|
||||
| 004047D8 | 8B4D 90 | mov ecx,dword ptr ss:\[ebp-70\] | |
|
||||
| 004047DB | 83C1 01 | add ecx,1 | |
|
||||
| 004047DE | 894D 90 | mov dword ptr ss:\[ebp-70\],ecx | |
|
||||
| 004047E1 | 8B55 90 | mov edx,dword ptr ss:\[ebp-70\] | |
|
||||
| 004047E4 | 3B55 8C | cmp edx,dword ptr ss:\[ebp-74\] | edx与length比较 |
|
||||
| 004047E7 | 7D 36 | jge aboome2.40481F | edx\>=length时跳下一个整活 |
|
||||
| 004047E9 | 8B45 90 | mov eax,dword ptr ss:\[ebp-70\] | |
|
||||
| 004047EC | 0FBE8C05 18FFFFFF | movsx ecx,byte ptr ss:\[ebp+eax-E8\] | |
|
||||
| 004047F4 | 8B55 90 | mov edx,dword ptr ss:\[ebp-70\] | |
|
||||
| 004047F7 | 33C0 | xor eax,eax | |
|
||||
| 004047F9 | 8A82 C1AC4100 | mov al,byte ptr ds:\[edx+41ACC1\] | |
|
||||
| 004047FF | 0345 FC | add eax,dword ptr ss:\[ebp-4\] | part1 |
|
||||
| 00404802 | 03C1 | add eax,ecx | |
|
||||
| 00404804 | 8945 FC | mov dword ptr ss:\[ebp-4\],eax | |
|
||||
| 00404807 | 8B4D 90 | mov ecx,dword ptr ss:\[ebp-70\] | |
|
||||
| 0040480A | 0FBE940D 18FFFFFF | movsx edx,byte ptr ss:\[ebp+ecx-E8\] | |
|
||||
| 00404812 | 6BD2 0A | imul edx,edx,A | edx = edx\*A |
|
||||
| 00404815 | 8B45 FC | mov eax,dword ptr ss:\[ebp-4\] | |
|
||||
| 00404818 | 03C2 | add eax,edx | |
|
||||
| 0040481A | 8945 FC | mov dword ptr ss:\[ebp-4\],eax | |
|
||||
| 0040481D | EB B9 | jmp aboome2.4047D8 | |
|
||||
| 0040481F | C745 90 00000000 | mov dword ptr ss:\[ebp-70\],0 | |
|
||||
| 00404826 | EB 09 | jmp aboome2.404831 | |
|
||||
| 00404828 | 8B4D 90 | mov ecx,dword ptr ss:\[ebp-70\] | |
|
||||
| 0040482B | 83C1 01 | add ecx,1 | |
|
||||
| 0040482E | 894D 90 | mov dword ptr ss:\[ebp-70\],ecx | |
|
||||
| 00404831 | 8B55 90 | mov edx,dword ptr ss:\[ebp-70\] | |
|
||||
| 00404834 | 3B55 8C | cmp edx,dword ptr ss:\[ebp-74\] | |
|
||||
| 00404837 | 7D 3D | jge aboome2.404876 | |
|
||||
| 00404839 | 8B45 90 | mov eax,dword ptr ss:\[ebp-70\] | |
|
||||
| 0040483C | 33C9 | xor ecx,ecx | |
|
||||
| 0040483E | 8A88 C0AC4100 | mov cl,byte ptr ds:\[eax+41ACC0\] | |
|
||||
| 00404844 | 6BC9 0A | imul ecx,ecx,A | |
|
||||
| 00404847 | 8B55 F8 | mov edx,dword ptr ss:\[ebp-8\] | part2 |
|
||||
| 0040484A | 03D1 | add edx,ecx | |
|
||||
| 0040484C | 8955 F8 | mov dword ptr ss:\[ebp-8\],edx | |
|
||||
| 0040484F | 0FBE85 1AFFFFFF | movsx eax,byte ptr ss:\[ebp-E6\] | |
|
||||
| 00404856 | 8B4D 90 | mov ecx,dword ptr ss:\[ebp-70\] | |
|
||||
| 00404859 | 33D2 | xor edx,edx | |
|
||||
| 0040485B | 8A91 C0AC4100 | mov dl,byte ptr ds:\[ecx+41ACC0\] | |
|
||||
| 00404861 | 0355 F8 | add edx,dword ptr ss:\[ebp-8\] | |
|
||||
| 00404864 | 03D0 | add edx,eax | |
|
||||
| 00404866 | 8955 F8 | mov dword ptr ss:\[ebp-8\],edx | |
|
||||
| 00404869 | 8B45 F8 | mov eax,dword ptr ss:\[ebp-8\] | |
|
||||
| 0040486C | 05 37130300 | add eax,31337 | |
|
||||
| 00404871 | 8945 F8 | mov dword ptr ss:\[ebp-8\],eax | |
|
||||
| 00404874 | EB B2 | jmp aboome2.404828 | |
|
||||
| 00404876 | 8B4D F8 | mov ecx,dword ptr ss:\[ebp-8\] | |
|
||||
| 00404879 | 51 | push ecx | p2 |
|
||||
| 0040487A | 8B55 F8 | mov edx,dword ptr ss:\[ebp-8\] | |
|
||||
| 0040487D | 52 | push edx | p2 |
|
||||
| 0040487E | 8B45 FC | mov eax,dword ptr ss:\[ebp-4\] | |
|
||||
| 00404881 | 50 | push eax | p1 |
|
||||
| 00404882 | 68 D0AC4100 | push aboome2.41ACD0 | 41ACD0:"%X-aboo-me-%X%i-SCA" |
|
||||
| 00404887 | 8D4D 94 | lea ecx,dword ptr ss:\[ebp-6C\] | |
|
||||
| 0040488A | 51 | push ecx | serial store here |
|
||||
| 0040488B | E8 E90A0000 | call \<aboome2.LibFun_sprintf\> | sprintf |
|
||||
| 00404890 | 83C4 14 | add esp,14 | |
|
||||
| 00404893 | 6A 64 | push 64 | |
|
||||
| 00404895 | 8D95 28FFFFFF | lea edx,dword ptr ss:\[ebp-D8\] | |
|
||||
| 0040489B | 52 | push edx | |
|
||||
| 0040489C | 68 ED030000 | push 3ED | |
|
||||
| 004048A1 | 8B45 08 | mov eax,dword ptr ss:\[ebp+8\] | |
|
||||
| 004048A4 | 50 | push eax | |
|
||||
| 004048A5 | FF15 E0204100 | call dword ptr ds:\[\<GetDlgItemTextA\>\] | |
|
||||
| 004048AB | 8D8D 28FFFFFF | lea ecx,dword ptr ss:\[ebp-D8\] | 用户输入的serial |
|
||||
| 004048B1 | 51 | push ecx | |
|
||||
| 004048B2 | 8D55 94 | lea edx,dword ptr ss:\[ebp-6C\] | 正确的serial |
|
||||
| 004048B5 | 52 | push edx | |
|
||||
| 004048B6 | FF15 0C204100 | call dword ptr ds:\[\<lstrcmpA\>\] | |
|
||||
| 004048BC | 8985 14FFFFFF | mov dword ptr ss:\[ebp-EC\],eax | |
|
||||
| 004048C2 | 83BD 14FFFFFF 00 | cmp dword ptr ss:\[ebp-EC\],0 | |
|
||||
| 004048C9 | 75 14 | jne \<aboome2.Jump22Useless\> | 主逻辑判断,Patch的话Patch这 |
|
||||
| 004048CB | 68 E4AC4100 | push aboome2.41ACE4 | 41ACE4:"Good Work! now make a keygen! " |
|
||||
| 004048D0 | 68 ED030000 | push 3ED | |
|
||||
| 004048D5 | 8B45 08 | mov eax,dword ptr ss:\[ebp+8\] | |
|
||||
| 004048D8 | 50 | push eax | |
|
||||
| 004048D9 | FF15 DC204100 | call dword ptr ds:\[\<SetDlgItemTextA\>\] | |
|
||||
| 004048DF | E9 86000000 | jmp \<aboome2.Jump2Useless\> | Jump22Useless |
|
||||
| 004048E4 | 6A 00 | push 0 | |
|
||||
| 004048E6 | 68 08AD4100 | push aboome2.41AD08 | 41AD08:"Aboo Me!" |
|
||||
| 004048EB | 68 14AD4100 | push aboome2.41AD14 | 41AD14:"Aboo Me - kiTo / SCA\nChiptune: svenzzon\nGFX: kiTo ;)\nGreetz: All members in SCA" |
|
||||
| 004048F0 | 8B4D 08 | mov ecx,dword ptr ss:\[ebp+8\] | |
|
||||
| 004048F3 | 51 | push ecx | |
|
||||
| 004048F4 | FF15 D8204100 | call dword ptr ds:\[\<MessageBoxA\>\] | |
|
||||
| 004048FA | EB 6E | jmp \<aboome2.Jump2Useless\> | |
|
||||
| 004048FC | 833D 7CC04100 00 | cmp dword ptr ds:\[41C07C\],0 | |
|
||||
| 00404903 | 75 3C | jne \<aboome2.sub_404941\> | |
|
||||
| 00404905 | E8 37FDFFFF | call \<aboome2.sub_404641\> | |
|
||||
| 0040490A | 6A 00 | push 0 | |
|
||||
| 0040490C | 68 44AC0000 | push AC44 | |
|
||||
| 00404911 | E8 8ACCFFFF | call \<aboome2.sub_4015A0\> | |
|
||||
| 00404916 | 83C4 08 | add esp,8 | |
|
||||
| 00404919 | 0FBED0 | movsx edx,al | |
|
||||
| 0040491C | 85D2 | test edx,edx | |
|
||||
| 0040491E | 75 02 | jne aboome2.404922 | |
|
||||
| 00404920 | EB 48 | jmp \<aboome2.Jump2Useless\> | |
|
||||
| 00404922 | 6A 00 | push 0 | |
|
||||
| 00404924 | 6A 00 | push 0 | |
|
||||
| 00404926 | E8 19C7FFFF | call \<aboome2.sub_401044\> | |
|
||||
| 0040492B | 83C4 08 | add esp,8 | |
|
||||
| 0040492E | A3 7CC04100 | mov dword ptr ds:\[41C07C\],eax | |
|
||||
| 00404933 | A1 7CC04100 | mov eax,dword ptr ds:\[41C07C\] | |
|
||||
| 00404938 | 50 | push eax | |
|
||||
| 00404939 | E8 D3C8FFFF | call \<aboome2.sub_401211\> | |
|
||||
| 0040493E | 83C4 04 | add esp,4 | |
|
||||
| 00404941 | EB 27 | jmp \<aboome2.Jump2Useless\> | sub_404941 |
|
||||
| 00404943 | 833D 7CC04100 00 | cmp dword ptr ds:\[41C07C\],0 | |
|
||||
| 0040494A | 74 1E | je \<aboome2.Jump2Useless\> | |
|
||||
| 0040494C | 8B0D 7CC04100 | mov ecx,dword ptr ds:\[41C07C\] | sub_40494C |
|
||||
| 00404952 | 51 | push ecx | |
|
||||
| 00404953 | E8 6FC7FFFF | call \<aboome2.sub_4010C7\> | |
|
||||
| 00404958 | 83C4 04 | add esp,4 | |
|
||||
| 0040495B | E8 D9CDFFFF | call \<aboome2.sub_401739\> | |
|
||||
| 00404960 | C705 7CC04100 00000000 | mov dword ptr ds:\[41C07C\],0 | |
|
||||
| 0040496A | EB 29 | jmp \<aboome2.Useless\> | Jump2Useless |
|
||||
| 0040496C | 833D 7CC04100 00 | cmp dword ptr ds:\[41C07C\],0 | |
|
||||
| 00404973 | 74 14 | je aboome2.404989 | |
|
||||
| 00404975 | 8B15 7CC04100 | mov edx,dword ptr ds:\[41C07C\] | |
|
||||
| 0040497B | 52 | push edx | |
|
||||
| 0040497C | E8 46C7FFFF | call \<aboome2.sub_4010C7\> | |
|
||||
| 00404981 | 83C4 04 | add esp,4 | |
|
||||
| 00404984 | E8 B0CDFFFF | call \<aboome2.sub_401739\> | |
|
||||
| 00404989 | 6A 00 | push 0 | |
|
||||
| 0040498B | 8B45 08 | mov eax,dword ptr ss:\[ebp+8\] | |
|
||||
| 0040498E | 50 | push eax | |
|
||||
| 0040498F | FF15 D4204100 | call dword ptr ds:\[\<EndDialog\>\] | |
|
||||
| 00404995 | 33C0 | xor eax,eax | Useless |
|
||||
| 00404997 | 8BE5 | mov esp,ebp | |
|
||||
| 00404999 | 5D | pop ebp | |
|
||||
| 0040499A | C2 1000 | ret 10 | |
|
39
abooMe/Solve.txt
Normal file
39
abooMe/Solve.txt
Normal file
@ -0,0 +1,39 @@
|
||||
(15>)Name.length>3
|
||||
ebp-E8: name <--User input
|
||||
ebp-74: length
|
||||
ebp-70: unknown
|
||||
ebp-4: part1(底下简称p1)
|
||||
ebp-8: part2(p2)
|
||||
arr0: 13 16 99 11 63 15 54 52 88 01 31 56 68 55 37 00 25 58 2D 61 62 6F 6F 2D 6D 65 2D 25 58 25 69 2D 53 43 41 00 47 6F 6F 64 20 57 6F 72 6B 21 20 6E 6F 77 20 6D 61 6B 65 20 61 20 6B 65 79 67 65 6E
|
||||
(多准备一些,以防万一)
|
||||
unknown=0
|
||||
while(unknown<length) {
|
||||
v1=unknown
|
||||
v2=name[v1]
|
||||
v4=arr0[v1+1]
|
||||
v4+=part1+v2
|
||||
part1=v4
|
||||
v6=name[v1]
|
||||
v6*=0xA
|
||||
part1+=v6
|
||||
unknown++
|
||||
}
|
||||
unknown=0
|
||||
while(unknown<length){
|
||||
ecx=arr0[unknown]
|
||||
ecx*=0xA
|
||||
part2+=ecx
|
||||
eax=name[2]
|
||||
edx=arr0[unknown]
|
||||
edx+=part2+eax
|
||||
part2=edx
|
||||
part2+=0x31337
|
||||
unknown++
|
||||
}
|
||||
|
||||
%X-aboo-me-%X%i-SCA
|
||||
%X,%X,%i
|
||||
p1 p2(十六进制) p2(十进制)
|
||||
1FBF 18B23B 1618491
|
||||
|
||||
1FBF-aboo-me-18B23B1618491-SCA -->True Serial
|
BIN
abooMe/aboome2.exe
Normal file
BIN
abooMe/aboome2.exe
Normal file
Binary file not shown.
23
abooMe/keygen/keygen1.deps.json
Normal file
23
abooMe/keygen/keygen1.deps.json
Normal 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
abooMe/keygen/keygen1.dll
Normal file
BIN
abooMe/keygen/keygen1.dll
Normal file
Binary file not shown.
BIN
abooMe/keygen/keygen1.exe
Normal file
BIN
abooMe/keygen/keygen1.exe
Normal file
Binary file not shown.
19
abooMe/keygen/keygen1.runtimeconfig.json
Normal file
19
abooMe/keygen/keygen1.runtimeconfig.json
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
7
abooMe/readme.txt
Normal file
7
abooMe/readme.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Keygen this and submit your solution to crackmes.de
|
||||
|
||||
Have phun...
|
||||
|
||||
- kiTo / SCA
|
||||
- http://sca.crk.se (for swedish crackers :)
|
||||
- kito.leet <A T> gmail.com
|
41
abooMe/source/keygen1.sln
Normal file
41
abooMe/source/keygen1.sln
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keygen2", "keygen2\keygen2.csproj", "{2446CB50-1882-4219-9DB0-E7F5517E6E20}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
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|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|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|x86.ActiveCfg = Debug|Any CPU
|
||||
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{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|x86.ActiveCfg = Release|Any CPU
|
||||
{2446CB50-1882-4219-9DB0-E7F5517E6E20}.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
|
131
abooMe/source/keygen1/Form1.Designer.cs
generated
Normal file
131
abooMe/source/keygen1/Form1.Designer.cs
generated
Normal file
@ -0,0 +1,131 @@
|
||||
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();
|
||||
SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
button1.Location = new Point(343, 2);
|
||||
button1.Name = "button1";
|
||||
button1.Size = new Size(143, 94);
|
||||
button1.TabIndex = 0;
|
||||
button1.Text = "Generate";
|
||||
button1.UseVisualStyleBackColor = true;
|
||||
button1.Click += Button1_Click;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
label1.AutoSize = true;
|
||||
label1.Location = new Point(12, 17);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(39, 15);
|
||||
label1.TabIndex = 1;
|
||||
label1.Text = "Name";
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
textBox1.Location = new Point(56, 14);
|
||||
textBox1.Name = "textBox1";
|
||||
textBox1.Size = new Size(281, 23);
|
||||
textBox1.TabIndex = 2;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
label2.AutoSize = true;
|
||||
label2.Location = new Point(24, 50);
|
||||
label2.Name = "label2";
|
||||
label2.Size = new Size(26, 15);
|
||||
label2.TabIndex = 3;
|
||||
label2.Text = "Key";
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
textBox2.Location = new Point(56, 47);
|
||||
textBox2.Name = "textBox2";
|
||||
textBox2.Size = new Size(281, 23);
|
||||
textBox2.TabIndex = 4;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
label3.AutoSize = true;
|
||||
label3.Location = new Point(262, 78);
|
||||
label3.Name = "label3";
|
||||
label3.Size = new Size(75, 15);
|
||||
label3.TabIndex = 5;
|
||||
label3.Text = "By Chenx221";
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
checkBox1.AutoSize = true;
|
||||
checkBox1.Location = new Point(56, 78);
|
||||
checkBox1.Name = "checkBox1";
|
||||
checkBox1.Size = new Size(86, 19);
|
||||
checkBox1.TabIndex = 6;
|
||||
checkBox1.Text = "Auto Mode";
|
||||
checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(491, 103);
|
||||
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 abooMe";
|
||||
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;
|
||||
}
|
||||
}
|
133
abooMe/source/keygen1/Form1.cs
Normal file
133
abooMe/source/keygen1/Form1.cs
Normal file
@ -0,0 +1,133 @@
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
||||
|
||||
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不能为空");
|
||||
Generate(textBox1.Text);
|
||||
}
|
||||
|
||||
private void Generate(string username)
|
||||
{
|
||||
if (username.Length <= 3)
|
||||
{
|
||||
MessageBox.Show("Name长度需大于3位");
|
||||
return;
|
||||
}
|
||||
string key = GenerateKey(username);
|
||||
textBox2.Text = key;
|
||||
if (checkBox1.Checked) AutoMode(username, key);
|
||||
}
|
||||
|
||||
private static string GenerateKey(string name)
|
||||
{
|
||||
int length = name.Length;
|
||||
|
||||
byte[] arr0 =
|
||||
[
|
||||
0x13, 0x16, 0x99, 0x11, 0x63, 0x15, 0x54, 0x52, 0x88, 0x01, 0x31, 0x56, 0x68, 0x55, 0x37, 0x00,
|
||||
0x25, 0x58, 0x2D, 0x61, 0x62, 0x6F, 0x6F, 0x2D, 0x6D, 0x65, 0x2D, 0x25, 0x58, 0x25, 0x69, 0x2D,
|
||||
0x53, 0x43, 0x41, 0x00, 0x47, 0x6F, 0x6F, 0x64, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x21, 0x20, 0x6E,
|
||||
0x6F, 0x77, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x67, 0x65, 0x6E
|
||||
];
|
||||
|
||||
int unknown = 0;
|
||||
int part1 = 0;
|
||||
int part2 = 0;
|
||||
|
||||
while (unknown < length)
|
||||
{
|
||||
int v1 = unknown;
|
||||
byte v2 = (byte)name[v1];
|
||||
int v4 = arr0[v1 + 1];
|
||||
v4 += part1 + v2;
|
||||
part1 = v4;
|
||||
int v6 = (byte)name[v1];
|
||||
v6 *= 0xA;
|
||||
part1 += v6;
|
||||
unknown++;
|
||||
}
|
||||
|
||||
unknown = 0;
|
||||
|
||||
while (unknown < length)
|
||||
{
|
||||
int ecx = arr0[unknown];
|
||||
ecx *= 0xA;
|
||||
part2 += ecx;
|
||||
byte eax = (byte)name[2]; // Assuming the index 2 is intended
|
||||
int edx = arr0[unknown];
|
||||
edx += part2 + eax;
|
||||
part2 = edx;
|
||||
part2 += 0x31337;
|
||||
unknown++;
|
||||
}
|
||||
|
||||
string hexPart1 = part1.ToString("X");
|
||||
string hexPart2 = part2.ToString("X");
|
||||
string decimalPart2 = part2.ToString();
|
||||
|
||||
string result = $"{hexPart1}-aboo-me-{hexPart2}{decimalPart2}-SCA";
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void AutoMode(string username, string key)
|
||||
{
|
||||
string windowTitle = "Aboo Me - kiTo / SCA";
|
||||
IntPtr hWnd = FindWindow(null, windowTitle);
|
||||
|
||||
if (hWnd == IntPtr.Zero)
|
||||
{
|
||||
MessageBox.Show("窗口未找到");
|
||||
return;
|
||||
}
|
||||
int usernameControlId = 1000;
|
||||
int keyControlId = 1005;
|
||||
int submitButtonId = 1003;
|
||||
|
||||
IntPtr usernameHwnd = GetDlgItem(hWnd, usernameControlId);
|
||||
IntPtr keyHwnd = GetDlgItem(hWnd, keyControlId);
|
||||
IntPtr submitButtonHwnd = GetDlgItem(hWnd, submitButtonId);
|
||||
|
||||
if (usernameHwnd == IntPtr.Zero || keyHwnd == IntPtr.Zero || submitButtonHwnd == IntPtr.Zero)
|
||||
{
|
||||
MessageBox.Show("控件未找到");
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder usernameToSet = new(username);
|
||||
StringBuilder keyToSet = new(key);
|
||||
|
||||
SendMessage(usernameHwnd, WM_SETTEXT, IntPtr.Zero, usernameToSet);
|
||||
SendMessage(keyHwnd, WM_SETTEXT, IntPtr.Zero, keyToSet);
|
||||
SendMessage(submitButtonHwnd, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
|
||||
}
|
||||
}
|
||||
}
|
120
abooMe/source/keygen1/Form1.resx
Normal file
120
abooMe/source/keygen1/Form1.resx
Normal 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>
|
17
abooMe/source/keygen1/Program.cs
Normal file
17
abooMe/source/keygen1/Program.cs
Normal 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());
|
||||
}
|
||||
}
|
||||
}
|
29
abooMe/source/keygen1/keygen1.csproj
Normal file
29
abooMe/source/keygen1/keygen1.csproj
Normal file
@ -0,0 +1,29 @@
|
||||
<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</Platforms>
|
||||
</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)'=='Release|AnyCPU'">
|
||||
<DebugType>portable</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
||||
<DebugType>portable</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
Loading…
Reference in New Issue
Block a user