Strings im Quellcode verschleiern oder ähnliches



  • Hallo,

    ich weiß das dieses Thema schon mehrfach hier angesprochen wurde, leider habe ich in den vorhandenen Threads nicht das Passende gefunden.

    Gibt es eine "einfache" Möglichkeit, wie ich Strings wie folgende (dieser gehört zu einer MySQL Verbindung) verschleiern kann?

    tcp://127.0.0.1:3306
    
    SELECT 'Hello World!' AS _message
    

    Ich habe mir auch mehrere Versuche gestartet Strings zu codieren etc., leider scheiterte es an manchen Stellen. Ein Problem stellten die Leerzeichen dar und selbst einfache Worte waren im Quellcode wieder per Notepad und co. zu sehen/lesen.

    Braucht man für so erwas einen Obfuskator?

    Danke im vorraus.

    mfg Christian



  • Was willst du erreichen bzw. warum?



  • Du kannst eine SSL Verbindung benutzen, die Konfiguration wird hier beschrieben. Aber ob das einfach ist?



  • Ich möchte, das die queries und Variablen nicht sofort sichtbar sind.



  • Also im Quelltext, nehm ich an, so wie im Titel beschrieben.

    Mach dir doch ne simple Decrypt-Funktion:

    Query(Decrypt("sdf79§JLsdjfSAD&"));
    

    Und ein simples Programm, wo du Text reinkopieren kannst und Ecrypt()-est.



  • Wieso willst du das genau machen? Im Allgemein ist es ein leichtes diese Dinge zu umgehen. Die Loesung, die Hi vorgeschlagen hat, wird sogar ein Amateur Reverser ziemlich schnell geknackt haben.

    Es ist deshalb fraglich, ob du die Zeit investieren willst, wenn es dir eigentlich keine ernsthafte Sicherheit bringt.

    Wenn du aber nicht willst, dass jemand z.B. mit dem Linux strings Command alle Query Strings ausliest, dann kannst du einen Executable Packer vewenden. Ein Beispiel ist UPX. Gibt der der Packer mehr Sicherheit? Nein, aber es gibt dir etwa gleich gute Eigenschaften wir einfache Anti-Reversing Methoden und der zusaetzliche Zeitaufwand ist praktisch null.

    *Edit
    Eventuell habe ich dich falsch verstanden: Willst du die Strings im Quellcode oder im Binary verstecken? Weil im Quellcode verstecken ist doch sowieso hoffnungslos.



  • https://de.wikipedia.org/wiki/Selbstmodifizierender_Code wäre ein Ansatz.

    Das musst du dann mit inline assembler machen (falls es nicht sogar nur in einem reinen asm Programm machbar ist).
    Hab die genaue Vorgehensweise nach 30 Jahren leider vergessen.



  • Oha, da habe ich das falsch geschrieben. Ich meinte natürlich in der Binary und nicht im Quellcode, Entschuldigung. @icarus2



  • Wenn du es so machst wie ich es beschrieben habe, sollten die Strings auch "verschlüsselt" im binary landen.
    Jedoch natürlich sehr leicht zu reversen..



  • @icarus2: Habe gerade UPX getestet. DANKE! Das ist genau das was ich gebraucht habe.



  • Dir ist aber schon bewusst, dass man UPX-Verpackung einfach wieder entfernen kann?



  • .. und dass manche AntiViren das gar nicht mögen.



  • eXc schrieb:

    @icarus2: Habe gerade UPX getestet. DANKE! Das ist genau das was ich gebraucht habe.

    Wohl kaum. Mal davon abgesehen, dass man das mit UPX selbst auch wieder entpacken kann, liegt das Binary zur Laufzeit sowieso entpackt im Speicher und ich kann mich da nach Belieben umsehen.

    Wenn ich so etwas mache, dann setze ich einen obfuscated String zeichenweise zusammen und rechne ihn ebenso zurück (volatile benutzen wenn der Compiler zu gut optimiert). Vorteil: es landet nichts, auch kein verräterischer obfuscated String im Data-Segment. Damit beschäftigt man die Leute dann durchaus etwas länger.

    Trotzdem sollte dir klar sein, dass das noch von einem Zehnjährigen geknackt werden kann. Egal wie clever du dich anstellst: gerade wenn du den String an irgendeine externe Systemfunktion übergeben musst, geht kein Weg daran vorbei, dass der String irgendwann zusammenhängend und unverschlüsselt im Speicher steht. Dahin setzt der Zehnjährige den Breakpoint und du hast verloren.



  • Da braucht's dann halt nen dickeren Protector.

    zB. https://www.oreans.com/themida_features.php



  • Hi schrieb:

    Da braucht's dann halt nen dickeren Protector.

    zB. https://www.oreans.com/themida_features.php

    Auch Themida wurde schon vor Jahren reversed. Da musst du dich nur in den einschlägigen reversing-Foren umsehen.



  • EOP schrieb:

    Auch Themida wurde schon vor Jahren reversed. Da musst du dich nur in den einschlägigen reversing-Foren umsehen.

    Updates machen in der Regel die aktuellen bypasses zunichte.

    Ist natürlich ein ewiger Kampf 🙂 Trotzdem finde ich es einer der besten Protektoren. Im Endeffekt kann jeder Schutz umgangen werden, denn die .exe muss ja schließlich am eigenen Computer laufen, und das im "Klartext" (mehr oder weniger, zumindest nicht zugleich).


Log in to reply