VB.net Programm disassemblieren

  • VB.NET
  • .NET (FX) 4.0

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

    VB.net Programm disassemblieren

    Hallo zusammen,

    ich habe ein Programm in vb.net geschrieben und möchte dieses nun an interessierte Nutzer Lizenzieren.
    Dazu soll der Nutzer im Programm auf einer Registrierungsform diverse Angaben machen damit diese per Emailclient an mich geschickt werden.
    Ich erstelle aus diesen Angaben einen eindeutigen Lizenz-Key der in einer Liste bei Dropbox hinterlegt wird, damit der Nutzer bei Programmstart darauf zugreifen kann.

    Meine Frage ist nun: kann man den Weblink der Liste bei Dropbox beim disassemblieren des Programmes lesen/ermitteln, und können auch die Zugangsdaten des Emailclienten (Benutzername/Password) gelesen werden?

    Vielen Dank für eure Hilfe!
    Norbert
    Versuche es mal mit dot.net peeks, dass ist ein guter .net dissasambler

    LG, J Herbrich
    Sicherheit: Gefahrenquelle Quellcode
    Schreib Deine Credentials nie in den Code. Das ist grob fahrlässig, da man .NET-Programme immer dekompilieren kann.
    Und Lizenzsysteme sind daher auch nicht möglich.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, was Trade gesagt hat. Dazu kommt, dass man ein eingebautes Lizenz-System bei .NET relativ einfach aushebeln kann, indem man das Programm bearbeitet:
    eigenes Programm PW Abfrage einbinden.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Naja, man kann die .NET Programme immer noch auf die Ziel Plattform Assemblirtrn, dann hat man zwar nativen coode aber man braucht trotzdem noch dass .net framework damit die moudle nachgeladen werden können.

    LG, J Herbrich
    nur weil man lizenzsysteme aushebel kann ist das kein grund darauf zu verzichten denn:
    ein lizenzsystem dient der lizenzierung und nicht dem schutz vor crackern.

    und gerne schreib es nochmal hier rein, ob nativ oder managed es ändert nichts daran das es gecracked werden kann.

    Nachtrag: natürlich muss das ganze so implementiert werden das der nutzer niemals zugriff auf sensible informationen haben kann, ein klassiker ist ein einfacher php layer der die datenbank schützt.

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

    Oder ein richtiger SOAP-Webdienst der einfach auf einen ASP.NET Server aufgeschaltet wird. Aber auf jeden Fall bekommt man dadurch auch nur bedingt schutz wen dieser Layer nicht richtig implementiert ist und sql befehle durch lässt die sql injection und co durchführen können.

    LG, J Herbrich
    Vielen Dank für eure Antworten!

    Ich wundere mich nur, warum soviele Tutorials die leichtsinnige Variante behandeln und Credentials und Dropboxadressen lesbar im Code reinschreiben.

    Ich habe mal eine vb-net-exe mit ILSpy disassembliert, das sieht ja aus wie ein offenes Scheunentor!?

    Vielen Dank und einen schönen Gruß
    Norbert
    Hallo @Norbert49,

    Das liegt daran das leider die meisten Pappenheimer auf Youtube die in dieser Richtung tuts machen 12 Jährige Skript Kidys sind und sich mit der Materie einfach nicht auseinander gesetzt haben.
    (An jeden der 12 oder Jünger hier im Forum ist, fühlt euch nicht angesprochen sondern macht es besser!)

    Der PC (bzw. das OS) muss um ein Programm ausführen zu können dieses auch verstehen (sprich übersetzen), dementsprechend ist es nicht möglich ein Programm lauffähig so abzusichern das es unmöglich ist an den Quellcode zu kommen. Man kann es einen nur schwerer machen in dem man zb. eine Obfuskation verwenden.

    Bei Programmiersprachen wie beispielsweise Skriptsprachen, wo der Quelltext ausgeliefert wird, bedeutet dies, die ausgelieferte Kopie des Quelltextes unkenntlich und (für Menschen) schwerer lesbar zu machen. Bei einem kompilierten Programm verwürfelt und verschleiert ein Obfuskator nicht den Quellcode, sondern entweder direkt das Kompilat oder eine Kopie des Quellcodes unmittelbar vor dem Kompilieren. Hier soll vor allem das (maschinelle) Dekompilieren verhindert werden bzw. das Dekompilat soll möglichst unverständlich werden.

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ein Obfuscator macht nichts anderes als den namen der Methoden zu Crypten aber man kann dass Progamm ja trotzdem noch nachvolzihen und somit bringt es ja eigentlich nichts.

    LG, J Herbrich
    Naja, verschlüsseln weniger.
    Auf jeden Fall arbeitet der PC da statisch und dem ist es egal, was er bekommt. Er führt das nach dem angegebenen Muster aus.
    Nur für den Menschen ist's halt schwer lesbar, aber keineswegs unmöglich.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    fakt ist dass es immer so ist dass der Computer den Quellcoode in Maschinen Sprache braucht, gut. Aber nun weiß man ja (oder ein Programm) was die einzehlnden Befehle bedueten. Und somit lässt sich zumindest in C oder Assambler jedes beliebige Programm von der Architektur unabhängig (wen dass Programm die Archtektur unterstützt) rekonstruieren.