Exe de-compilieren

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Hubsi

BeitragMo, März 28, 2005 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ging ihm ja nur darum den Blitzchat-Server zu hacken, wobei er wohl nicht bedacht hat das in der Exe keinerlei Passwörter gespeichert werden. Die könnte man auch ohne disassembilieren ohne Aufwand aus der Exe lesen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Kernle 32DLL

BeitragMo, März 28, 2005 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein,darum geht es garnicht Hubsi.Auf dem Server bin ich eh schon.
Das mit dem de-compilierne hatte mich einfach mal intressiert.

Also nch dem was ich hier gelesen habe,scheint es für den "Otto-normal-
Verbraucher" nicht möglcih zu sein,eine Exe so zu de-compilieren.
Schade drum,aber was solls ^^
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009
 

noir

BeitragMo, März 28, 2005 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Kernle 32DLL hat Folgendes geschrieben:
Nein,darum geht es garnicht Hubsi.Auf dem Server bin ich eh schon.
Das mit dem de-compilierne hatte mich einfach mal intressiert.




alles klar Kernle, wir glauben dir das doch alle - keine frage Very Happy


Mr. Green Mr. Green Mr. Green Mr. Green Mr. Green Mr. Green
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
 

Nox

BeitragMo, März 28, 2005 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Steht ja ziemlich viel Quatsch hier drin...

Wie JonasCleve schon sagte, gibt es zuerst die Möglichkeit, ein Programm zu disassemblieren. Ein Disassembler sorgt dafür, eine nötige Struktur zu erstellen und somit den Code übersichtlicher zu machen. Z.B. findet er Zusammenhänge und Referenzen heraus, die die Arbeit beim Disassemblieren extrem vereinfachen.

Assembler selbst ist weder eine "Profi"-Sprache noch unmöglich zu lernen, geschweigedenn nur für "Vollzeitprogrammierer, die sowas vollprofessionell" machen. Assembler ist eine der SIMPELSTEN Sprachen überhaupt. Oder was ist als Beispiel an einem "ADD AX, 4" schwer zu verstehen (Registerlehre vorausgesetzt - Lesedauer ca. 10-15 Minuten)??

Wer Erfahrung im Lesen von Assembler hat, wird sich nicht schwer tun, den Code auch verstehen zu können. Für alle Interessierten: Ladet euch den Debugger OllyDbg herunter. Integriert ist ein astreiner Disassembler. Als Übung könntet ihr ein kleines C-Programm schreiben und dies dann debuggen, um zu sehen, wie sowas in Maschinencode/Assembler aussieht. Lernen tut man ziemlich rasch.

Es ist auch definitiv möglich, Maschinencode in eine Hochsprache zu übersetzen. Und ich bitte euch: Was ist bitte schwer daran, eine Schleife zu entdecken? OllyDbg erkennt sie schließlich auch...
Das einzige Problem, das man nach einer solchen Umwandlung hätte ist, dass keine Variablen, Funktionen und Konstanten benannt wären. Und wer wird aus einem "unsigned long a, b, c, d" schlau? Gerade deshalb ist es schwachsinnig, Maschinencode in eine Hochsprache zu übersetzen. Assembler lernen ist da viel leichter und schneller.

Bei BlitzBasic ist ein Verstehen des Hauptcodes sogar ziemlich leicht. Denn wie bei eigentlich jeder Game-Engine steht zu Beginn der Exe der Code der Engine selbst. Der ist statisch und in jedem kompilierten BB-Programm wiederzufinden. Mit Funktionen wie "Graphics3D" etc. ruft man dann Funktionen der Blitz-Engine auf. Halt wie eine Lib in C. In BB ist das allerdings - so wie ich glaube - etwas blöd gelöst. Denn egal, welche Funktionen ich letzten Endes in meinem Programm verwende, es wird immer der komplette Enginecode vorangeschoben. Ein Grund, weshalb die Exen mindestens 1 MB groß ist.
Was man nun bräuchte wäre der Code, den der Hersteller geschrieben hat. Da das in der Regel nicht viel ist, kann man den Teil auch recht fix verstehen.

Also:
Unmöglich: Nein
Sinnvoll: Nein
Alternative: OllyDbg benutzen und glücklich werden
 

Dreamora

BeitragDi, März 29, 2005 3:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei einem 200 Zeilenprogramm mag der ASM einigermassen zu lesen (und vor allem verstehen) sein, aber bei einem 10000 Zeilen Programm kannst du ASM getrost vergessen, da wirst du "ewig" brauchen wenn du das nicht professionell ständig machst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Nox

BeitragDi, März 29, 2005 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hat das mit professionell zu tun? Wer soetwas GERNE tut, wird auch Erfolg haben...

Außerdem wirst du mit Sicherheit nicht ein komplettes Programm debuggen wollen...
 

Timo

BeitragDi, März 29, 2005 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich mein immer noch das es nicht geht, denn es mag von Hochsprache zu maschinencode nur eine einzige möglickeit geben, aber anders herum ist es interpretationssache. Mal davon ab - ginge es, würde es ja eigentlich schon jeder machen oder?

Hier mal ein kleines Beispiel:
Eine kleine sinnlose Prozedur aus Delphi (also der Assemblercode davon)
was tut sie?

BlitzBasic: [AUSKLAPPEN]



Die Procedur besteht nur aus 6 Zeilen.. ich wette keiner würde drauf kommen, wie ich es geschrieben habe.. !!

Edit:

BlitzBasic: [AUSKLAPPEN]

							

Sebastian

BeitragDi, März 29, 2005 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Dass ist so jetzt schwer zu sagen ........

Ich hab mal Microcontroller in ASM programmiert , das ist aber wieder was anderes ....

Ich schau mir das zeug mal an !

OT:

Was ich eigentlich noch sagen wollte ist dass ich bei Blitzchat ,alle meine Nachrichten vor meinem Router abzweigen und somit mithöhren kann ... (geht gottseidank nur im LAN .D.h. ich werd euch keine Pws klauen können Laughing )
Somit komm ich an die verschlüsselten Passwörter ran. Mit ner Bruteforce -attacke könnte man ,(wenn man ein bischen Zeit investiert) den Passworthashalgorytmus knacken ....

Des weitern könnte man ja mal versuchen mit einer spoofing-Attacke (ich glaub das hieß so ...) euren Server zu überlasten, womit keine Clients mehr einloggen können.Naja ich bin kein Hacker deshalb hab ich meine paar Ideen nie getested ...
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

noir

BeitragDi, März 29, 2005 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst machen was du willst Wink in der exe findest du keine Passwörter....
klar zu kannst die tcp pakete abfangen, aber was bringt es dir Wink mehr als die nachrichten etc. wirst du nicht abzufangen haben Laughing
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
 

Nox

BeitragDi, März 29, 2005 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal: OllyDbg. Dort einen Breakpoint setzen, wo das Entscheidende passiert, bissi ASM verstehen und fertig (hört sich simpel an, hm? Ist es eigentlich auch...).

@Timo:
Du wirst dich wundern, wieviele Instruktionen (Prozessorbefehle) manche "harmlosen" Funktionen haben. Aber erst durch soetwas lernt man, wie ein Computer annähernd funktioniert. Dass nicht jeder das wissen will, ist eine andere Sache..

Übrigens, anders als gewohnt setzt Intel auf eine "Nach, Von"-Syntax. Also "mov" bedeutet nicht "kopiere von ... nach ...", sondern "kopiere nach ... von ...".

Und das Programm, was du da gepostest hast, ist nicht wirklich schwierig:
mov ebx, $03 <--- 3 ins EBX-Register
mov eax, ecx <--- Inhalt des ECX-Registers in's EAX-Register
imul ecx <--- (Multiplikation MIT Vorzeichen) EAX wird mit ECX multipliziert, Ergebnis befindet sich dann in EAX
sub ecx, $02 <--- 2 von ECX abziehen
cdq <--- Aus einem DWORD ein Quad Word machen
idiv <--- wie IMUL, nur dieses Mal dividieren (komisch, ich dachte, man gibt nur einen Dividenten an...)
[...]viele Wiederholungen[...]
sar eax, 1 <--- EAX um 1 Bit nach rechts shiften, dabei Vorzeichen behalten
jns +$03 <--- 3 Bytes nach vorn jumpen, wenn Signed Flag = 0
adc eax, $00 <--- Addition, Ergebnis in EAX. Falls Carry-Flag gesetzt, EAX+1
dec ebx <--- EBX um eins verringern
jnz -$20 <--- Falls Zero-Flag nicht gesetzt, 20 Bytes zurück jumpen
pop ebx <--- Aktuelles Datum vom Stackpointer nach EBX "poppen"
ret <--- Zurück zur Adresse springen, von wo ein CALL aufgerufen wurde
mov eax, eax <--- wird nie erreicht. Very Happy

Ich glaube kaum, dass das der gesamte Code ist, oder?
  • Zuletzt bearbeitet von Nox am Mi, März 30, 2005 13:59, insgesamt einmal bearbeitet
 

Timo

BeitragMi, März 30, 2005 9:47
Antworten mit Zitat
Benutzer-Profile anzeigen
es ging mir eigentlich darum, von Assembler in eine Hochsprache. Denn ich bin ja der ansicht, es wird nicht funktionieren, weil es verschiedene Interpretationsmöglichkeiten gibt!! Diese Zeilen oben sind aus wie gesagt 6 Zeilen Delphi code. der Quellcode von "begin" und "end" hab ich schon weggelassen, sonst währen halt noch die beiden Stackbefehle da ^^

Wie gesagt: Meine Frage war nicht ,was macht das Programm oben, sondern wie sah es im Quellcode aus Smile
 

Nox

BeitragMi, März 30, 2005 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte ich dir sagen, wenn der Code (meiner Meinung nach) nicht unvollständig wäre.

mov ebx, $00000003
mov eax, ecx

Es is interessant, dass das ECX-Register ins EAX-Register kopiert wird. Nur WAS ist im ECX-Register?
Außerdem wird gegen Ende noch EBX gepoppt, ohne irgendwann was gepusht zu haben. UND es kommt noch eine Instruction nach RET, was mir sagt, dass du garnicht genau weißt, wo dein Code anfängt und endet...

Edit: Es ist nämlich erstmal wichtig zu wissen, WAS das Programm macht, damit man passend dazu den Quellcode präsentieren kann..
Edit²: Du hast Recht, es gibt verschiedene "Interpretationsmöglichkeiten", also versch. Wege, den Quellcode zu erzeugen. Allerdings gibt es dabei immer bessere und schlechtere Wege. Was meinst du, was ein Compiler mit Codeoptimierung tut?
 

Timo

BeitragMi, März 30, 2005 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm.. vielleicht hätt ich wohl das begin und end doch hinzufügen sollen...
Das programm sah so aus:

BlitzBasic: [AUSKLAPPEN]



und hier der Screen der CPU: klick mich

was ich halt nur damit zeigen wollte, ist das man vielleicht weiß, was das Programm so in etwas tut, aber das man es, wegen der vielen Möglichkeiten es zurückzucompilieren, es halt ummöglich währe.

Sebastian

BeitragDo, März 31, 2005 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt könnte ich mit hilfe eurer PW-Packte den PW-hash knacken ....


Damit könnt ich warscheinlich nicht viel anstellen , aber egal ..

Viel schlimmer wär ne spoofing-attacke.
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

noir

BeitragDo, März 31, 2005 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
zu 1. : könntest du nicht.
zu 2. : möglich wäre es, aber deine ip ist schnell gesperrt.
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
 

Dreamora

BeitragDo, März 31, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntet ihr die Diskussionen über Straftaten dann nun endlich lassen, oder ist erst eine Anzeige notwendig um euch endlich in die Realität zurück zu holen?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

NetPad

BeitragDo, März 31, 2005 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
das heisst nicht spoofing...
du meinst einen DoS. das mit dem server durch verbindungen überlasten würde ich eher lassen, weil das doch schon ziemlich auffällig ist.
um ein server auszuschalten gibt es elegantere mehoden. entweder man sucht sich exploits(man wird wahrscheinlich keine aktuelle finden, ausser man tauscht seine eigene mit jemandem, der welche hat), oder man versucht an den source zu kommen und schaut sich das ganze genaustens an(die wahrscheinlichkeit, dass du etwas finden würdest ist ziemlich gering), oder man versucht einige allgemeine schwächen aus(format-string, buffer-overflows, usw).

das mit dem knacken der passwörtern ist ein witz. so leid es mir tut, ich glaube nicht, dass du etwas mit dem verschlüsseltem passwort anfangen kannst. ausserdem finde ich das nicht so toll, wenn man packet-sniffing tools benützt, ohne zu wissen, was man will.

Ich hoffe dir ist klar, dass solche sachen oft sehr hart bestraft werden und du sehr schnell in probleme geraten kannst.

grs NP
 

sven123

BeitragDo, März 31, 2005 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
@pointer

Zitat:

schon, aber man kann ihn ja auch nutzen, indem man sich ihn anschaut und daraus lernt, aber nicht den code kopiert oder sowas.


ich glaube wer eine exe wieder in Sourcecode verwandeln kann brauch nicht mehr aus Fremden code zu lernen.Definitiv nicht!
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

NetPad

BeitragDo, März 31, 2005 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
wiso nicht???
wie schon erwähnt wird jeder befehl durch den compiler in einen bestimmten ASM code verwandelt. wenn man nun ein solches tool zur hand, kann man irgendwelchen code rekonstruieren. da kann man seeehr viel lernen. z.b ob die benutzereingaben gefiltert werden. wie der login kontrolliert wird. verschlüsselung usw...

grs NP
 

Timo

BeitragDo, März 31, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ich glaube wer eine exe wieder in Sourcecode verwandeln kann brauch nicht mehr aus Fremden code zu lernen.Definitiv nicht!


damit meinte er: wer es geschafft hat, von ASM zu einer Hochsprache zurück zu kompilieren, der kann das so gut, der brauch sich keine anderen Quellcodes mehr anschauen ^^

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group