Wie kann man Maschinensprache erlernen?

7 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
Bist du wirklich sicher, dass du "Maschinensprache" und nicht etwa "Assembler" meinst? :)

Zu Assembler gibt es genügend Quellen im Netz und Bücher bei Amazon.

Falls du wirklich "Maschinensprache" meinst, schnapp dir das "Intel 64 and IA-32 Architectures Software Developers's Manual", und lerne die Opcodes passend zu den Instruktionen auswendig.

Dann weißt du zwar wie du nach einem Vergleich vorzeichenbehaftete und vorzeichenlose Ganzzahlen mit 0x77 und 0x7F vergleichst und danach entsprechende Sprünge ausführst, aber was willst du damit erreichen?

Im Hexeditor zu programmieren ist zwar lustig, aber für mehr als Minimalstprogrämmchen ist das völlig ungeeignet. Höchstens um mal schnell ein paar Binaries zu patchen ist dieses Wissen sehr praktisch und dafür braucht man auch nicht mehr, als eine Hand voll Opcodes, aber alles in allem ist das nur eine Spielerei. :)

Lern lieber vernünftig Assembler und nimm dir für Reversing-Aufgaben einen ordentlichen Disassembler bzw. Debugger. (z. B. IDA, aber für das meiste reicht auch WinDBG oder GCCs objdump)

Naja, viel Spaß! ;)

was meinst du denn mit Maschinensprache? Normalerweise ist Maschinencode der Code in nullen und einsen umgewandelt, auch als binär bekannt.

Ich würde nicht mit Hexcode einsteigen, sondern es bei Assembler belassen, damit arbeitet es sich viel leichter. Ich empfehle, mit Inline-Assemblercode zu beginnen, d.h. wenigen Assembler-Anweisungen, den Du z.B. in ein C-Programm einbaust. So kannst Du leicht den Input steuern und beobachten, was der Assemblercode damit macht.

https://de.wikipedia.org/wiki/Integrierter_Assembler

Der Befehlssatz und der Aufbau unterscheiden sich bei den verschiedenen Prozessortypen. Deshalb ist ein Assemblerprogramm immer auf einen bestimmten Prozessor oder eine Prozessorfamilie zugeschnitten und kann nicht ohne weiteres auf jedem anderen Chip funktionieren, auch wenn bestimmte Vorgehensweisen sich wiederholen oder ähneln. Das Gleiche gilt auch für die Assembler-Lehrbücher, die beschreiben oft speziell den Umgang mit bestimmten Prozessorfamilien. Du wirst Dich also zunächst auf eine bestimmte Sorte von Maschinen spezialisieren.

Ansonsten lernt man das, wie man alles lernt: Indem man sich Aufgaben stellt und sie zu lösen versucht.

Hier ist eine Anleitung für übliche PC-Prozessoren: https://de.wikibooks.org/wiki/Assembler-Programmierung_f%C3%BCr_x86-Prozessoren

Ich habe gerade nur grob auf youtube geguckt aber da gibt es tutorials

da kannst du ja mal nach schauen ob es da was für dih gibt

Wirklich? Ich finde eine ganze Menge Treffer die sofort Einleitungen usw. anbieten.

Wozu genau willst du Maschinensprache lernen? Bist du ein sehr guter Programmierer der nichts mehr zu tun hat?


honigtopf3239  24.09.2016, 23:15

Zum Verständnis : Maschinensprache ist ein Teil der Informatik der eher für sehr weit fortgeschrittene ist. Man braucht ihn aber kaum. Deinen früheren Fragen folgend denke ich du meinst "Programmiersprache", was eine ganz andere Sache ist (kein Spieleentwickler z.B. braucht Maschinencode lesen zu können - Programmiersprachen machen alles).

Wenn du da Hilfe oder einen Einstieg möchtest, kannst du mir gerne eine Freundschaftsanfrage schicken.