Crackme1 [SOLVED]

ich lerne im moment java.
Und neben bei gucke ich mir gerade php an ( was bis jetzt sehr einfach scheint )

Meint ihr ich sollte C lernen ?? Und falls ja: Ist es besser es im internet zu lernen
oder ist es besser wenn ich mir zb ein buch in der bibliothek ausleihe?

Und wie siehts aus mit C und C++ ?
 
Naja php ist so eine Arschkriechersprache, die so gut wie nie rummeckert und vieles akzeptiert, was bei anderen Sprachen zum Fehler führt. Die Syntax Java und C sind eigentlich gar nicht so verschieden. Konsolenanwendungen in C werden dich jedoch nicht so viel mit den WinAPIs vertraut machen, dafür müsste man schon mal einen kleinen Dialog (Fenster) schreiben.
 
Original von SteveO1
Meint ihr ich sollte C lernen ?? Und falls ja: Ist es besser es im internet zu lernen
oder ist es besser wenn ich mir zb ein buch in der bibliothek ausleihe?

Und wie siehts aus mit C und C++ ?

Das solltest du selbst entscheiden. Wenn du weiterhin Windows nutzt, ist C relativ unnötig und du solltest gleich C++ nehmen, wenn überhaupt. C# wäre vermutlich sogar noch angebrachter. Willst du unter Linux das System bis in's kleinste Detail verstehen, kommst du um C nicht herum, da das System großteils in C geschrieben ist. Es ist also ganz davon abhängig, was du mit dem Erlernen einer Programmiersprache erreichen willst. Willst du Anwendungen schreiben, liegst du mit Java garnicht so schlecht, da deine Programme dann auf allen Systemen laufen, für die Java zur Verfügung steht. Willst du Systemprogrammierung machen, solltest du Assembler und C (bei Linux) bzw. C++ (bei Windows) lernen.
 
Original von bitmuncher
Das solltest du selbst entscheiden. Wenn du weiterhin Windows nutzt, ist C relativ unnötig und du solltest gleich C++ nehmen, wenn überhaupt. C# wäre vermutlich sogar noch angebrachter.
Also das sehe ich ja nun gar nicht so. Bevor man mit C++ anfängt, sollte man schon C können und C# zu lernen ist für mich nur verschwendete Zeit. Ich glaub das hat Microsoft nur auf den Markt gebraucht, weil die auch sowas wie Java haben wollten. Sein Ziel ist es doch Assembler zu lernen um Disassembly zu verstehen. Dafür sollte man auch von WinAPIs Ahnung haben und Java/C# nützt einem da nicht viel.
 
Original von mucki
Bevor man mit C++ anfängt, sollte man schon C können
Ich habe damals die Erfahrung gemacht, daß es unheimlich schwierig ist sich an C++ zu gewöhnen, wenn man jahrelang mit C gearbeitet hat.

Original von mucki
und C# zu lernen ist für mich nur verschwendete Zeit. Ich glaub das hat Microsoft nur auf den Markt gebraucht, weil die auch sowas wie Java haben wollten.
Was den ursprünglichen Sinn und Zweck von C# angeht, magst du recht haben, aber dank Mono kann man mittlerweile mit C# Programme schreiben, die sowohl unter Windows als auch unter Linux laufen. Siehe z.B. das LiveHabo-Tool.
Original von mucki
Sein Ziel ist es doch Assembler zu lernen um Disassembly zu verstehen. Dafür sollte man auch von WinAPIs Ahnung haben und Java/C# nützt einem da nicht viel.

Ja, wenn er weiterhin unter Windows arbeitet, magst du recht haben. Schaue ich mir aber seine Fragen in Lernen selber Cracks zu erstellen an, kann ich mich des Eindrucks nicht erwehren, daß er evtl. auch mal mit Linux arbeiten möchte und da bringt ihm die WinAPI rein garnichts mehr.
 
Wenn man jetzt zb. OllyDbg benutzt:
Ist das nicht das selbe auf beiden Betriebssystemen Windows+Linux ?
Und wofür braucht man da WinApi? Ich dacht man "braucht" assembler? ?(
 
Also, zuerst sollte man sich für ein System entscheiden.
Dann die Kenntnisse dazu aneignen.
Möchte man sich mit Windows beschäftigen, sind Kenntnisse der WinAPI (die von Windows für Programme angebotene Schnittstelle ) nützlich, da die meisten "direkt" kompilierten Sprachen (also kein .NET/Java) diese Schnittstelle nutzen, um z.B ein Fenster darzustellen, Benutzereingaben einzulesen, Dateien zu speichern usw.
Der restliche Code des Programms kümmert sich dann mehr oder weniger um die Verarbeitung dieser Daten.
D.h: wenn man weiß, dass per GetDlgItemText eine Benutzereingabe eingelesen wird, kann man nach dem Aufruf dieser Funktion den Code analysieren. Durch WinAPI Kenntnisse lässt z.B vermeiden, dass man fälschlicherweise die "BunteFensterZeichnen_10000_Zeilen_code" Routine analysiert, obwohl diese total unwichtig ist.
Höhere Sprachen und deren Frameworks verbergen zuviel vor dem Nutzer - das ist zwar sehr Vorteilhaft, wenn man nicht gerade hardwarenah Programmieren muss - allerdings bekommt man nichts von den Abläufen mit[1]. Natürlich sollte man sich auch mit "abstrakteren" Sprachen beschäftigen (mit denen auch die meisten Anwendungen programmiert werden ;) ) - aber auch gleichzeitig damit, wie sie letzendlich "low-level" umgesetzt werden. Da die ganzen "abstraken" Sachen aber letzendlich aus simpleren Anweisungen zusammengesetzt werden, finde ich es zumindest besser, wenn man die "simpleren" prozeduralen Sprachen kennt und sich dann mit OOP Sprachen/Framworks beschäftigt, da diese darauf aufbauen (zumindest was die letzendliche Umsetzung in ausführbaren Code angeht). Kenntnisse der Sprache, in der die Anwendung geschrieben wurde, sind beim Reversengineering nie verkehrt, da man oft auf gleichnahmige Bibliotheken, Aufrufe oder Zeichenketten-fragmente stößt, die einem die grobe Orientierung erleichtern. Da man aber irgendwo einsteigen muss - wäre zumindest für Windows meine Empfehlung: WinAPI, Asm, C und dann ein paar abstraktere Sprachen kennenlernen.

[1]Da gibt es genug "lustige" Beispiele - angefangen mit dem Rat (einer "Schutzanwendung gegen Softwarepiraten"): der Programmierer möge doch kritische String nicht im Klartext schreiben, sondern als Chr(52)+Chr(95)+Chr(98 ) zusammensetzen :rolleyes: bis hin zu "geheimen" Methodenaufrufen eines Objects, die zwar aus der OOP Sicht perfekt sind (Methode wird nur aufgerufen, wenn aus Benutzernamen+Regkey mittels XYZ kompliziertem Verfahren ein String herauskommt, der exakt diesen Methodennamen hat - also Object.CallByName(Ergebnis) ), dabei aber leider nicht berücksichtigt wird, dass das ganze intern mittels String und Adresstabellen umgesetzt wird und man den Namen einfach ablesen kann.
 
Original von mucki
@dietox: Es gibt auch Decompiler für C. Solange es aber nicht .NET ist, bleibe ich dann doch lieber beim disassemblen - damit kann ich dann doch mehr anfangen ;)

Original von mirSteveO1, ja das ist ASM-Code, den der Disassembler liefert. Du kannst grundsätzlich (!) nie aus einer exe den ursprünglichen Hochsprachen-Code (C/Pascal/usw.) entnehmen, du musst dich mit dem ASM-Code zufriedengeben.

Das habe ich nicht umsonst erwähnt :)

Die ganzen .Net/o.ä. Decompiler kenne ich, doch trotzdem sind sie nicht das gelbe vom Ei :P Und auch C-Decompiler werden dir niemals den originalen C-Code liefern können und schon gar nicht die Kommentare, weil das komplett unmöglich ist, da diese beim Kompiliervorgang ignoriert werden :)
 
als Chr(52)+Chr(95)+Chr(98 ) zusammensetzen
Hab ich auch mal für ein Crackme so gemacht - nur dann feststellen dürfen dass das nicht den geringsten Unterschied ausmacht (ist ja sowieso hex-format). :-/ Im nachhinein ist man immer schlauer :D

Gruss
IsNull
 
Lol wenn mans erstmal versucht es
zu verstehen ist es gar nicht mehr sooo schwer :

Name: Name
Serial: 6808-1040-1868-2080

ps: Hat jemand zufällig eine ASM Referenz (also wo alle Befehle gut erklärt sin z.B. als PDF ?) Danke :D
 
So...

Nach langem mitlesen der Beiträge hab ich mich auch mal registriert :D

Ich bin neuling auf dem Gebiet CrackMe's und wollte daher fragen, ob jemand n kleines Tutorial schreiben könnte, wie man an den KeyGen Algorithmus kommt.

Dazu wollte ich noch fragen, ob jemand auch Delphi Programmiert, und mir sagen kann wie man einen Patch erstellt in Delphi

Grüsse
Claudio
 
Erstmal: Sorry da der Thread ja schon etwas älter ist :)

Beschäftige mich auch erst seid ein paar Wochen damit mein einziges Problem ist / sind: Die Breakpoints;(
Habe mir dann mal den Post hier genauer durchgelesen und voilá:


Code:
Name: SLDZ
Serial: 5650-1d70-1450-2b40
 
Würde mich aber auch mal interessieren wie ich da den "Algorithmus rausbekomme" und ihn dann in Delphi Code Verpacke :)
 
nookstar - 1c48-2980-3638-4270

mich würde mal der Quellcode der Crackme interessieren da ich mich zur zeit mit C ++ beschäftige. Vor allem wie das klappt das jede serial unterschiedlich ist und letzt endlich nur mit diesem einen Nick funktioniert , also wäre nett wenn du mir den Quellcode evtl. zu kommen lassen könntest.

danke

mfg nookstar
 
Zurück
Oben