2009-06-05 6 views
3

Ich entwickle in C++/MFC und habe alle Ressourcen in einer separaten DLL platziert.Verhindern, dass Ressourcen-DLLs gehackt werden

Ich habe Fälle gesehen, wo die Ressourcen-DLL geändert wird und das Produkt illegal mit unterschiedlichen Namen verkauft, Grafiken usw.

Wie kann ich die Ressourcen-DLL vor Veränderungen/gehackt verhindern?

+3

Wenn jemand * wirklich * bereit ist, Ihre Ressource zu hacken/zu modifizieren, werden Sie es nicht vermeiden können. Ich würde vorschlagen, einfach die Tatsache zu akzeptieren, dass, wenn Ihr Produkt gut genug ist, jemand es hacken wird. Denke wie ein Kompliment: Wenn du etwas von deiner Ressource an einem anderen Ort als in deinen DLLs findest, würde das bedeuten, dass dein Programm als sehr gut designt gilt! Kurz gesagt, aus meiner Sicht: Die Zeit, die Sie damit verbringen, Ihr Programm vor Dieben zu schützen, ist ein reiner Zeitverlust. –

+1

@Olivier Pons, das ist nur wahr, wenn dein Schutz wirkungslos ist, und du viel Zeit damit verbringst, ihn zu platzieren. Wenn Sie etwas schnell machen können, was unerfahrene Hacker behindert, lohnt es sich wahrscheinlich. –

+0

@Olivier, kann jedes gewöhnliche Türschloss in Minuten, sogar Sekunden, gepflückt werden. Dennoch benutzen die meisten Leute sie. – peterchen

Antwort

-1

Sie könnten es mit einem verschlüsselten Passwort zippen und es in einen temporären Speicherort entpacken, bevor Sie es erneut laden. So etwas wie

BOOL CMyApp::InitInstance() 
{ 
    CString TempName = TempFileName(); 
    Unzip("MyZippedResources.Zip",TempName,Password); 
    HINSTANCE hInst = LoadLibrary(TempName); 
} 

Es gibt eine Reihe von free zip libraries, die das Aufgehen und Passwortschutz abovw

+0

Wenn jemand ernsthaft gegen die Lizenz verstößt, glaube ich nicht, dass ein in die DLL eingebettetes Passwort sie aufhalten wird. Das ist der Irrtum von DRM. –

+0

Diese Mechanismen sollen einen 100% effektiven Schutz verhindern und nicht bieten. Wenn Sie 90% derjenigen abschrecken können, die versuchen würden, Ihre Bewerbung zu hacken, ohne zu viel Zeit oder Mühe zu verschwenden, lohnt es sich. –

+0

Wie in meinem Kommentar zu Matthews Beitrag erwähnt - je trickreicher Ihr Schutz ist, desto mehr Hacker werden es hacken. Ja, Sie können verhindern, dass ein paar Noob-Hacker erfolgreich sind, aber diese Noobs werden wahrscheinlich erfahrenere konsultieren (es gibt viele Hack-Foren da draußen). Und die erfahrenen Hacker könnten tatsächlich denken, dass es Spaß macht, Ihren Code zu hacken. Also ja, Sie verhindern, dass einige Leute es hacken, aber Sie erhöhen die Chance, dass es schließlich gehackt wird (weil es Spaß macht!) – Paulius

1

decken können, wenn Sie Ihre App vertrauen Sie nur einen Hash auf der Ressourcen-DLL vor dem Versand und dll ablehnen berechnen könnte: s mit anderen Hashes.

+0

Das löst nichts.Jemand kann den Code, der die Ressourcen überprüft, einfach aushacken. –

+0

Nun, in diesem Fall können sie nur irgendwelche Änderungen vornehmen. Meine Annahme war, dass Sie der Anwendung vertrauen. –

+0

Wenn jemand bereit ist, Ihre DLL illegal zu kopieren, warum sollten sie die ausführbare Datei nicht illegal kopieren (und modifizieren)? –

4

Unterschreiben Sie es und überprüfen Sie dann, ob die Signatur gültig ist und dort. Ich würde eine Art offizielles Zertifikat für das Unternehmen verwenden, aber ein selbstsigniertes wird es tun.

Eine schnelle Google aufgedreht:

Digital Code Signing Step-by-Step Guide (altho sieht es aus wie es für Office XP ist)

Prevent DLL Tampering on Windows Apps

UPDATE:

Es lohnt sich auch, wie gut die EXE zu unterzeichnen.

Wie bereits im Kommentar, gibt keine Möglichkeit, Sie jemand mit genug Geschick vor Manipulation mit Ihrer Anwendung zu stoppen. Es geht um Risikomanagement. Wie sehr möchten Sie jemanden "riskieren", der sich an Ihrer Anwendung zu schaffen macht. Ist es die Zeit und Mühe wert, die Messlatte höher zu legen, sodass Sie eine hoch qualifizierte Person benötigen, um Ihre Bewerbung zu verbessern? Das liegt an dir.

Ich würde zumindest alle Ihre Code-Dateien signieren, die Sie trotzdem veröffentlichen. Es überprüft, ob diese Dateien von Ihnen stammen und nicht manipuliert wurden.

+0

Außer jemand kann nur den Sig-Verifizierungscode hacken ... –

+1

Ja, das stimmt. Es dreht sich alles um das Risiko-Management, die Stange (sozusagen) zu heben. Alles, was Sie in der Software tun, kann auf die eine oder andere Weise gebrochen werden. Wenn du die EXE auch unterschreibst, dann erhöhst du die Bar ein wenig mehr. Wenn Ihr Ziel groß genug ist, egal, was Sie tun, werden die Leute hacken. –

0

Sie können nicht. Solche Probleme müssen mit dem Gesetz behandelt werden, nicht mit dem Code. Beachten Sie auch, dass eine solche "Lösung" wahrscheinlich die Nutzungsrechte des Benutzers verletzen würde. Ich habe oft damit experimentiert, Programmressourcen aus Spaß zu verändern (z. B. einen Tux auf der Windows-Anmeldeseite zu setzen). Ich wollte niemanden täuschen und verteilte das Ergebnis nicht einmal.

+0

Stimme völlig zu. Sorgen Sie sich dafür, Kunden zufrieden zu stellen. Wenn sie Ihre Bewerbung lieben, werden sie Ihnen berichten, sobald sie eine Abzocke von Ihrer App finden. Dann können Sie zu Ihrem Anwalt gehen, Klage einreichen, Millionen wegen Urheberrechtsverletzungen erhalten, sich mit halbnackten Mädchen in der Nähe des großen Pools zurücklehnen und Ihr Getränk genießen. – Paulius

+1

Dies ist in vielen Situationen einfach nicht richtig. In den Staaten greifen große Softwarehäuser regelmäßig auf Anwälte zurück. Anderswo müssen kleine Softwarehäuser weniger teure Mittel verwenden, um nicht abgezockt zu werden. Wenn Sie ein kleines Softwarehaus, wie ich, in einem vertikalen Nischenmarkt betreiben, in dem Sie weniger teure Lizenzen als viele billige Lizenzen verkaufen, ist dieses Argument nicht haltbar. –

+1

Ja, tut es. Außerdem, wenn Sie mit Ihrem Schutz zu knifflig werden - Antivirenprogramme und Firewalls verhindern möglicherweise, dass Ihre App vollständig ausgeführt wird (sie könnten den _protection_code als mögliche Bedrohung erkennen). Wenn Sie nur ein paar teure Lizenzen verkaufen, wie bekommt der _hacker_ dann Ihre App? Oder denken Sie, dass Ihre Kunden, die bereits die Lizenzen gekauft haben, weitermachen und es hacken werden? – Paulius

0

Sie könnten Prüfsumme der DLL Binär, überprüfen Sie es aus dem Hauptprogramm und beenden/deaktivieren Funktionen, wenn es anders ist. Es wird niemanden aufhalten, der die Lust hat, deine Sachen abzuzocken, da sie den Prüfcode in deiner exe hacken könnten, aber es wird nicht so einfach sein.

0

Wie jeder sagt nur die Messlatte höher kann es schwieriger zu machen zu hacken, würde ich auf sie nicht mehr Zeit verbringen als einen Hash, wie disown vorschlägt. Eine andere Möglichkeit, darüber nachzudenken (wenn Ihre Software es erlaubt), ist, Ihre Software auf lange Sicht mit Updates usw. attraktiv zu machen. Auf diese Weise wollen die Leute lieber ein Konto als eine gehackte Version.

0

Sie können nicht verhindern, dass Ihre Anwendung gehackt wird, genauso wenig wie Sie verhindern können, dass Ihr Auto gestohlen wird, sicher, Sie können ein modernes Alarmsystem haben und es brennt Feuer, wenn es erkennt, dass es nicht das ist Besitzer, aber jemand könnte nur das Glas brechen oder einen feuerfesten Anzug tragen. Kurz gesagt, Sie können nicht.

0

Wenn dies kommerzielle Software ist und Sie sich Sorgen um Diebstahl machen, sollten Sie sich Lösungen von Drittanbietern ansehen. Es gibt eine Menge Software, die entwickelt wurde, um vor Shareware zu schützen. Sie sind unterschiedliche Preise mit verschiedenen Funktionen.

Wie andere gesagt haben, ist keine reine Softwarelösung völlig sicher. Aber ich würde empfehlen, dies auszulagern und sich auf den Geschäftswert zu konzentrieren, den Ihre Anwendung bietet.

+0

Shareware? Das wirft die Frage auf, warum Shareware kostenlos existiert, aber ihren Quellcode nicht preisgibt. Je bekannter die kommerzielle Verschlüsselungssoftware ist, desto höher ist die Wahrscheinlichkeit, dass jemand diese Software gehackt hat. Dann müssen sie nur die Schritte in Ihrem Programm reproduzieren, anstatt Custom-Reverse-Engineering zu verwenden. Es könnte also sein, dass eine sicherere Lösung weniger sicher ist. Vor allem, wenn dieser Hack verteilt wird. Werbung kann manchmal gut sein, aber vermeide die Popularität. – TamusJRoyce

Verwandte Themen