Reverse engineering in EDV
-
Hallo,
ich habe reverse enginnering als Thema in der Schule genommen und suche gerade
mehr Informationen über den Einzug von reverse enginnering im EDV bereich.
Google gibt mir nur wertlose Informationen zurück und dachte ich frage mal die
Experte hier ob ihr evtl. Bücher oder Links dazu habt. Auch Informationen über
die rechtlichen Aspekt (International / Deutschland) weren sehr hilfreich.Kern der Ausarbeitung ist das aushelben von Sicherheitsmechanismen...
Hoffe ihr könnt mir hier helfen.
-
Dklay schrieb:
Informationen über den Einzug von reverse enginnering im EDV bereich.
Ich finde die Formulierung etwas komisch.
Bücher gibts zu dem Thema genug mittlerweile. Such einfach nach "REverse Engineering" bei Amazon. Speziell das Aushebeln von Sicherheitsmechanismen ist ein etwas heikles und umfangreicheres Thema. Früher nannte sich das einfach "Cracking" und es gab tausende Tutorials im Internet, die sich mit den damaligen Sicherheitsmechanismen (z.B. Schlüssel bei Shareware) befasst haben. Sowas einfaches wirst in den Büchern wahrscheinlich schon noch finden, irgendwelche neueren Sachen werden wahrscheinlich nicht im Detail behandelt, aber schau dir einfach die Bücher durch, das Thema interessiert mich schon seit Jahren nicht mehr, kanns nicht mit Sicherheit sagen.
Es gibt legitimere Einsatzmöglichkeiten für Reverse Engineering, z.B. die Analyse von Viren/Malware, was ich dann auch wieder interessanter finde. Das wird eher in den Büchern behandelt. Und so eine Grauzone ist Reverse Engineering im Open Source Bereich, um nicht dokumentierte Protokolle/Formate/Dateisysteme usw. zu analysieren und dann als Open Source Implementierungen umzusetzen.
-
Danke, für deine Antwort erstmal.
Reverse engineering ist ja keine Erfindung des Computerzeitalters. Meine Frage ist eigentlich was wurde zuerst reverse engineerd, waren das Viren, Kopierschutz arten oder Verschlüsselungsverfahren...
Bücher habe ich auch da, aber diese beschäftigen sich hauptsächlich mit dem reversing vom Code.
Auch über die rechtlichen Aspekte findet man zwar kurze verschwommene Aussagen welche immer meinen man ist dabei in einer Grauzone aber Gesetzestexte oder ähnliches werden in meinen Quellen nie zitiert.
-
Ich weiß nicht, ob du großartig was über die "Geschichte des Reverse Engineerings in der IT" findest. Der Gedanke ist ja relativ naheliegend.
DKlay schrieb:
Bücher habe ich auch da, aber diese beschäftigen sich hauptsächlich mit dem reversing vom Code.
Was genau meinst du damit und was erwartest du stattdessen?
-
Es gibt ein sehr gutes Buch von Eldad Eilam:
"Reversing: Secrets of Reverse Engineering"Nettes kleines Buch für (nicht nur) jugendliche Einsteiger:
Simon Singh
"Codes: Die Kunst der Verschlüsselung. Geschichte - Geheimnisse - Tricks"In die Googlesuchmaske kannst du mal sowas wie Malwareanalyse Diplomarbeit eingeben und dann gucken, ob dir das weiterhilft.
-
Vielleicht hilft dir das hier weiter:
http://www.exploit-db.com/wp-content/themes/exploit/docs/23277.pdfHier ein ganz simples Beispiel wie das ganze im Prinzip funktioniert:
#include <iostream> #include <string> using namespace std; int main() { string str; cout<<"Password: "; cin>>str; if ( str == "bob") { cout<<"Richtig :D \n"; } else{ cout<<"Falsch -.-\n"; } return 0; }
Das Disassembly dazu:
00401199 68 A2404000 PUSH Project2.004040A2 ; ASCII "Password: " 0040119E FF35 70714000 PUSH DWORD PTR DS:[<&CC3280.@std@cout>] ; CC3280.@std@cout 004011A4 E8 FB000000 CALL Project2.004012A4 004011A9 83C4 08 ADD ESP,8 004011AC 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28] 004011AF 51 PUSH ECX 004011B0 FF35 6C714000 PUSH DWORD PTR DS:[<&CC3280.@std@cin>] ; CC3280.@std@cin 004011B6 E8 09030000 CALL Project2.004014C4 004011BB 83C4 08 ADD ESP,8 004011BE 68 AD404000 PUSH Project2.004040AD ; ASCII "bob" 004011C3 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28] 004011C6 50 PUSH EAX 004011C7 E8 18050000 CALL Project2.004016E4 004011CC 83C4 08 ADD ESP,8 004011CF 84C0 TEST AL,AL 004011D1 74 15 JE SHORT Project2.004011E8 004011D3 68 B1404000 PUSH Project2.004040B1 ; ASCII "Richtig :D " 004011D8 FF35 70714000 PUSH DWORD PTR DS:[<&CC3280.@std@cout>] ; CC3280.@std@cout 004011DE E8 C1000000 CALL Project2.004012A4 004011E3 83C4 08 ADD ESP,8 004011E6 EB 13 JMP SHORT Project2.004011FB 004011E8 68 BE404000 PUSH Project2.004040BE ; ASCII "Falsch -.- " 004011ED FF35 70714000 PUSH DWORD PTR DS:[<&CC3280.@std@cout>] ; CC3280.@std@cout 004011F3 E8 AC000000 CALL Project2.004012A4
An Adresse 004011C7 wird eine Funktion aufgerufen die deine Eingabe überprüft wenn du den string bob eingeben hast dann wird zu Adresse 004011D3 ansonsten zu Adresse 004011E8.
An Adresse 004011BE wird der string bob auf den Stack gepusht damit hast du schon das Passwort.
An Adresse 004011D1 steht JE SHORT Project2.004011E8
Das könntest du z.b. umändern in JMP 004011D3 dann ist es egal was du da im Programm eingibst jedes Passwort ist dann korrekt.
In richtigen Programmen ist das natürlich meist nicht so einfach da kommen dann noch Anti Debug Funktionen und so ins Spiel.
Ich könnte dir hier jetzt noch so ein paar Sachen zum Thema Reverse Engineering schreiben aber ka was du da genau wissen willst/muss von daher lass ich es.^^
Hier noch ein paar Links:
http://www.symantec.com/connect/articles/windows-anti-debug-referencehttp://tuts4you.com/download.php?list.17 ( Reversing for Newbies 01 könnte interessant für dich sein )
http://waleedassar.blogspot.de/ ( Hat immer interessante Artikel )
http://www.immunityinc.com/products-immdbg.shtml ( Guter kostenloser Debugger )
-
Hi nochmal, danke für das kurze Tutorial und die Links aber eigentlich suche ich
wie schon erwähnt nach der Geschichte von reverse engineering aber auch nach den
Gesetzen welche es ausdrücklich erlauben bzw. verbieten. Also sowas wie, dass die Analyse von Protokollen legal usw.