Hacks und Verständnis von low-level Programmierung



  • Interessiert schrieb:

    @Auskenner Das sieht doch schon mal sehr interessant aus, cool! Würdest du sagen man kommt mit diesem Learning-by-doing Ansatz auch weiter oder sollte man das eher als Ergänzung zum bisschen üben halt benutzen?

    Nun, du verfestigst damit natürlich deine Assemblerfähigkeiten, da du den Code ja normalerweise disassemblierst und dann dabei ständig Assemblercode liest, irgendwann kannst du den dann flüssig lesen wie ein Buch.



  • Mechanics schrieb:

    ...Wenn du schon High Level Programmierung kannst und evtl. sogar als Programmierer/Entwickler arbeitest, würde es mich überraschen, wenn du gar keine Ahnung von Low Level Programmierung / Hacking hättest...

    In wie weit sollte das erstere mit letzteren zusammenhängen? Ich bin seit 15 Jahren beruflich in der Softwareentwicklung tätig, habe aber keinerlei Erfahrungen mit Hacking (wenn man mal von simpler Hexeditor-Anwendung vor ewiger Zeit bei Spielständen absieht), und verhältnismäßig wenig von dem was ich unter Low Level Programmierung verstehen würde. Zeiger etc. sind mir natürlich als C++ Entwickler bekannt, ebenso wie eich einen Grundaufbau eines Rechners kenne [ALU, Pipelining, Register...]. Aber bis auf wenige Assemblererfahrungen aus Schule/Studium ist mir maschinennahe Programmierung weitgehend fremd - Von Treiber- oder OS-Entwicklung, Embedded Systemen oder Mechatronic habe ich keinerlei Ahnung.

    Und ich kenne viele Entwickler die ihr Leben lang nicht einmal wirklich maschinennah Programmiert haben, und teilweise noch weniger mit Low Level Programmierung in Kontakt geraten sind (Denen man teilweise beispielsweise erklären muss warum man auch in Java eine Null-Pointer-Exception bekommen kann...).



  • sieh dir das Buch "Hacking: The Art of Exploitation" an. Das ist praxisnah und erklärt sehr gut, wie Programme auf unterer Ebene funktionieren und wie man gewisse Programmierfehler ausnutzen kann, um interessante Sachen zu tun.
    Und damit du dir nichts kaputt machst, ist eine eigene Live CD dabei mit der du all die Experimente durchführen kannst.



  • Man kann auch ohne low level Wissen was mit Hacken anfangen, nur halt in geringerem Umfang. Auch bei Java kann man durch geeignete Angriffe ein unsicheres Programm gezielt zum Absturz bringen, Daten auslesen oder gezielt veraendern.
    Bei Assembler kann man halt direkt auf Prozessorebene angreifen und wenn es einem gelingt, aus einer eigentlich sicheren Umgebung, wie der vm einer Skriptsprache auszubrechen, kann man das benutzen, um eigenen COde laufen zu lassen und damit das Programm vollstaendig zu uebernehmen.



  • Wird wohl der beste link sein den du in diesem thread kriegen wirst:
    https://forum.tuts4you.com/

    EDIT:
    Sollte für einen heftigen Anfang reichen.

    EDIT #2:
    Wenn du das durch hast kann ich dir auch noch weiterhelfen. Wird aber ne Weile dauern.



  • Entweder hackt man mit den ganzen Tools rum. Da brauch man dann nicht so viel Ahnung haben. Oder du beschäftigst dich einfach damit, wie ein Compiler funktioniert, wie eine CPU funktioniert und wie das OS oder Teile davon funktionieren. Die ganzen Protokolle der Kommunikation solltest natürlich auch ins Blut übergegangen sein.

    Wirkliches Hacken ist Wissen von allen Bestandteilen eines Systems, das heißt viele Jahre intensiv lernen.



  • Ich persönlich finde das Hacken total langweilig.



  • Interessiert schrieb:

    Kannst du mal ein Beispiel geben, wie du selber zB im Entwickler-Alltag damit in Kontakt geraten bist? Machst du was sehr spezielles oder wie genau?

    Im Entwickler Alltag eher weniger (zumindest zur Zeit). Hab mich als Schüler fürs Hacken und für alles interessiert, was mit Computern zu tun hatte. Hab damals Assembler gelernt und mich ein bisschen mit Betriebssystem Programmierung beschäftigt.
    Dann hab ich Informatik an einer FH studiert und hatte da auch einiges an Low Level Zeugs. Assembler, Microcontrollerprogrammierung, IT Security. Deswegen hab ich auch gemeint, dass man als Entwickler wohl kaum an dem Thema drumherum kommt. Aber wenn ichs mir recht überlege, kommt es natürlich sehr stark auf das Studium drauf an, wahrscheinlich kommen viele im Studium damit doch nicht in Berührung. Und als Werkstudent hab ich eine Weile in einer Firma gearbeitet, die jetzt zwar nicht so direkt 100% auf Low Level spezalisiert war, aber wo ich alles mögliche in der Hinsicht gemacht habe, z.B. gelötet und Linux Kernel Module geschrieben.



  • Es geht doch hier eigentlich um reversing und sowas.
    Nicht um www hacking.
    Oder hab ich was falsch verstanden?



  • ...war es irgendwie viel einfacher Assembler zu lernen. Es gab ja auch passende Betriebsyteme dafür (Dos und frühe Windowse) und Programmiersprachen (Basic), die das herausforderten.
    Aber Zahlensysteme verstehen, C-Datentypen, Zeiger und Bitschiebereien usw. sind ziemlich lowlevel.
    Für Shellcode/codiersachen braucht man gute Assembler/Hexcodekenntnisse.
    Ein sehr gutes Lowlevelspielzeug ist Jasmin -> http://wwwi10.lrr.in.tum.de/~jasmin/.


Anmelden zum Antworten