Wenn ich es von Laien höre, empfinde ich es beleidigend.

Kommt es hingegen von anderen Fachleuten auf meinem Gebiet, ist es neutral bis positiv.

Das gleiche gilt für Geek, Hacker und Genie. Ich hasse es, von Leuten, die keine Ahnung von z. B. höherer Mathematik haben, Genie genannt zu werden.

Ein schwarzhäutiger Kumpel nennt seine Landsleute auch Neger, aber natürlich überhaupt nicht abeertend gemeint. Ich persönlich würde ihn als Weißer aber logischerweise nicht mal im Traum so ansprechen.

Kommt also immer drauf an, WER etwas sagt, und weniger darauf WAS er sagt.

Nachtrag: Der Begriff Eierkopf ist auch so eine Sache. Kommt drauf an, aus wessen Mund er kommt.

...zur Antwort
def Anzahl_Vokale(wort):
    return len([v for v in wort.lower() if v in 'aiueoäöü'])

def Viele_Vokale(woerter, anzahl):
    return [w for w in woerter if Anzahl_Vokale(w) >= anzahl]

print(Anzahl_Vokale('bestimmt'))

print(Viele_Vokale('schreibe dann eine funktion viele_vokale, die zwei parameter hat'.split(), 4))
...zur Antwort

Deine Frage ist Schwachsinn.

Arbeite einfach das offizielle Tutorial auf der Python-Website von vorne bis hinten durch, und lerne danach große Teile der API-Docs auswendig.

Würden das alle Python-Entwickler so machen, gäbe es weniger Fragen auf Kindergarten-Niveau im Netz, die immer wieder und wieder und wieder gestellt werden.

Also lerne Python bitte richtig, oder gar nicht. Und lass den Begriff Hacking daraus!

...zur Antwort

Ich muss den anderen widersprechen, dass man einer EXE-Datei nicht mehr ansehen kann, mit welcher Sprache sie entwickelt wurde. Das geht sehr wohl, und ist nicht mal sonderlich schwierig.

An einer gestrippten EXE-Datei (also ohne jegliche Debuggingsymbole) erkennt man als erfahrener Reverser folgendes:

  • die Programmiersprache (z. B. C, C++, Pascal, wasauchimmer)
  • die Version der Programmiersprache (C89, C18, C++11, C++17, ...)
  • den verwendeten Compiler (GCC,, Clang, MS, ICC, ...)
  • die Version des Compilers (GCC 8.3, GCC 9.1, etc.)
  • das verwendete Optimierungslevel (-O1, -O2, -Ofast, -Osize, ...)
  • die verwendeten Compilerflags (-g, -Werror, usvm.)
  • usw. usf.

Genau genommen braucht man dafür nicht mal eine ganze EXE-Datei, sondern es reichen relativ kurze Auszüge des Disassemblats. (einige zich Zeilen reichen oft völlig aus)

Das liegt daran, dass unterschiedliche Compiler mit unterschiedlichen Flags völlig unterschiedliche CPU-Instruktionen erzeugen:

  • Anhand der generierten Stackframes, kann man Optimierungslevel ableiten.
  • Anhand von RVO kann man Compiler und Version erkennen.
  • Anhand des Aufbaus von Strukturen und Objektpointern, kann man den Polymorphismus und damit C++ / ObjectPascal unterschieden, inkl. Version.
  • Anhand von Inlining UND zusätzlichem Vorhandensein bestimmter Funktionen, kann man genau sehen, ob eine Funktion als "static" markiert war, oder nicht.
  • Anhand von Sprunginstruktionen und deren Reihenfolge der erwarteten Fälle kann man ebenfalls Compiler, Optimierung, und Version der Programmiersprache erkennen.

All das funktioniert nur in Kombination miteinander und zeigt natürlich immer nur Tendenzen auf. Aber aus Erfahrung weiß ich, dass man damit wirklich zu 99,9% aller Fälle richtig liegt.

Zum Reversing-Üben habe ich mir ein Skript gebaut, welches mir kurze Codeschnipsel mit unterschiedlichsten Compiler- / Flag-Kombinationen übersetzt und diese im Anschluss automatisch disassembliert.

Mit der Methode lernt man am meisten, und man bekommt recht schnell ein Gefühl dafür, wie eine Software gebaut wurde, wenn man nur einen Disassemblat-Schnipsel vor der Nase hat.

Aber um deine Frage zu beantworten: Den Quelltext kannst du i. d. R. nicht aus einer EXE-Datei extrahieren. (Es sei denn, wir reden von AutoIT, VB 5.x, primitiven Python-Packern, usw.)

Grundsätzlich kannst du jeden Code disassemblieren (nicht zu verwechseln mit dekompilieren!), und wenn man das lesen kann, dann weißt du natürlich auch, was die Software macht.

Aber Reversing ist kein Kinderspiel! Es braucht viel Erfahrung und Zeitaufwand, um damit weiter zu kommen.

...zur Antwort

"Mathematik" von Tilo Arens.

Ist ziemlich dick aber so unfassbar spannend, dass es einen im Selbststudium nicht mehr loslässt.

Dazu würde ich dringend den Zusatzband mit Übungsaufgaben und Lösungswegen empfehlen, auch wenn im eigentlichen Buch genügend davon vorhanden sind.

Außerdem gibt es noch einen weiteren Zusatzband dazu, mit Ergänzungen und Zusatzkapiteln, die keinen Platz mehr im Hauptband gefunden haben, aber nicht weniger spannend bzw. wichtig sind. (Viele Übungen im Hauptband sind nur mit dem Wissen aus dem Zusatzband lösbar!)

Mit dem Arens kannst du zwar Leute totschlagen, aber lass dich vom Umfang nicht abschrecken, und arbeite das Buch von Anfang bis Ende in aller Ruhe durch.

Gerade als Physiker wirst ja mit Pippifax wie Integralen und Fourier-Transformationen recht schnell in Berührung kommen, und wenn es dann später mit Tensoren weiter geht, ist der Arens ein guter Begleiter.

Sei dir aber bitte im Klaren darüber, dass auch ein dicker Schinken wie der Arens nicht alles abdecken kann und will. Du wirst noch viele andere Fachbücher lesen müssen, aber als grober roter Faden ist er sehr wertvoll. Gerade am Anfang.

Und ich wiederhole mich nochmal: Es macht enormen Spaß damit im Selbststudium zu lernen. Der Arens ist spannender und packender, als es je ein Kriminalroman sein könnte. (Gut, ist vermutlich auch Ansichtssache ...)

Viel Erfolg! :)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.