C++ Dll

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Hallo,

    Meine Anwendung benötigt viele Dlls daher mochte ich diese in die Exe einbinden um eine direkte Weitergabe zu verhindern/erschweren.
    Ich habe bereits recherchiert, und bin auf dieses Tutorial gestoßen: Dll Einbinden.
    Das funktioniert erstklassig mit .net dlls.
    Allerdings habe ich eine DLL die in C++ geschrieben wurde.
    Wie kann ich diese in der exe einbetten und verwenden?
    Das obrige tutorial ist nur für .net dlls geeignet.
    Bin dankbar für jeden hilfreichen Vorschlag.

    LG
    Rikudo
    C# Developer
    Learning C++
    Hallo Gonger96

    Gibt es den nicht z.B. die Möglichkeit die DLL in nen Hex String zu konvertieren und den Hex String in ner Variable zu speichern.
    Und wenn ich die DLL ansteuern muss eben nicht entpacken sondern direkt in den Speicher laden und verwenden?
    C# Developer
    Learning C++
    Wieso müssen Anfänger IMMER alles irgendwo einbetten? Kennst du ein einziges halbwegs seriöses Programm, das seine Dlls in die Exe kopiert? Das ist einfach nur schwachsinnig und bringt nix. Im Gegenteil, es bringt so gut wie nur Nachteile. Leg sie daneben oder benutz keine. Punkt.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Beruhig dich.
    Die DLL enthält sensible Daten für die Sicherheit meines Programms und ich mochte eine direkte Weitergabe verhindern. (Zu mindestens den standartnutzer der keine Decompiling bzw Reverse Engeneering Kenntnisse hat sollte ein einbetten der DLL bremsen).
    Mit .net Dlls geht ja such also gibt es doch sicher n Trick wie man es mit nativen macht.
    Iwie als string speichern und zur Laufzeit direkt in den Speicher laden?
    Geht das nicht mit den Assembly/Reflection-Namespaces?
    C# Developer
    Learning C++
    Das ist erst recht ein Grund zur Aufregung. Wie stellst du dir das vor? Kritische Daten Clientseitig ist immer bullshit. Die Dll holt dir jeder so schnell aus der Exe raus wie du gar nicht kucken kannst. Hab da keine 2 Minuten und hab deine Daten. Und Reflection gibts bei nativen Dlls so oder so nicht. Dazu kommt, dass das alles nur in nem fehleranfälligen, unsicheren und unlesbarem Bullshit ausartet (selbst wenn du es hinbekommst die Dll in den Speicher zu laden, was du nicht wirst). Legs daneben und zwar nur das was jeder sehen darf. Ob Profi oder "standardnutzer".


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Du kannst die zwar in den Speicher laden und ausführen, dafür gibts aber keinen Grund. Da kann man den Code ja genauso gut direkt reinschreiben. Weißt du, dass man auch native PE's disassemblieren und in den Code gucken kann ? Passwörter und Co daraus zu hohlen ist noch einfacher, klick mal auf meine Signatur dass Programm zeigt dir alle Strings in der Exe/Dll schön aufgelistet an. Gucke Security through obscurity - immer ne schlechte Idee

    Gonger96 schrieb:

    Du kannst die zwar in den Speicher laden und ausführen, dafür gibts aber keinen Grund. Da kann man den Code ja genauso gut direkt reinschreiben. Weißt du, dass man auch native PE's disassemblieren und in den Code gucken kann ? Passwörter und Co daraus zu hohlen ist noch einfacher, klick mal auf meine Signatur dass Programm zeigt dir alle Strings in der Exe/Dll schön aufgelistet an. Gucke Security through obscurity - immer ne schlechte Idee

    Ich weiß, ich selbst kann auch die Basics von OllyDbg, .Net Reflector, Memory Dumping, Unpacking etc.
    Ich sage ja dem "Standartnutzer", den soll daran hindern and die DLL zu kommen.
    Und zu deinem Programm, das zeigt mir die Strings im Klartext an solange die Exe nicht obfuskiert ist.
    (Obfuscating ist nicht schützen, lediglich verwirren), und auch die Dll muss ja nicht als DLL in den Ressourcen liegen sondern bspw. eine mit RSA verschlüsselte Datei, die zur Laufzeit entschlüsselt und in den Speicher geladen wird.
    Meine Frage ist nur, wenn ich die DLL in irgend eine Art von String umwandle, z.B. Hex, Base64 o.ä., kann ich sie nicht zur Laufzeit entschlüsseln und in den Speicher laden? Das sollte doch auch mit einer nativen C oder C++ DLL gehen?
    C# Developer
    Learning C++
    Das hat mit der Programmsicherheit zu tun das gewisse Teile in C++ ausgeführt werden.
    Meine Frage ist nur, ob es überhaupt möglich ist eine native dll so in VB.Net zu verwenden das ich sie z.B. aus den Ressourcen heraus verwenden kann?
    C# Developer
    Learning C++
    Eine C++ Dll kannst du sowieso nicht aus VB.Net benutzen ohne Wrapper. Grade wenns um Sicherheit geht hilft ne zusätzliche native Dll nicht. Wenn wir dir jetzt zeigen wie man sowas macht, hast du ein komplett unsicheren Haufen Müll. Deswegen ists schöner wenn du das System mal überarbeitest und du beschreibst was genau du denn machen möchtest. Schlag dir das aktuelle Vorhaben aus dem Kopf
    Möglich ja.

    Aber lass es. Wenn der Teil so sensibel ist, dann solltest du es eigt. erst gar nicht verwenden.
    Es bringt dir 0 Sicherheit das ganze irgendwie einzubinden. Denn der Teil die DLL zu extrahieren ist um ein vielfaches einfacher als den nativen Code nachher zu verstehen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---