BIG Endian Binary convert to Little

Gast #1722758
Hallo

Ich betreibe Debian auf einen Sheevaplug (ARM CPU )

Debian läuft im LE Modus
Ich habe hier ein kleines Binary für welches aber leider für ARM im Big 
Endian Modus übersetzt worden ist

Ich habe schon mir mit objdump auch den Assembler Code gezeugt

Ich vermute das es absolut unmöglich ist ohne die Quellen den Endian 
Modus zu wechseln.
Aber ich lasse mich gerne belehren :-)

Vielleicht kennt sich auch jemand mit IDA aus
Gast #1723786
Benjamin schrieb:
> Ich vermute das es absolut unmöglich ist ohne die Quellen den Endian
> Modus zu wechseln.
> Aber ich lasse mich gerne belehren :-)

Hallo,

das liegt mir ja sowas von fern - du kannst ein Programm disassemblieren 
und aus den Opcodes die Parameter bestimmen, wenn auch mühsam. Bei Daten 
versagt die Methode aber, höchstens Strings lassen sich noch 
analysieren, aber bei einem Record muss man den Aufbau aus der 
Definition kennen.

Gruss Reinhard
Gast #1724012
....erstmal Danke für die Antworten
Ich möchte ja nichts am Code verändern sondern "nur" den Endian Modus 
von Big auf Little umstellen (Archtiktur ARM)

Mir ist wiegesagt bewusst, dass es richtig wild wird.
Aber ich habe Urlaub und möchte etwas basteln und verstehen was dort 
passiert :-)

Wie geht man denn am besten vor wenn ich mit objdump -d mir den asm code 
erstelle  kann ich ihn dann mit as wieder neu erstellen oder gehen bei 
objdump schon Informationen  verloren?!

Ich habe das Binary aber auch für x86

Deshalb  habe ich mal Hex-Rays drauf angesetzt da ich mich aber das 
erstemal mit disasemblern beschäftige, war dies nicht von Erfolg 
gekrönt.
#1724021
Benjamin schrieb:

> ....erstmal Danke für die Antworten
> Ich möchte ja nichts am Code verändern sondern "nur" den Endian Modus
> von Big auf Little umstellen (Archtiktur ARM)

Du kannst natürlich das Binary patchen, damit es wie little endian 
aussieht. Das wird der Linker das zwar vielleicht akzeptieren, aber es 
nützt die exakt garnichts, denn es wird allenfalls dann funktionieren, 
wenn dessen Code ausschliesslich mit 32-Bit Datentypen arbeitet.

> Mir ist wiegesagt bewusst, dass es richtig wild wird.
> Aber ich habe Urlaub und möchte etwas basteln und verstehen was dort
> passiert :-)

Na dann: Programm disassembleren. Verstehen was jede einzelne Zeile 
macht und jedes einzelne Datenbyte darstellt. Alles was von der 
Byteorder abhängt entsprechend abändern.
#1724025
engl -> bytesex -> Bytegeschlecht

Eine Konvertierung zwischen den "Bytegeschlechtern" ist ohne sourcecode 
eher nicht möglich, weil der Code halt Sequenzen enthalten kann, die ein 
bestimmtes Geschlecht vorraussetzen. (Wird beim compilieren des C codes 
mit ifdef usw abgefragt).

Stelle dir das ganze wie eine Geschlechtsumwandlung vor. ;)
Nachher kommt zwar was dabei raus was ungefähr richtig aussieht, aber 
wenn man ins Detail guckt (wenn man das denn möchte), wird man doch noch 
einige gravierende Unterschiede sehen.

Disassemblieren und wieder assemblieren reicht definitiv nicht aus, weil 
damit die Codeteile, die eine bestimmte endianness vorraussetzen nicht 
ausgetauscht werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.