obfuscate assembler



  • Hi,

    Ist es möglich aus assembler obfuscated assembler zu machen, der einen disassembler total verwirrt damit dieser seltsamen Code ausspuckt, doch der Code noch einwandfrei funktioniert?
    Wenn ja, gibt es Anleitungen die verschiedene Methoden erklären?

    Vielen dank.

    MFG fsd.



  • nee, den disassembler kann keiner verwirren.
    nur den menschen dahinter, das ist aber recht einfach mit assembler.



  • Ich finde, das geht schon sehr leicht mit hochoptimiert compiliertem C++-Code. 😉



  • Ok, beispiele? 🙂

    MFG fsd.



  • Was soll man z.B. von diesem jmp halten?

    7c3d:	e9 fc ff ff ff       	jmp    7c3e <func+0xe>
    

    Es springt quasi auf sich selber.

    MFG fsd.



  • Bytes eines OpCodes doppelt zu belegen ist doch witzlos.
    Einen Anfaenger, der das erste Mal mit einem Disassembler rumspielt (nichts gegen dich 😃 ) kann man damit vielleicht abschrecken, aber sobald jemand mit einem Debugger anrueckt ist's restlos aus mit dem Zauber. :p

    Ist also die Muehe nicht wert, es sei denn, du willst Copy&Paste-Assembler-"Programmierer" abschrecken.

    BTW:
    Hinter deinem Code verbirgt sich IMHO nichts anderes als ein cld, 2 ungueltige OpCodes und ein indirekter Jump, mit einer Speicheradresse oder Register (dazu gehoeren noch hinter diesem Jump 2 weitere Bytes).



  • Nobuo T schrieb:

    Bytes eines OpCodes doppelt zu belegen ist doch witzlos.
    Einen Anfaenger, der das erste Mal mit einem Disassembler rumspielt (nichts gegen dich 😃 ) kann man damit vielleicht abschrecken, aber sobald jemand mit einem Debugger anrueckt ist's restlos aus mit dem Zauber. :p

    Ist also die Muehe nicht wert, es sei denn, du willst Copy&Paste-Assembler-"Programmierer" abschrecken.

    BTW:
    Hinter deinem Code verbirgt sich IMHO nichts anderes als ein cld, 2 ungueltige OpCodes und ein indirekter Jump, mit einer Speicheradresse oder Register (dazu gehoeren noch hinter diesem Jump 2 weitere Bytes).

    Ich will keinen Code schützen, sondern offensichtlich geschützten Code verstehen. 😉

    Das mit dem indirekten jump werde ich mir jetzt genauer angucken.

    MFG fsd.



  • 's gibt viele tricks, um disasm zu erschweren

    zb mit SEH, oder in den code stream ungültige opcodes reinmachen (die dann mit jmp, push/ret übersprungen werden)


Anmelden zum Antworten