Dekompilieren

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Memo.

    Guten Tag,

    Ich weiß, das es etliche Thread's gibt die meinem Thema sehr nahe kommen, jedoch habe ich keines gefunden, welches wirklich mein Thema anspricht, daher der Thread.

    Folgende Frage:
    Wie man weiß, sind .NET Codes (andere Natürlich auch) Dekompilierbar.
    Nun weiß man auch, das es sog. Obfuskatoren gibt, die das Dekompilieren zwar erschweren, aber nicht gänzlich unmöglich machen.

    Nun zur Frage:
    Ich habe bereits VB Programme testweise Dekompiliert (Leere Forms mit paar Subs und Variablen, Testzwecke eben) und auch via Obfuskieren geschützt um es dann erneut zu Dekompilieren.
    Das Ergebnis war verhältnismäßig gut, man konnte noch alle String's etc auslesen.

    Nun zur Hauptsächlichen Frage:
    Nun habe ich gelesen, das es möglich ist, aus einen Visual C++ Programm (oder auch nur C++? Ich weiß es nichtmehr genau) eine sog. Blackbox zu machen, sodass der Code direkt in die Machinensprache übersetzt wird.

    Leider hat Google/Forensuche keine wirklichen Resultate zwecks der Beantwortung meiner Frage geliefert, weshalb ich nun hier Fragen möchte,
    ob es denn wirklich möglich ist, Visual C++ Codes in eine Art "Blackbox" zu verwandeln(Machinencode), sodass das Decompilen sogut wie unmöglich gemacht wird(Strings etc. bleiben verschlüsselt etc.)

    Gruß,
    Neoner
    Was soll eine Blackbox sein?

    Visual C++ ist immer noch nur eine Entwicklungsumgebung. Anscheinend wollen das die Benutzer dieses Forums einfach nicht wahrhaben :-D
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    *entfernt*

    B2T:
    Also ist es nur unter dem "Nativen C++" möglich, eine sog. "Blackbox" drauß zu machen?

    lg,
    Neoner

    Edit by hal2000:
    - OffTopic entfernt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Neoner schrieb:

    Also ist es nur unter dem "Nativen C++" möglich, eine sog. "Blackbox" drauß zu machen?

    Klar, mit C++ geht alles. Blackbox, Bluebox, RedSox usw.

    Problem 1: Dein "Problem" wird dadurch nur teilweise gelöst.
    Problem 2: MAN kann. Ob DU könntest darf vermutlich noch bezweifelt werden. PS: Bitte dann NICHT hier im OT nach C für Dummies fragen!

    picoflop schrieb:

    Problem 1: Dein "Problem" wird dadurch nur teilweise gelöst.
    Problem 2: MAN kann. Ob DU könntest darf vermutlich noch bezweifelt werden. PS: Bitte dann NICHT hier im OT nach C für Dummies fragen!
    Deine Antwort ist ziemlich nutzlos, es war eine schlichte Frage.. so eine Reaktion ist wirklich nicht das Feinste.

    Wieso wird mein "Problem" dadurch nur teilweise gelöst?
    und Natürlich kann ich es nicht, sonst würde ich hier immerhin nicht Fragen..

    Gruß,
    Neoner

    Edit by hal2000:
    - OffTopic entfernt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Neoner schrieb:

    Also ist es nur unter dem "Nativen C++" möglich, eine sog. "Blackbox" drauß zu machen?
    Meinst du das Black Box Model?

    en.wikipedia.org schrieb:

    In computer programming and software engineering, black box testing is used to check that the output of a program is as expected, given certain inputs.[4] The term "black box" is used because the actual program being executed is not examined.
    Von meinem iPhone gesendet
    Nein, mit Blackbox war eher folgendes gemeint:

    "Das Teil ist innendrin so Dunkel (abgeändert) das man nichts erkennen kann(Programmcode ergibt keinen Sinn)", das war für mich eher der Sinn der Blackbox.

    Neoner schrieb:

    das war für mich eher der Sinn der Blackbox

    Das klingt eher nach camera obscura ...

    EDIT
    das man nichts erkennen kann(Programmcode ergibt keinen Sinn)"

    Sorry, klingt natürlich nach dem VBP-Forum ;)



    FAKT: Du kannst in einer beliebigen Sprache (zb Brainfuck) ein Programm schreiben und das mit einem geeigneten Compiler in Byte-Code (aka Maschinencode, etc) übersetzen lassen. Dieser Code ist üblicherweise NICHT oder nur noch SCHWER rückübersetzbar. LESBAR ist er natürlich weiterhin, der Lesende muss lediglich Ahnung von Assembler haben, um den Code zu verstehen. Dann noch nen vernünftigen Debugger und die "Geheimnisse" des Programms sind keine mehr. Insbesondere Schlüssel, Passworte etc haben deswegen weder was in VB-, noch in C#- noch in Cpp-, noch in Brainfuck-Programmen was zu suchen!
    Das ist mir bewusst, es gibt mir nur um die Funktionsweise des Programmes, ob man diese größtenteils wider "Sinnvoll" Rekonstrutieren könnte..

    Naja, gut, danke für die Antworten, bin aufjedenfall ein stück weiter.

    Gruß,
    Neoner
    Das Ergebnis war verhältnismäßig gut, man konnte noch alle String's etc auslesen.
    Strings wirst du immer lesen können. Es gibt jedoch wirklich sehr sehr gute obfocusatoren, welche selbst mit guten decompilern wie z.b. .NET Reflector welcher wirklich den Code (und nicht il-asm) wiederherstellt, die Programme fast unlesbar machen. Natürlich kann man es noch entschlüsseln doch am Ende sind alle funktionen namen (klassen, methoden, felder, variabeln...) hashes usw., die methoden werden über delegates usw. abgewickelt natürlich auch wieder hashes usw. Im Grunde hast du es da wirklich äußerst schwer und selbst bei Konsolen Anwendungen mit Console.WriteLine("hallo welt") sieht das alles sehr verwirrend aus.

    Jedoch natürlich kann man das Zeug weiterhin wieder lesbar machen. Das gilt jedoch für jede Programmiersprache die je entwickelt werden wird, denn am Ende muss es ja immerhin von irgend jemand interpretiert oder zumindest von einem prozessor gelesen werden können.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.