Autor Thema: Disassembler  (Gelesen 11453 mal)

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« am: 25. April 2009, 17:01 »
Heyho,

auch ich melde mich mal wieder zurück im guten alten lowlevel forum  :mrgreen:
ich wollt mal fragen ob ihr es für möglich haltet, als one-man-project einen disassembler für win32 /PE (exe,dll) zu schreiben?

MfG
Alex

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 25. April 2009, 17:05 »
Ja. :-D
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

matheguru

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 04. May 2009, 15:15 »
Ein etwas gröseres Projekt, ja! Aber unschafbar, nein! Wirst wohl eine Befehlstabelle von der Intelwebsite brauchen, um zu wissen welche Zahl welchem Befehl entspricht und so weiter, oder Beispielcode!
Hacker zu sein bedeutet mehr, als sich nur damit auseinander zu setzen, es ist eine Lebenseinstellung

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 04. May 2009, 16:28 »
Ich denke Coffee ist lang genug dabei um zu wissen, wie sowas geht. :wink:
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

matheguru

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 04. May 2009, 16:58 »
Ja das ist mir auch klar ich kann Sterne zählen, stell dir vor! Das Forum ist dazu da anderen Usern, das wissen auch weiterzugeben, was bringt es den anderen, wenn es coffee weis! Sry, aber das musste ich jetzt mal sagen.
Hacker zu sein bedeutet mehr, als sich nur damit auseinander zu setzen, es ist eine Lebenseinstellung

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #5 am: 04. May 2009, 18:51 »
Dann sag ich halt nix mehr. :-D
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

matheguru

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 04. May 2009, 18:58 »
das ja greade nicht :wink: Wir müssen ja diskutieren
Hacker zu sein bedeutet mehr, als sich nur damit auseinander zu setzen, es ist eine Lebenseinstellung

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 05. June 2009, 22:01 »
Naja, einen Assembler zu schreiben ist nicht gerade schwer, ein Disassembler ist eventuell etwas schwerer, da du ja nicht einfach an irgendeiner Adresse drauf los disassemblieren kannst, sondern beachten musst was Code, was Daten und was Padding ist, aber ansonsten sehe ich ja kein Problem.

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #8 am: 06. June 2009, 11:38 »
Naja auch bei einem Assembler musst du das in die richtigen Sections der Objektdatei packen, läuft also aufs selbe raus.
Und bei flachen Binaries kann das eh nicht unterschieden werden, aber die will man auch nicht wirklich benutzen.

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 06. June 2009, 14:22 »
Das is Sections schreiben ist kein Problem,  beim Disassemblieren kann es allerdings sein dass vor einem "Label" (also vor einer Stelle an die gesprungen wird, Labels gibt es ja in der Binärdatei nicht) noch einige Padding-Bytes kommen. Unter Umständen kann das dazu führen dass die Instructions nicht richtig interpretiert werden, weil der Disassembler den Anfang der Instruktion nicht richtig erkennt. NDISASM scannt dazu iirc alle jump Instructions und disassembliert dann von den Zieladressen an.

ehenkes

  • Gast
Gespeichert
« Antwort #10 am: 07. June 2009, 13:46 »
Zitat
was Code, was Daten und was Padding ist
Was ist Padding?

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 07. June 2009, 14:09 »
Padding-Bytes sind Füllbytes, die dazu dienen, dass z.B. die Adresse von Funktionen 32 bzw. 64 bit aligned sind, um die Zugriffsgeschwindigkeit der CPU zu erhöhen.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

ehenkes

  • Gast
Gespeichert
« Antwort #12 am: 10. June 2009, 13:43 »
Thx.  :-)

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 07. October 2009, 00:40 »
ich sehe es schon kommen: "Das lowlevel OS ist nun fertig"
Problem: Was jetzt? Natürlich wird die nächstbeste Idee sein "Der lowlevel disassembler", sagt dann ein schlauer Kopf. "Was disassemblieren wir?", auch diese Frage scheint eher rhetorischer Natur: "Was wohl? Natürlich die exen von Windows". Wo die exen sind, da sind auch dll´s. Nun ja wenn das dann fertig ist was machen wir dann? Ich greife mal vor und sage einfach: wir verkaufen den Quelltext von Windows (Kernel + Restmüll) für 5$ an jeden, der bereit ist zu zahlen. Ein Teil spenden wir an wiki, den anderen Teil investieren wir in das nächste Projekt. Hier muss ich mal kurz nachdenken... ein OS haben wir, den Windows quelltext auch... hmm nun schlägt jemand vor "Wir korigieren jetzt die bugs, die unser disassembliertes Windows hat, also zumindestens so weit dass man die ganze Brühe wieder kompilieren kann". Doch der weitere Verlauf ist einem jeden klar: sogar die größten Optimisten wollen lieber realistisch bleiben und etwas anpacken was man auch schaffen kann. Wie die Geschichte weitergeht weiss ich im Moment auch nicht.

mfg ika

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #14 am: 07. October 2009, 15:48 »
wtf? Du weißt schon, dass man mit einem Disassembler auch sinnvolle Dinge machen kann. Oder ihn einfach zum Spaß schreibt. Schreibst du ein Betriebssystem, um es an viele Leute zu verkaufen? Ich hoffe mal, nicht, ehrlich gesagt.
Schon mal was von ndisasm gehört? Das ist der Disassembler von nasm. Es haben sich also schon Leute Gedanken über Disassembler gemacht, ohne Windows zu disassemblieren. Was auch überhaupt nix bringen würde, weil so viel Assembler ohne jegliche Bezeichnungen und alles wohl eher unverständlich ist. Und ich bezweifle, dass Microsoft viel Debugzeugs drin gelassen hat. :-D

Also. Nochmal. Ich sehe Lowlevel nicht als gemeine Cracker-Gemeinde, die unbedingt Windows disassemblieren wollen. Ehrlich gesagt: Ich habe überhaupt kein Interesse daran. Wenn ich Code von einem guten und weit fortgeschrittenen Betriebssystem haben möchte, schaue ich nach
/usr/src/linux.

Weiterhin möchte ich noch einmal wiederholen, dass man überhaupt nix mit dem disassemblierten Zeugs anfangen kann. Man säße Jahre daran, den Sprungmarken und Variablen einigermaßen vernünftige Namen zu geben und dann am Besten noch rauszufinden, wie das mal in C (oder worin auch immer Windows programmiert wurde) ausgesehen haben könnte.
« Letzte Änderung: 07. October 2009, 15:53 von XanClic »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 07. October 2009, 16:24 »
Mal ganz davon abgesehen, dass mir ein Disassembler als Projekt zu langweilig wäre. Gibt es schon genug davon, die tun, was sie sollen und viel anders machen kann man sowieso nicht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 07. October 2009, 16:30 »
Thread von Anfang an lesen ftw
Dieser Text wird unter jedem Beitrag angezeigt.

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 07. October 2009, 18:30 »
hallo leute :-D

ich muss mit Grinzen feststellen, dass einige sich sogar zu meinem Kommentar geäußert haben. xD so geil. Nun ja, was ich zur Sprache bringen wollte (mal als Klartext):
1. Mich würde mal interresieren, ob du vorhast soweit zu gehen, den Code in C oder andere Hochsprache zu überführen?
Das ist bestimmt ziemlich cool, aber ich halte das für unmachbar als Einmannprojekt. Aber auch ohne soweit zu gehen finde ich die Angelegenheit schwierig. Wobei die Idee sehr interresant ist (es gibt zwar genug disassembler, aber es gibt auch schon das eine oder andere funktionierende OS - na was sagt uns das?) und auf jeden Fall lohnenswert, wenn ich überlege was man da so alles dazulernt.
Mal eine Frage: wäre es nicht genauso interresant einen kleinen compiler für eine eigene sprache zu schreiben? also zunächst ohne Codeoptimierung u.ä.?

[offtopic]
PS: ich fand die Idee: überhaupt auf die Idee gekommen zu sein - Windows zu disassemblieren einfach nur lustig und da es schon etwas spät war, habe ich ein bisschen braingestormt (schlimmes Wort) :)
Ich kann euch beruhigen: ich finde die Idee nicht gut. Und um zuletzt auf die Frage einzugehen "warum ich ein OS entwickle (oder besser gesagt - es versuche)": weil ich das interessant finde und mir das spass macht.
[/offtopic]

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #18 am: 07. October 2009, 18:56 »
Also in eine Hochsprache zurück zu "disassemblieren" (wovon man dann ja nicht mehr reden könnte) halte ich für, naja nicht unmöglich aber das Ergebnis für nicht-leserlich: Ein Disassemble rmüsste ja die gesamte Semantik in C-Code übertragen, Variablennamen gibt's nicht etc. pp.

Einen Compiler für eine eigene Sprache, joa, dafür müsste man erstmal die Sprache entwickeln. Einen Compiler dafür zu schreiben ist nicht so schwer (je nach Umfang der Sprache wohlgemerkt; Respekt an die Leute von gcc).
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

 

Einloggen