Code vor Decompile Schützen so wie z.b Google Chrome usw

  • VB.NET

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

    Code vor Decompile Schützen so wie z.b Google Chrome usw

    Hey Leute,

    Ich weiß, ich hab schon viele Beiträge zu dem Thema Kompilierung gelesen und schon gemerkt das es nicht möglich ist Code zu 100% zu schützen.

    Zudem hab ich ein Beitrag von dem Benutzer Trade gelesen der gesagt hat, dass man sicherer ist wenn man sein Programm mit Datenbanken gestaltet!
    Dazu habe ich eine Frage

    wie ist man sicherer wenn man eine Datenbank Verbindung herstellt?

    im endeffekt muss man doch auch die Login Daten in den String schreiben damit man eine Verbindung herstellen kann (Das gleich Spiel wie bei FTP Verbindungen).
    und Hashes kann man auch enthashen so weit ich gelesen habe
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Aber wie machen das die großen Firmen?

    ich weiß solche großen Firmen wie Mozilla Firefox, haben das Programm sicher nicht in VB Programmiert sondern wahrscheinlich in C/C++!
    Könnte man sagen das es Möglich ist, denn Source Code nicht auszulesen, wenn man das Programm in C/C++ Programmiert hat.

    Also Bitte gibt mit mal eine Antwort wie es die Leute von großen Firmen ihren Code Schützen die haben ihn ihrem Code doch auch Verbindungen zu Datenbanken, die ihn einem String gespeichert sind

    Ich versuche zu Lernen und bin kein Profi deswegen Spart euch dumme Kommentare.
    MFG Systems.exe

    Systems.exe schrieb:


    ich weiß solche großen Firmen wie Mozilla Firefox, haben das Programm sicher nicht in VB Programmiert sondern wahrscheinlich in C/C++!
    .


    Firefox ist OpenSource... und Google Chrome größtenteils auch...
    dxr.mozilla.org/mozilla-central/source/
    https://chromium.googlesource.com/
    Du müsstest die Stelle von Trade nochmal raussuchen, denn entweder hast du da was falsch verstanden oder er hat blödsinn geredet.
    Es gilt "security through obscurity" immer zu vermeiden, es ist schlicht und einfach der falsche Weg. Auch wenn etwas in C/C++ geschrieben wurde soetwas wie strings stehen spätestens bei der Ausführung frei auslesbar im Memory. Und wenn man nichts obfuscated auch direkt in der exe, so dass man den string mit notepad finden kann.(Wobei es natürlich extra programme gibt, die das etwas einfacher machen, jeder compiler liefert dafür entsprechende tools mit^^)
    D.h. mach dein Programm auf eine Art sicher, sodass irrelevant ist ob der Source nun sichtbar ist oder nicht.
    Deshalb die Frage was willst du überhaupt machen und was genau soll geschützt werden?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Also ich hab ein Programm, das auf eine Datenbank zugreift

    Das Problem ist das ich ja irgendwie eine Verbindung zur Datenbank aufbauen muss.
    Diese Datenbankverbindung (Also Username Password Datenbankname) wird ja ihn Strings gespeichert
    und wenn jemand ankommt und mit ILSPY mein Programm decompiliert, dann hat er ja zugriff auf meine Datenbank da sie ja im Code in einem String stehen und man Strings ja mit ILSPY auslesen kann.

    Hab grade nochmal den Beitrag von Trade nachgeschaut er meinte, dass man die Datenbank an sich schützt das hab ich Falsch verstanden.
    Trade falls du das ließt du hattest recht sry xD
    MFG Systems.exe

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Systems.exe“ ()

    Als erstes solltest du die Verbindungsdaten tu DB nicht im Code hinterlegen, sondern verschlüsselt in z.b ner Datei. Das ist zwar auch nich 100%sicherer, aber ein Anfang.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Na wo ist die Datenbank Lokal oder remote? Und was für Daten stehen in der Datenbank und warum darf der Benutzer diese nicht auch manuell auslesen können?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo Systems.exe

    Hier ist einfach ein bisschen Fantasie gefragt.

    Speichere deine Zugriffsdaten vorgängig vercryptet ab. Damit nachher die Eingangsdaten wieder decryptet werden können, kann man sich ja beim Programmstart ein Passwort einrichten.

    Auch die Möglichkeit über ein Masterpasswort der beim erstem Programmstart eingerichtet wird ist möglich. In dem zuerst ein zufälliger Key (oder selber gewälter Key) erstellt wird, und auf dem werden dann andere Schlüssel abgeleitet. Auch sowas geht.

    Man könnte auch für die Vercryptung die HD-ID oder sonst einer dieser ID's zurechtlegen, einfach mit der Gefahr, sollte z.B. dann die HD ausgewechselt werden, ist es nicht mehr möglich die entsprechenden decryptungen zu machen.

    Dann gibt es extra für Strings den halbwegs sicheren SecureString. Nutze diese. So sind die Zugangsdaten während der Laufzeit nicht offensichtlich, und du hast wiederum ein bisschen mehr Schutz.

    Wichtig ist aber, dass man selber eine Richtung vorschlägst, wie man es machen will, und erst dann hier im Forum fragst, wie man so was lösen kann. Eventuell kommen dann ja bessere vorschläge.

    Freundliche Grüsse

    exc-jdbi
    Vlt. gibt es aber noch bessere Lösungen, deshalb wäre es sinnvoll meine oben genannten Fragen zu beantworten. Evtl. ist nämlich gar kein Passwort nötig.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Es stellt sich immer die Frage: Was soll vor wem geschützt werden? Also das ist die Weiterführung der Frage von jvbsl.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hallo!

    Logindaten schreibt man m.E. besser in eine Datenbank. So wie hier im Forum die Anmeldedaten. Das Script muss dann nur auf ein "Access allowed" vom Server warten, bekommt es ein "Access denied" zurück bricht man das Script mit einer entsprechenden Meldung ab. Also anstatt einen festen Zugang auf die Datenbank einen Zugang auf Benutzerebene. Der Benutzer muss dann seine Zugangsdaten eingeben. Aus Sicherheitsgründen könnte man den Zugang so aufbauen dass das Kennwort nach einer bestimmten Zeit abläuft und erneuert werden muss.

    Gruß, René

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

    Etwas ganz ähnliches habe ich mich auch schon gefragt. Der einzig sichere Weg ist doch, dass man vom Nutzer verlangt beim Programmstart ein sicheres Passwort einzugeben, welches ausschließlich auf dem Server hinterlegt ist. Alle Alternativen, die ohne dieses Passwort auskommen, sind doch leicht auszuhebeln oder?

    Auch muss es für jeden Nutzer einen einzigartigen Zugang zur DB geben. "Universelle" Zugänge, die über die Anwendung selbst reglementiert werden sind doch auch allgemein unsicher oder?
    Option strict = on

    If it's stupid and it works it ain't stupid.
    Da gibt es viele Wege.
    Einfach wäre es einen Server mit einer Datenbank aufzusetzen (MySQL) und per PHP ein "Login Skript" zu schreiben. Aus diesen könnte dein Client dann eine aktive Session abfragen und speichern. Den Rest kannst du dann per API (Schnittstellen) ermöglichen.

    -Serverseitiger Login.
    -Datenweitergabe an Client nur durch Serverseitig bestätigten Login.
    -Speichervorgänge und Datenmanipulation wären alle durch PHP abgeregelt und somit würde der Client keinen direkten Zugang zu deiner Datenbank haben.

    Hört sich schwerer an als es ist.

    Nils_Kr schrieb:


    (...) Auch muss es für jeden Nutzer einen einzigartigen Zugang zur DB geben (...)

    Man könnte zusätzlich eine PC-ID generieren. Diese PC-ID (muss vom Benutzer an den Autor übermittelt werden) wird zusätzlich (manuell vom Anbieter) in den Datensatz integriert. Nur wenn dann Benutzername, Kennwort und PC-ID übereinstimmen wird der Zugang gewährt.

    Nils_Kr schrieb:


    "Universelle" Zugänge, die über die Anwendung selbst reglementiert werden sind doch auch allgemein unsicher oder?

    Sobald die Zugangsdaten in der Anwendung stehen ist der Schutz umgehbar. Auch Verschlüsselung der Zugangsdaten ist nicht unbedingt sicher.

    Es gibt schon Möglichkeiten einen Zugang sicher zu machen. Und man muss regelmäßg nachrüsten, z.B. durch Updates. Dafür muss man aber auch Geld ausgeben wollen.