Frage

Ich bin ein Programmierer. Ich habe etwa 5 Jahre Programmierung in anderer Art von Sprachen erleben. Ich war um über meinen Code Geschwindigkeit, um den Speicher zu optimieren, dass mein Code verwendet, und über guten Codierung Stil und so weiter. Aber noch nie gedacht, wie sicher ist mein Code. Also ich habe meinen Code zu sehen zerlegt, was ein Hacker tun kann. Wäre es einfach, meinen Code zu knacken? Und ich sah, dass es! Es ist sehr einfach, weil ich Speicherung

  1. Seriennummer als String
  2. Verschlüsselung-Entschlüsselung Codes sowie

Also, wenn jemand die minimale Kenntnis von Assembler hat er / sie kann nur einfache dissembler und nach 10-20 Minuten von meinem Code debuggen ist geknackt !!! Auch könnte es durch Öffnen der exe mit Notizblock Ich denke, durchgeführt werden! : -)

Also, was ich frage, ist die folgende:

  1. Wo ich diese Art der von sicheren Informationen gespeichert werden sollte?
  2. Was sind die gemeinsamen Strategien zur Herstellung eines sicheren Code zu liefern?
War es hilfreich?

Lösung

Die erste, was Sie erkennen müssen, ist, dass Sie nie einen bestimmten Umkehrer vor Rissen alle Schutzsysteme verhindern, weil alles, was der Code tun kann, wird schließlich die Umkehrer herausfinden, wie es zu replizieren. Die einzige Möglichkeit, jede Art von zuverlässigen Schutz erreichen kann, ist das verschifft Programm haben nichts mehr als ein stummer Client und haben die Hauptlast der Software auf einem Server der Umkehrer keinen Zugriff hat.

Mit diesem aus dem Weg, können Sie sicher machen es härter für eine wäre Umkehrer Ihren Schutz zu brechen. Obfuscation die Art von ersten Schritt ist die Erreichung dieses Ziel. Ich habe keine Erfahrung mit obfuscators aber ich bin sicher, dass Sie einige Vorschläge für einige auf SO finden. Auch wenn Sie eine niedrigere Sprache wie C / C ++ verwenden, einfach den Code mit voller Optimierung kompilieren und Strippen alle Debug-Symbole bekommt man einen angemessenen Betrag von Verschleierung.

Ich lese diesen Artikel vor ein paar Jahren, aber ich denke immer noch, es die Techniken halten heute. Es ist einer der Entwickler von einem Videospiel namens Spyro reden über die Reihe von Techniken, die sie verwendet, die Piraterie zu verhindern. Sie behaupten, es war erst 3 Monate nach der Veröffentlichung, dass eine gecrackte Version verfügbar wurde, was ziemlich beeindruckend ist.

Andere Tipps

Wenn Sie über Piraterie betroffen sind, dann gibt es viele Wege, die Sie ergreifen können. Machen Sie den Code Sicherheit straffer (Verschleierung, Lizenzcodes, die Bindung der Software an einen bestimmten PC, Hardware / Dongle-Schutz, etc) ist eine, aber es ist zu bedenken, dass alle Stück Software geknackt werden kann wenn jemand ausreichend talentiert kann gestört werden.

Ein weiterer Ansatz ist das Preismodell für Ihre Software zu berücksichtigen. Wenn Sie $ 1000 eine Kopie aufladen, dann gibt es einen großen Anreiz für jemand einen gehen muß es zu knacken. Wenn Sie nur $ 5 berechnen dann, warum sollte jemand die Mühe, es zu knacken?

Also, was benötigt wird, ist ein Gleichgewicht. Auch die meisten werden Basisschutz normale Menschen stoppen lässig Kopien zu machen. Darüber hinaus werden einfache Techniken (Verschleierung und Lizenzcodes) und eine vernünftige Preisstrategie werden die meisten halten Cracker durch in Schach Möchtegern-machen die es sich nicht lohnt die Mühe der Rissbildung. Danach starten Sie in immer ausgefeilteren Techniken bekommen (Dongles / CDs benötigen vorhanden sein, um die Software laufen zu lassen, nur in der Lage, die Software nach der Anmeldung bei einem Online-Lizenzsystem zu laufen) zu implementieren, nimmt vielen Aufwand / Kosten und deutlich das Risiko von lästigen echten Kunden erhöhen (denken Sie daran, wie verärgert jeder bekam, wenn sie die Hälfte Leben gekauft, aber es würde sich nicht zulassen, das Spiel spielen?) - es sei denn, Sie zu einem beliebten Mainstream-Produkt (dh eines riesige Einnahmequelle zu schützen), es wahrscheinlich nicht viel Sinn, zu so viel Mühe gehen.

Machen Sie es Web-App.

Es wird in der Regel nicht werden gut geschützt, es sei denn es gibt einen externen Dienst die Prüfung zu tun, dass Sie die Kontrolle über sind - und das Service kann noch von jenen vorgetäuscht werden, die zu „knacken“ es wirklich will. Stattdessen vertrauen die Kunden und bieten nur eine minimale Schutz des Urheberrechts. Ich bin sicher, es war ein Artikel oder Podcast über das von Joel Spolsky irgendwo ... hier ist eine andere ähnliche Frage SO .

Ich habe keine Ahnung, ob es hilft, aber Windows bietet (seit 2000) einen Mechanismus zum Abrufen und verschlüsselte Informationen zu speichern und Sie können Salz auch diese Speicher auf einer Basis pro Anwendung bei Bedarf: Data Protection API ( DPAPI )

Dies ist auf einem Computer oder eine Benutzerebene, aber die Speicherung Serien und vielleicht einige Tasten verwenden es besser sein könnte, als sie in der Anwendung versteckt hat?

Was für ein sicheres redest du? Sichern Sie aus der Perspektive, dass Sie Ihre Benutzer Daten gut bewachen? Wenn ja, studieren einige echte Kryptographie und nutzen Vorhandene Bibliotheken Ihre Daten zu verschlüsseln. Die Win32-API ist ziemlich gut für diese.

Aber wenn Sie sprechen über einen Cracker zu stoppen aus Ihrer Anwendung zu stehlen? Es gibt viele Methoden, aber einfach aufgeben. Sie langsam Cracker nach unten, sie verhindere sie nicht.

Als erstes müssen Sie definieren, was Ihr Code sicher gegen sein sollte, ist sicher als solche ist sinnlos.

Sie scheinen über Reverse Engineering werden besorgt und Benutzer Lizenzcodes zu erzeugen, ohne zu bezahlen, obwohl man so nicht sagen. Um dies härter Sie Ihren Code und die wichtigsten Informationen auf verschiedene Weise verschleiern können. Es Bereich auch Techniken, um die Verwendung von Debugger schwerer zu machen, das Reverse Engineering von Schreiten durch den Code und sehen Sie die Informationen in klar zu verhindern. Aber das macht nur Reverse Engineering etwas härter, nicht unmöglich

Eine weitere häufige Bedrohung für die Sicherheit ist die Ausführung von unerwünschtem Code, zum Beispiel über Pufferüberlauf.

Eine einfache Technik, dies zu tun ist, alle Ihren Code xor über und xor zurück, wenn Sie es brauchen ... aber das muss ein angeborenes Wissen Versammlungs ... Ich bin mir nicht sicher, aber man könnte versuchen, diese:

void (*encryptionFunctn)(void);
void hideEncryptnFunctn(void)
{
    volatile char * i;
    while(*i!=0xC0) // 0xC0 is the opcode for ret
    {
        *i++^=0x45; // or any other code
    }
}

Um zu verhindern, gegen Hacker den Code sehen, sollten Sie eine obfuscator verwenden. Ein obfuscator werden verschiedene Techniken eingesetzt werden, die es extrem schwierig machen Sinn des verschleierten Code zu machen. Einige verwendeten Techniken sind String-Verschlüsselung, Symbol Umbenennung, Steuerfluss Verschleierung usw. Schauen Sie sich Crypto Obfuscator die zusätzlich auch externer Methodenaufruf verstecken, Anti-Reflektor, Anti-Debugging, etc

Das Ziel ist es, aufrecht so viele Hindernisse wie möglich in dem Weg eines Hacker Möchtegern-.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top