| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: Arthis Crackme "delta7" im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hi, mal ein neues Crackme von mir ! 1. Wie immer in VB6 2. Anti Loader, Debugger, Patcher etc. ...
![]() |
| | #1 (permalink) |
| gesperrt Registriert seit: 17.02.05 ![]() Likes: 0 | Arthis Crackme "delta7" Anzeige Hi, mal ein neues Crackme von mir ! ![]() 1. Wie immer in VB6 2. Anti Loader, Debugger, Patcher etc. Subroutinen 3. Double-String Encryption? Technologie ( selbst Entwickelt 4. Freeware EXE-Protector ( modifiziert ) --> Bei Antivir, NOD32 und evtl. Bitdefender Engines kann es zu ( FALSCHEN ) Virenmeldungen kommen ! 5. Und vieles mehr... |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 21.01.04 ![]() Likes: 0 | Es trägt zwar jetzt nicht wirklich etwas zum Thema bei aber darf ich trotzdem mal fragen warum du das Ganze "Arthis Crackme" nennst? Wäre "satres Crackme" nicht angebrachter? |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| gesperrt Themenstarter Registriert seit: 17.02.05 ![]() Likes: 0 | Weil ich als "Arthi" mit den Crackmes angefangen habe. Außerdem ist "Arthi" weltweit in der Hacker, Cracker, Crackmes und Warez Szene besser bekannt als "sartre". |
| | |
| | #4 (permalink) |
| Member of Honour ![]() Registriert seit: 04.09.04 ![]() Likes: 0 | LOL. Arthi, sonst gehts dir aber gut, ja? |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | wennn die Serial nicht Systemabhängig ist: 889875 nicht wahr, Peter Serial finden: Crackme öffnen, irgendwas eintippen, in Olly attachen, BP auf 733B8E2C F9 bis es läuft, "Registrieren". Plop - im Stack kann man die richtige Seraial auslesen. Hatte die übrigens schon relativ früh - konnte aber nicht glauben dass es die Serial sein kann, weil die so kurz ist Hab übrigens die Exe weder entpackt noch irgendwie sonst beeinflüsst, micht würde allerdings interessieren wozu da WriteProcessMemory,CreateToolhelp32Snapshot &Co drine sind. Wer Die Crackme selber lösen will, muss sich ja die Lösung nicht anschauen
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #6 (permalink) |
| gesperrt Themenstarter Registriert seit: 17.02.05 ![]() Likes: 0 | Ja, der PC ist auf den Namen "Peter" registriert ! ![]() PS: Hey, ich glaube das Du uns was vormachst ! Wie komme ich denn auf 733B8E2C ? - So weit reicht die EXE doch garnicht ! Und ohne den Crypter zu entpacken ? - Wenn ich Deinen Anweisungen folge, schließt sich mein Crackme sofort, selbst wenn ich F8 bzw. F7 zum Step Into/Over gehe ! Nein, Du arbeitest ganz sicher NICHT mit Olly. Mein Programm enthält spezielle Anti-Olly Sub´s und der Crypter sicherlich auch ! Außerdem ist mein Prog absichtlich in P-Code kompiliert worden. Wenn, dann ginge es ( NACH dem entpacken ) nur noch mit WKTVBDE. Und dagegen ist es auch geschützt ! Also da stimmt was nicht ! |
| | |
| | #7 (permalink) | |||
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Zitat:
Zitat:
Um alle "Memoryadressräume" zu sehen gehe in Olly unter "View"->"memory" Mit GOTO kommt man immer zu einer gültigen Speicherstelle. Zitat:
Genauere Anletung: Crackme öffnen, was eintippen, in Olly attachen. Jetzt landet man bei 77F62838 6A 08 PUSH 8 (Hab in Olly unter Einstellungen "Break on new thread/DLL" an und BP bei WinMain) das ist wohl die Nachrichtenschleife oder ähnliches. Jetzt kannst Du unter "View"-> "Memory" viele schöne speicherbereiche auswählen. Aber man kann auch ein goto 401000 machen (deine EXE). Hier findet man recht schnell die Import Table (binary string suche nach FF 25 was ein far Jump ist). Code: 00401066 -FF25 14104000 JMP DWORD PTR DS:[401014] 0040106C -FF25 50104000 JMP DWORD PTR DS:[401050] 00401072 -FF25 3C104000 JMP DWORD PTR DS:[40103C] 00401078 -FF25 54104000 JMP DWORD PTR DS:[401054] 0040107E -FF25 20104000 JMP DWORD PTR DS:[401020] 00401084 -FF25 24104000 JMP DWORD PTR DS:[401024] 0040108A -FF25 08104000 JMP DWORD PTR DS:[401008] 00401090 -FF25 1C104000 JMP DWORD PTR DS:[40101C] 00401096 -FF25 58104000 JMP DWORD PTR DS:[401058] 0040109C -FF25 44104000 JMP DWORD PTR DS:[401044] 004010A2 -FF25 0C104000 JMP DWORD PTR DS:[40100C] 004010A8 -FF25 18104000 JMP DWORD PTR DS:[401018] 004010AE -FF25 4C104000 JMP DWORD PTR DS:[40104C] 004010B4 -FF25 10104000 JMP DWORD PTR DS:[401010] 004010BA -FF25 04104000 JMP DWORD PTR DS:[401004] 004010C0 -FF25 38104000 JMP DWORD PTR DS:[401038] 004010C6 -FF25 34104000 JMP DWORD PTR DS:[401034] 004010CC -FF25 28104000 JMP DWORD PTR DS:[401028] 004010D2 -FF25 30104000 JMP DWORD PTR DS:[401030] 004010D8 -FF25 00104000 JMP DWORD PTR DS:[401000] 004010DE -FF25 40104000 JMP DWORD PTR DS:[401040] 004010E4 -FF25 48104000 JMP DWORD PTR DS:[401048] Code: 00400FF4 EE 05 49 73 îIs
00401004 83 A6 47 73 6C AB 47 73 69 1C 47 73 9E 1C 47 73 ??Gsl?GsiGsžGs
00401014 96 20 47 73 A3 7B 3B 73 CD AB 47 73 A3 45 3B 73 ? Gs?{;sÍ?Gs?E;s
00401024 FB A5 47 73 FF CF 3A 73 78 B2 3A 73 E9 E6 3B 73 ??Gs??:sx?:sé?;s
00401034 6D 59 46 73 1F 4B 3B 73 F3 54 47 73 5D E0 48 73 mYFsK;sóTGs]?Hs
00401044 C1 17 47 73 12 DE 39 73 D2 1B 47 73 B5 46 3B 73 ÁGs?9s?Gs?F;s auf alle ein F2 (BP setzen). Und F9 zum ausführen. Nach ein paar F9s kann man "Registriern" betätigen und landet auf einem BP. Jetzt mit F9 einfach immer weiter bis man eine Exception reingewürgt kriegt. Hier siehe man ins Stackfenster: Code: 0012F494 001A738C UNICODE "452291" 0012F498 001A73B4 UNICODE "141476" 0012F49C 001A7594 UNICODE "951141" 0012F4A0 001A79BC UNICODE "514321" 0012F4A4 0012F534 0012F4A8 0012F604 0012F4AC 00000001 0012F4B0 77D17576 RETURN to 77D17576 from 77D174D6 0012F4B4 7101069F 0012F4B8 005CBA30 UNICODE "Registrieren !" noch mal SHIFT F9 und man darf den laufzeitfehler "0" wegklicken, danach beendet sich die Crackme. Nochmal öffen, pass rein und diesesmal im Dumpfenster ein GOTO 001a738C machen. Hier großzügig einen Speicherbereich markieren(ist eben der heap und die aderessen müssen nicht zwangsläufig immer dieselben sein) und einen BP "Memory on access" setzen. F9 und "registrieren". Nach einiger Zeit stellt man fest dass die Nummer nichts damit zu tun haben, aber man kommt mal auf die Idee nach dem usernamen zu suchen. Der wird übrigens schon bei der Eingabe eingelesen. Naja, jetzt F9 und auf die Exeption warten. Jetzt STRG+B und nach dem Benutzernahmen in UNICODE suchen: Code: 001A747C 63 00 64 00 77 00 63 00 64 00 77 00 00 c.d.w.c.d.w.. Code: 0012F3BC /0012F3E0 0012F3C0 |7716C0DE RETURN to 7716C0DE from 77168DE7 0012F3C4 |001A747C UNICODE "cdwcdw" 0012F3C8 |03040105 0012F3CC |01010102 0012F3D0 |77F60104 0012F3D4 |00000006 0012F3D8 |00001FFF 0012F3DC |00000000 0012F3E0 ]0012F528 0012F3E4 |733B450B RETURN to 733B450B from 7716C0CF 0012F3E8 |001A747C UNICODE "cdwcdw" 0012F3EC |001A7454 UNICODE "889875" 0012F3F0 |00000000 0012F3F4 |00030001 0012F3F8 |733B8E46 RETURN to 733B8E46 from 733B44E9 0012F3FC |00000000 0012F400 |001A7454 UNICODE "889875" 0012F404 |001A747C UNICODE "cdwcdw" 0012F408 |7348E942 RETURN to 7348E942 from 733B8E2C 0012F40C |00000000 0012F410 |001A7454 UNICODE "889875" 0012F414 |001A747C UNICODE "cdwcdw" Code: 7716C278 33C0 XOR EAX,EAX 7716C27A F3:66:A7 REPE CMPS WORD PTR ES:[EDI],WORD PTR DS:> 7716C27D 74 05 JE SHORT 7716C284 Und jetzt die Preisfrage wie ich auf 733b8e2c komme: Stackfenster etwas runterscrollen: Code: 0012F3F8 |733B8E46 RETURN to 733B8E46 from 733B44E9 0012F3FC |00000000 0012F400 |001A7454 UNICODE "889875" 0012F404 |001A747C UNICODE "cdwcdw" 0012F408 |7348E942 RETURN to 7348E942 from 733B8E2C 0012F40C |00000000 0012F410 |001A7454 UNICODE "889875" 0012F414 |001A747C UNICODE "cdwcdw" Für die Wissbegieriegen: wir gehen mal auf die 733B8E46 im CPU-Fenser und scrollen hoch bis: Code: 733B8E38 FF7424 0C PUSH DWORD PTR SS:[ESP+C] 733B8E3C FF7424 0C PUSH DWORD PTR SS:[ESP+C] 733B8E40 50 PUSH EAX >>>>733B8E41 E8 A3B6FFFF CALL 733B44E9<<<< 733B8E46 C2 0C00 RETN 0C 733B8E49 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4] ein goto:733B8E46 was steht da? Code: 733B8E40 . 50 PUSH EAX >>>]733B8E41 . E8 A3B6FFFF CALL msvbvm60.__vbaStrComp<<<< 733B8E46 . C2 0C00 RETN 0C So, jetzt hab ich mich wieder rausgeredet, damit ich mein Super_Hypertool nicht preisgeben muss, welches eigentlich solche Crackmes automatisch anlysiert ![]() WKTVBDE kannte ich gar nicht, leider ist auch die offizielle Seite nicht mehr da (war das kostenlos? wenn ja kennt jemand einen Link drauf?) . Das Ding wäre ganz nützlich. Der P-Code muss übrigens trotzdem ausgeführt werden - von der VB Virtual Machine. Einer Referenz dafür und man könnte den auch so lesen. Aber ich dachte der Crackmeersteller muss immer seine Crackmes auch selber cracken können, oder irre ich mich ? Gilt es jetzt möglichst viele Schutzmechanismen draufzuknallen deren Arbeitsweise man gar nicht versteht und dann zu behaupten es wäre unknackbar (man verzeihe mir die Bissigkeit, aber das musste auch mal sein). Soll ich mal eine Crackme schreiben welche auch niemand knacken kann? Ganz ohne Packer. Ich lasse nur die eingegebene Serial per MD5 haschen und die restlichen Jumps im Programm sind Serialabhängig - wer die nicht kennt, der kennt die nicht ![]() PS: in der letzen Woche habe ich wahrscheinlich mehr Crackmes gemacht als in den letzen 2 Jahren. Die sind zwar eine Art Hobby, vertieft habe ich es nie. Etwas Systemkenntniss und grobe Kenntnisse der Funktionsweise von Windows-executables reichen für die meisten Crackmes gut aus *auf andere Crackmes in diesem Unterforum schiel*. Für manche muss man eben etwas tiefer in die Trickkiste greifen (wie mit der DLL). Der Witz an der Sache ist dass ich durch Crackmes erst zum Programmieren gekommen bin - und mich auch für Assembly interessiert hab.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |||
| | |
| | #8 (permalink) | |
| Member of Honour ![]() Registriert seit: 02.04.05 ![]() ![]() ![]() Likes: 76 | Zitat:
Kannst es ja mal probieren: http://home.arcor.de/neotracer/Serial.rar Damit du dir nicht die Zähne daran ausbeisst hier die Begründung, warum es unknackbar ist: Ok, ich gebe zu meine Demo ist echt hinterhältig. 1.) sollte sie nur EINE Serial zulassen, was demzufolge einem Verschlüsselungsalgorithmus mit einem Passwort entspricht. D.h. nicht das ich dies nicht ändern könnte. Es wären also auch mehrere Serials als Passwörter möglich ohne die jetzige Sicherheit zu reduzieren. 2.) für jedes System das nur softwarebasiert arbeitet kann man sagen das es 100%'tig knackbar sein muß. 3.) jedes System das einbruchssichere Hardware benutzt, und korrekt konzipiert wurde, kann man beweisen das es 100%'tig sicher sein muß. 4.) die Demo entschlüsselt ihren ausführbaren Code mit dem Serialkey. Dieser Code lädt die verschlüsselte Resource des TForm2 und erzeugt es. Der dafür nötige Schlüssel ist 256 Byte groß und absolut Zufällig. Er steht im Codesegment an erster Stelle des verschlüsselten Codes zur Erzeugung des TForm2. D.h. 256Bytes = 2048Bits = 2^2048 verschiedene Schlüssel und somit ist eine Bruteforce Attacke auf die DFM von TForm2 absolt ausgeschlossen. Gleichzeitig dienen diese 256 Bytes als Zufallsmuster um den eigentlichen TForm2-Erzeugungscode zu schützen. Da ja dieser Key + dem TForm2 Code ebenfalls durch die Serial verschlüsselt wurde. Wird eine Serial eingegeben so wird nun dieser DFM Key + der Code zur Erzeugung des TForm2 entschlüsselt. Danach wird, egal ob der Key korrekt war oder nicht, dieser entschlüsselte Code aufgerufen. Asserbad, ich nehme mal an das dein Debugger/EXE des öfteren abgekackt ist. Tja, ohne richtige Serial ?! Soll heissen, mit falscher Serial wird inkorrekter Code erzeugt der natürlich zum Absturz führen kann. Ok, an eurem System wird nichts kaputt gehen, dazu habe ich einen harten SEH reingebaut. 5.) der Verschlüsselungsalgorithmus selber ist mein PMC = Polymorph Cipher. Er erzeugt sich ständig veränderlichen Maschinencode der als Verschlüsselungsalgorithmus dient. Der Key und die Message bestimmen also mit welchem Code verschlüsselt wird. Jeder 32 Bytes Message Block wird durch einen anderen 8Kb-128kb Maschinencode ent/verschlüsselt. Die DFM Resource von TForm2 ist 16Kb / 32 * (8Kb + 256 *4) ~4.5Mb Verschlüsselungscode. Wird also die 16Kb DFM Resource entschlüsselt so produziert der PMC 4.5 Mb Maschinencode um diesen zu entschlüsseln. Deswegen meinte ich "happy-tracing". 6.) ich erzähle es euch hiermit, so daß ich nicht dafür verantwortlich bin wenn ihr später die verlorene Zeit bereut. 7.) gebe ich euch einmal diese Serial dann ist der komplette Schutz hinüber. Soll ein Softwarebasierter Schutz 100%'tig sicher sein, dann dürft ihr niemals eine Serial rausrücken. Ansonsten wird der Cracker die Serial nehmen, das Program starten, den entschlüsselten Codeteil übertragen und dort die Abfragen deaktivieren. Er baut also eine Kopie der Software die ohne Serial und Veerschlüsselung arbeitet. 8.) das Passwort ist "DP Test 1 für Anti-Cracking by negaH" ohne Hochkommata. Gruß Hagen Alles nachzulesen in diesem Thread: http://www.delphipraxis.net/topic814...ackme&start=61 | |
| | |
| | #9 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Warum sollte ich das probieren wollen ? Bei meiner Crackme wäre zwar nicht bewiesen dass sie unknackbar wäre, aber mal ehrlich: wer würde sich in der Praxis schon sowas antun? Aus der Serial wird eine Nummer gehasht und als Basis für weitere Sprünge/Calls genutzt - landet der Sprung nicht da wo vorgesehen, ist sowieso alle im Eimer (z.B der Stackframe). Worauf ich noch eingehen wollte: Zitat:
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #10 (permalink) | |
| gesperrt Themenstarter Registriert seit: 17.02.05 ![]() Likes: 0 | @ CDW Danke für die ausführliche Beschreibung/Belehrung ! Zitat:
Per Hex-Editor --> Es gibt nichts Leichteres !!! ![]() @+++ATH0 Kein Programm der Welt ( solange es ausgeführt werden muss ) ist unknackbar ! Es gibt viele, die noch vor ein paar Monaten behauptet haben, dass Starforce unknackbar wäre ! Seit SH3 wissen wir es besser. | |
| | |
| | #11 (permalink) | |
| Member of Honour ![]() Registriert seit: 02.04.05 ![]() ![]() ![]() Likes: 76 | Zitat:
Also bleibt einem nichts anderes übrig als das Crypto-Verfahren zu knacken. (Knack erstmal MD5). Oder mit immenser Rechenleistung zu Bruteforcen. In dem Thread hat Hagen dargelegt wie sinnlos das sein wird. Also meine ich "unknackbar" für Hobbycracker wie uns. Ich meine damit nicht die NSA. Obwohl die sehhhrrr lange dran zu beissen hätten, wenn sie es überhaupt schaffen. | |
| | |
| | #12 (permalink) | |
| gesperrt Themenstarter Registriert seit: 17.02.05 ![]() Likes: 0 | Zitat:
Sonst würde ich Dir aber recht geben. | |
| | |
| | #13 (permalink) | |
| Registriert seit: 15.10.04 ![]() Likes: 0 | Du kannst die Hashes bei dieser Methode ändern wie du willst, es bringt dir nichts. Lies dir das nochmal durch: Zitat:
| |
| | |
| | #14 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Zitat:
Wenn ich die Crackme erstelle lege ich eine Serial fest. An dieser mache ich den Programmablauf nach der Eingabe der Serial fest: z.B Zeichen 1,4,7,9,14,6 liefern die Adresse für die nächste Anweisung, zeichen 2,1,6,3,17 für die übernächste usw. Das ist zwar nicht so wirksam wie die Verschlüsselung, aber ohne die Kenntniss des richtigen Hashes und bei genug Codemenge wird man den Programmablauf nicht mehr (in annehmbarer Zeit ) rekonstruieren können. Es wird also gar keine VergleichsMD5 im Crackme geben - die Eingabe wird zu einer solchen gemacht und wenn die Eingabe falsch ist, kommt natürlich eine komplett andere Hash raus - und dadurch stimmen die JMP-Adressen (oder was man auch immer da nehmen würde) nicht mehr - die nächste Anweisung landet einfach im "wilden" Speicher. Ganz einfaches Beispiel: Code: Writeln (Geben Sie die Serial ein: ) readln (XXXXX)
Goto XXXXX
(wenn die Eingabe hier falsch ist, dann landet GOTO im wilden Speicher)
XXX: writeln ('alles klar); Hier könnte man noch relativ schnell was sinnvolles finden, aber schon bei genug Code wird das schnell langweilig und langwierig. Jetzt zu dem Hagens verfahren: er geht noch einen Schritt weiter und verschlüsselt den Code nach der Eingabe mit dem Schlüssel. Das heißt dieser Teil des Codes wird mit dem Schlüssel entschlüsselt und ausgeführt. Ohne den richtigen Schlüssel bekommt man den Code "nie" zu sehen (wie z.B mit der PGP Mail). Allerdings ist es wie erwähnt nicht Sharewaretauglich (bzw. für jeden Kunden eigene Version).
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #15 (permalink) | |
| Member of Honour ![]() Registriert seit: 02.04.05 ![]() ![]() ![]() Likes: 76 | Zitat:
![]() Die Methode lässt zudem nur eine richtige Serial zu. Ausser man kopiert den richtig-Code zigmal oder jumpt von da aus wiederum zur einzig richtigen Adresse. Zu der findet man aber leider auffällig viele Referenzen. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Arthis KeygenmeA0.3FINAL -unsolved | sartre | Hacks & Crackmes | 3 | 18.12.05 23:50 |
| Arthis Keygenme A0.1 -SOLVED BY CDW ! | sartre | Hacks & Crackmes | 2 | 09.10.05 11:41 |
| Crackme-FAQ | CDW | Hacks & Crackmes | 0 | 08.09.05 15:18 |
| Was ist ein Crackme??? | Prowler | Hacks & Crackmes | 17 | 11.08.05 20:11 |
| Arthis Crackme -Prototyp- | gee | Code Kitchen | 0 | 15.11.04 15:38 |