Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.
[gelöst][CrackIt]iNootePad leaked! Diskussion: [gelöst][CrackIt]iNootePad leaked! im Forum Hacks & Crackmes , in der Kategorie Software Home; Anzeige
Worum gehts?
Der ein oder andere düfte die "Exklisive-Tools-fuer-Exklusive-Leute" Produktreihe kennen. Ich habe mir den iNootePad gekauft und möchte ...
03.04.11, 21:35
#1 (permalink )
Moderator
Registriert seit: 20.07.05
Likes: 202
[gelöst][CrackIt]iNootePad leaked! Anzeige
Worum gehts?
Der ein oder andere düfte die "Exklisive-Tools-fuer-Exklusive-Leute" Produktreihe kennen. Ich habe mir den iNootePad gekauft und möchte euch diesen nicht vorenthalten
(außerdem möchte ich es auch auf meinem Notebook verwenden, was nur mit einer weiteren Lizenz machbar wäre - und ich bin nun mal kein Krösus
)
Zitat:
iNootePad Texteditor ist eine exklusive und qualitativ
hochwertige Software zum Bearbeiten von Texten!
...
<iNootePad Texteditor> ist eine hervorragende und qualitativ hochwertige Software!
Exklusive Anfertigung für die, die sich nicht mit der schnörkellosen Standardsoftware
zufrieden geben und sich eine Alternative leisten wollen und können!
In der Zip ist die Software samt meiner Key-Datei. Die Key-Datei wurde für den Code 84412832DFE6ECE6 generiert. Ich hoffe, das hilft euch weiter.
Gesucht ist ein Patch/Crack, so dass die Software überall läuft.
Cool wäre es, wenn für die gepatchte/gecrackte Version mein Key/Code nicht mehr gebraucht wird.
Ein KeyGen wäre natürlich ganz fein - aber wohl auch am schwierigsten umzusetzen.
Angehängte Grafiken Angehängte Dateien
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
27.07.11, 21:53
#2 (permalink )
Registriert seit: 27.09.05
Likes: 4
Den HWID-Check zu patchen ging recht flott, Deine Lizenz sollte jetzt auf jedem Rechner laufen. Der Rest muss noch ein wenig warten
.
Edit: Der neue Patch kommt komplett ohne Keyfile aus.
Geändert von ReDoX (28.07.11 um 17:42 Uhr)
HaBOT
- Anzeige -
29.07.11, 23:21
#3 (permalink )
Registriert seit: 27.09.05
Likes: 4
Nach 1.5 Jahren ist es soweit, der Keygen fuer das "Exklisive-Tools-fuer-Exklusive-Leute"-Produkt ist da! Ich hoffe Du hast Dir noch keine zweite Lizenz gekauft und kannst noch was damit anfangen
.
Inwieweit war diese Version vereinfacht? Hast du die original Version noch bei dir rumfliegen?
Source
Code:
program Keygen;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
MessageDigest_5;
type
TKey = packed record
Key: Int64;
function toString: AnsiString;
end;
PKey = ^TKey;
TKeyData = packed record
SaveSettings, SplashOK, RemoveBuyMenu, StoreFile: TKey;
procedure Swap();
end;
PKeyData = ^TKeyData;
const
SaveSettings: AnsiString = #$5B#$88#$A7#$0C#$2F#$DB#$E6#$E6#$8C#$1F#$17#$59;
SaveSettings_PW: TKey = (Key: 5137726410356843158);
SplashOK: AnsiString = #$5A#$1B#$F8#$DD#$07#$20#$E1#$8F;
SplashOK_PW: TKey = (Key: 683507419627418371);
RemoveBuyMenu: AnsiString = #$C9#$59#$9F#$99#$92#$F9#$6E#$15#$AD#$DB#$CB#$2C#$16;
RemoveBuyMenu_PW: TKey = (Key: -5742440621766567094);
StoreFile: AnsiString = #$B0#$43#$B0#$84#$44#$BE#$8C#$48#$A5;
StoreFile_PW: TKey = (Key: 549173212267554849);
procedure TKeyData.Swap;
function Int64Swap(A : int64):int64;
asm
mov edx,dword ptr [A]
mov eax,dword ptr [A+4]
bswap edx
bswap eax
end;
begin
SaveSettings.Key := Int64Swap(SaveSettings.Key);
SplashOK.Key := Int64Swap(SplashOK.Key);
RemoveBuyMenu.Key := Int64Swap(RemoveBuyMenu.Key);
StoreFile.Key := Int64Swap(StoreFile.Key);
end;
function TKey.toString: AnsiString;
begin
result := IntToHex(Key, SizeOf(Key) * 2);
end;
procedure Crypt(Table, Source, Dest: Pointer; Len: Integer); assembler;
asm
// PUSH EBP
// MOV EBP, ESP
SUB ESP,020h
MOV DWORD PTR SS:[EBP-020h],EBX
MOV DWORD PTR SS:[EBP-01Ch],ESI
MOV DWORD PTR SS:[EBP-4],EAX
MOV DWORD PTR SS:[EBP-8],EDX
MOV DWORD PTR SS:[EBP-0Ch],ECX
MOV EAX,DWORD PTR SS:[EBP+8]
DEC EAX
MOV DWORD PTR SS:[EBP-010h],0
CMP EAX,DWORD PTR SS:[EBP-010h]
JL @iNootePa_00421C44
DEC DWORD PTR SS:[EBP-010h]
@iNootePa_00421BAC:
INC DWORD PTR SS:[EBP-010h]
MOV EDX,DWORD PTR SS:[EBP-4]
INC BYTE PTR DS:[EDX+0100h]
MOV ECX,DWORD PTR SS:[EBP-4]
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR DS:[EDX+0100h]
MOV DL,BYTE PTR DS:[ECX+EDX]
MOV BYTE PTR SS:[EBP-014h],DL
MOV EDX,DWORD PTR SS:[EBP-4]
MOV CL,BYTE PTR SS:[EBP-014h]
ADD BYTE PTR DS:[EDX+0101h],CL
MOV ESI,DWORD PTR SS:[EBP-4]
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR DS:[EDX+0101h]
MOV ECX,DWORD PTR SS:[EBP-4]
MOV EBX,DWORD PTR SS:[EBP-4]
MOVZX EBX,BYTE PTR DS:[EBX+0100h]
MOV DL,BYTE PTR DS:[ESI+EDX]
MOV BYTE PTR DS:[ECX+EBX],DL
MOV EBX,DWORD PTR SS:[EBP-4]
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR DS:[EDX+0101h]
MOV CL,BYTE PTR SS:[EBP-014h]
MOV BYTE PTR DS:[EBX+EDX],CL
MOV ECX,DWORD PTR SS:[EBP-4]
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR DS:[EDX+0100h]
MOV DL,BYTE PTR DS:[ECX+EDX]
ADD BYTE PTR SS:[EBP-014h],DL
MOV ESI,DWORD PTR SS:[EBP-8]
MOV ECX,DWORD PTR SS:[EBP-010h]
MOV EBX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR SS:[EBP-014h]
MOV CL,BYTE PTR DS:[ESI+ECX]
MOV DL,BYTE PTR DS:[EBX+EDX]
XOR CL,DL
MOV EBX,DWORD PTR SS:[EBP-0Ch]
MOV EDX,DWORD PTR SS:[EBP-010h]
MOV BYTE PTR DS:[EBX+EDX],CL
CMP EAX,DWORD PTR SS:[EBP-010h]
JG @iNootePa_00421BAC
@iNootePa_00421C44:
MOV EBX,DWORD PTR SS:[EBP-020h]
MOV ESI,DWORD PTR SS:[EBP-01Ch]
LEAVE
RET 4
end;
procedure CreateCryptTable(Dest: Pointer; Password: AnsiString); assembler;
asm
PUSH EBP
MOV EBP, ESP
SUB ESP,024h
MOV DWORD PTR SS:[EBP-024h],EBX
MOV DWORD PTR SS:[EBP-4],EAX
MOV DWORD PTR SS:[EBP-8],EDX
MOV EAX,DWORD PTR SS:[EBP-8]
TEST EAX,EAX
JE @loc_421AB9
MOV EAX,DWORD PTR DS:[EAX-4]
@loc_421AB9:
MOV DWORD PTR SS:[EBP-020h],EAX
MOV EAX,DWORD PTR SS:[EBP-4]
MOV BYTE PTR DS:[EAX+0100h],0
MOV EAX,DWORD PTR SS:[EBP-4]
MOV BYTE PTR DS:[EAX+0101h],0
MOV BYTE PTR SS:[EBP-010h],0
DEC BYTE PTR SS:[EBP-010h]
NOP
@loc_421AD8:
INC BYTE PTR SS:[EBP-010h]
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR SS:[EBP-010h]
MOV CL,BYTE PTR SS:[EBP-010h]
MOV BYTE PTR DS:[EDX+EAX],CL
CMP BYTE PTR SS:[EBP-010h],0FFh
JB @loc_421AD8
MOV BYTE PTR SS:[EBP-0Ch],0
MOV DWORD PTR SS:[EBP-01Ch],0
MOV BYTE PTR SS:[EBP-010h],0
DEC BYTE PTR SS:[EBP-010h]
@loc_421B00:
INC BYTE PTR SS:[EBP-010h]
MOV EAX,DWORD PTR SS:[EBP-01Ch]
MOV EDX,DWORD PTR SS:[EBP-020h]
CMP EAX,EDX
JGE @loc_421B1B
MOV EAX,DWORD PTR SS:[EBP-8]
MOV EDX,DWORD PTR SS:[EBP-01Ch]
MOV AL,BYTE PTR DS:[EAX+EDX]
MOV BYTE PTR SS:[EBP-018h],AL
JMP @loc_421B1F
@loc_421B1B:
MOV BYTE PTR SS:[EBP-018h],0
@loc_421B1F:
INC DWORD PTR SS:[EBP-01Ch]
MOV EAX,DWORD PTR SS:[EBP-01Ch]
MOV EDX,DWORD PTR SS:[EBP-020h]
CMP EAX,EDX
JL @loc_421B33
MOV DWORD PTR SS:[EBP-01Ch],0
@loc_421B33:
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR SS:[EBP-010h]
MOVZX EAX,BYTE PTR DS:[EDX+EAX]
MOVZX EDX,BYTE PTR SS:[EBP-018h]
ADD EAX,EDX
ADD BYTE PTR SS:[EBP-0Ch],AL
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR SS:[EBP-010h]
MOV AL,BYTE PTR DS:[EDX+EAX]
MOV BYTE PTR SS:[EBP-014h],AL
MOV ECX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR SS:[EBP-0Ch]
MOV EBX,DWORD PTR SS:[EBP-4]
MOVZX EDX,BYTE PTR SS:[EBP-010h]
MOV AL,BYTE PTR DS:[ECX+EAX]
MOV BYTE PTR DS:[EBX+EDX],AL
MOV EDX,DWORD PTR SS:[EBP-4]
MOVZX EAX,BYTE PTR SS:[EBP-0Ch]
MOV CL,BYTE PTR SS:[EBP-014h]
MOV BYTE PTR DS:[EDX+EAX],CL
CMP BYTE PTR SS:[EBP-010h],0FFh
JB @loc_421B00
MOV EBX,DWORD PTR SS:[EBP-024h]
LEAVE
RETN
end;
function CryptWrapper(Table: Pointer; s: AnsiString): AnsiString;
begin
result := s;
Crypt(Table, @result[1], @result[1], length(s));
end;
function DecryptString(s, Key: AnsiString): AnsiString;
var
CT: array [0..257] of byte;
begin
CreateCryptTable(@CT, Key);
result := CryptWrapper(@CT, s);
end;
function CheckKey(HWID: AnsiString; pKeyData: PKeyData): Integer;
var
CT: array [0..257] of byte;
KeyData: TKeyData;
s: AnsiString;
i: Integer;
begin
CreateCryptTable(@CT, HWID);
Crypt(@CT, pKeyData, @KeyData, SizeOf(KeyData));
KeyData.Swap;
result := ((Integer(DecryptString(SaveSettings, KeyData.SaveSettings.toString()) = 'SaveSettings') shl 3) or
(Integer(DecryptString(SplashOK, KeyData.SplashOK.toString()) = 'SplashOK') shl 2) or
(Integer(DecryptString(RemoveBuyMenu, KeyData.RemoveBuyMenu.toString()) = 'RemoveBuyMenu') shl 1) or
(Integer(DecryptString(StoreFile, KeyData.StoreFile.toString()) = 'StoreFile')) shl 0);
end;
function CreateKey(HWID: AnsiString): TKeyData;
var
CT: array [0..257] of byte;
i: integer;
begin
result.SaveSettings.Key := SaveSettings_PW.Key;
result.SplashOK.Key := SplashOK_PW.Key;
result.RemoveBuyMenu.Key := RemoveBuyMenu_PW.Key;
result.StoreFile.Key := StoreFile_PW.Key;
result.Swap;
CreateCryptTable(@CT, HWID);
Crypt(@CT, @result, @result, SizeOf(result));
end;
function GetHardwareID(): AnsiString;
var
Buffer: array [0..MAX_PATH] of AnsiChar;
len: DWord;
Computer, User, s: AnsiString;
MD5: IMD5;
begin
len := length(buffer);
GetComputerNameA(Buffer, len);
SetString(Computer, Buffer, len);
len := length(buffer);
GetUserNameA(Buffer, Len);
SetString(User, Buffer, len);
s := trim(User) + trim(Computer);
MD5 := GetMD5;
MD5.Init;
MD5.Update(s);
result := copy(MD5.AsString, 1, 16);
end;
var
KeyData: TKeyData;
HWID, FileName: AnsiString;
h, written: DWord;
begin
if (ParamCount() = 1) then
HWID := ParamStr(1)
else
HWID := GetHardwareID();
writeln('Erstelle Keyfile fuer HWID: ', HWID);
KeyData := CreateKey(HWID);
if (CheckKey(HWID, @KeyData) = 15) then
begin
h := CreateFileA(PAnsiChar(AnsiString(ExtractFilePath(paramstr(0)) + 'key.dat')), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0);
if (h <> INVALID_HANDLE_VALUE) then
begin
WriteFile(h, KeyData, SizeOf(KeyData), written, nil);
CloseHandle(h);
writeln('Keyfile erstellt.');
end
else
writeln('Konnte Keyfile nicht erstellen.');
end
else
writeln('Konnte kein gueltiges Keyfile erstellen :(.');
readln;
end.
Gruß,
redox
30.07.11, 00:47
#4 (permalink )
Moderator
Themenstarter
Registriert seit: 20.07.05
Likes: 202
Sehr schön
Die Originalversion wird keinen Spass machen, sofern man das Prinzip raus hat. Diese hatte keine beigelegte Keydatei (allerdings durch einen "Programmierfehler" kürzere Teilkeys - damit war ein Bruteforceangriff auch ohne ein Rechencluster möglich
)
Eine Musterlösung (wobei diese bei eigenen Programmen immer etwas suboptimal zu schreiben ist)
Angehängte Grafiken Angehängte Dateien
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
- Anzeige -
[HaBo]
» Software Home
» Hacks & Crackmes
»
[gelöst][CrackIt]iNootePad leaked!
Themen-Optionen Ansicht Linear-Darstellung
Forumregeln
Es ist Ihnen nicht erlaubt , neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt , auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt , Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt , Ihre Beiträge zu bearbeiten.
HTML-Code ist aus .