Hacks und Verständnis von low-level Programmierung



  • Servus,

    ich hoffe ich schlage hier jetzt kein absolutes Tabu-Thema an. Ich denke mal ich kann wenig dagegen tun, dass ich jetzt als Teenager, der in irgendeinem Spiel auf die Schnauze bekommen hat und sich rächen will, rüberkomme.

    Aber nun ja, mich interessiert die Thematik irgendwie nun mal.

    Hat sich denn einer von euch schon mal in Thematik dieser Richtung eingelesen? Muss ja jetzt nicht unbedingt umgesetztes Schreiben von Hacks sein, generell einfach das Wissen, das dafür benötitgt wird.
    Interessiert das jemanden hier auch überhaupt? Wie habt ihr euch zu der ganzen low-level Thematik eingelesen? Wo war euer Ansatz?

    Gibt ja etliche wirklich etliche Themenbereiche, die damit zu tun haben und zu denen man sich belesen könnte.

    Ich frage mich nur, ob es villeicht einen sinnvollen Ansatz gibt, in der man sich das ganze mal näher bringen kann?
    Lernt man einfach Assembler? Das wäre vermutlich gar kein schlechter Ansatz, aber dann fehlt einem vermutlich immernoch viel Wissen.



  • Interessiert schrieb:

    Muss ja jetzt nicht unbedingt umgesetztes Schreiben von Hacks sein

    Doch, also "Hacken" ist jetzt nichts wirklich geheimes. Gibt zig Bücher dafür, die alles mögliche Step by Step und mit Screenshots beschreiben. Zwar hauptsächlich für Laien, aber ich war schon selber etwas überrascht, dass viele Bücher wirklich auf Angriffe fokussiert sind und erst gar nicht versuchen, das irgendwie als Hintergrundwissen für Admins zu tarnen.
    Für Fortgeschrittene und welche, die sich wirklich auskennen wollen gibts natürlich auch Bücher.

    Ansonsten klar, an der Thematik kommt man als Informatiker praktisch nicht vorbei. Sowohl als Admin als auch als Entwickler muss man natürlich was davon verstehen und tut es auch, ist wie gesagt keine schwarze Magie.

    "Interessieren" tuts schon. Ist aber im Endeffekt nicht so interessant, wie man vielleicht glaubt. Zumindest fand ich das alles früher viel interessanter. Es ist schon ein interessantes Thema, aber man kann damit nicht viel anfangen. Ich würde mich darauf nicht spezialisieren wollen, da fand ich dann vieles andere interessanter.



  • Ich hab solche Bücher leider auch immer nur als ziemlichen Kram im Kopf gehabt. Sowas, dass sich tatsächlich an ein jüngeres Publikum richtet.

    Aber du meintest es gibt auch durchaus Bücher für Fortgeschrittene, daher werde ich mich mal ein bisschem umsehen.
    Die Frage ist halt immer nur, wie man vorher erkennt, was was taugt und was nicht. Bei so einem Thema kann ich mir vorstellen, dass da viele Bücher ordentlich daneben langen.

    Tatsächlich suche ich einfach nur nach einem Themen-Gebiet, das mich so in der Arbeitswoche die freien 2-3 Stunden des restlichen Tages beschäftigt. Irgendetwas, an dem ich arbeiten kann und mit dem man auch bisschen vorran kommt.
    Zzt spiele ich da nur oder höre planlos Musik. Wird langweilig und bringt einem auch nichts an Wissen.

    Da ich leider mit wenig Kreaitivät gesegnet wurde ist das so ziemlich das einzige, das mir einfällt.
    Das ansprechende daran ist halt, dass man über den Tellerrand von high level Programmierung blickt und vor allem, dass man damit auch irgendwas "in der Hand" hat. Ich kann damit was ausprobieren und Ergebnise sehen, super! 😛

    Es gibt viele interesante Dinge, aber wenige mit denen man privat auch tatsächlich irgendwas auf die Beine stellen kann.



  • Was ist dein Wissensstand und was machst du? 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.

    Und was genau willst du eigentlich? Das kann ja auch alles mögliche sein. Du könntest ja einfach mal Assembler oder Microcontroller Programmierung lernen. Oder Treiber Programmierung, oder so ein bisschen Betriebssystemprogrammierung. Oder du spezialisierst dich tatsächlich Richtung IT Security und schaust dir da was an, da muss man jetzt aber normal nicht so viel programmieren.



  • Schau dich nach Crackmes um und lerne in der Praxis daran.

    http://de.wikipedia.org/wiki/CrackMe



  • @Mechanics: Naja, ich studiere noch und momentan arbeite ich seit ... 4 Monaten in der Entwicklung an einem großem Web-shop (Java,Spring,Hybris, sowas) [duales Studium]

    Ich werde vermutlich auch noch nach Abschluss des Studiums längere Zeit hier in der Firma sein (da es mir soweit sehr gut gefällt). Spontan fällt mir jetzt nicht ein, wie ich in dieser Zeit mit low-level Programmierung in Berührung kommen könnte?
    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?

    Was genau ich möchte kann ich leider so genau noch nicht sagen, da ich in diese ganze Thematik bisher wirklich wenig Einblick habe.
    Assembler an sich denke ich ist wohl ein fast notwendiges Werkzeug, wenn man auch selber irgendwas in dem Bereich umsetzen will?
    So IT Security generell ist denke ich eher weniger meine Sache. Ich bin kein begnadete Mathematiker, der dann irgendwelche Algorithmen analysiert oder sonst etwas und außerdem setze ich gerne Dinge um und programmiere auch gerne.

    @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?



  • 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