Wie zu verschleiern lua code?
Ich kann nichts finden, bei Google für einige Tools, die verschlüsselt/verschleiert meine lua-Dateien, also beschloss ich, hier Fragen. Vielleicht sind einige Profi weiß, wie es zu tun? (Gratis).
Habe ich aus einem einfachen Spiel in lua jetzt und ich don ' T wollen die Menschen zu sehen, den code, sonst können Sie leicht zu betrügen. Wie kann ich den gesamten text innerhalb der .lua-Datei einfach zufällige Buchstaben und so?
Ich programmiere in C# und ich hatte dieses .NET obfuscator namens SmartAssembly und die funktioniert ziemlich gut. Wenn jemand versuchen würde den code von meinen Anwendungen wäre es nur eine Reihe von Buchstaben und zahlen, zusammen mit chinesischen Zeichen und Dinge.
Jeder kennt jedes Programm, das dies tun kann, für lua aswell? Laden Sie einfach, welche Datei zu verschlüsseln, klicken Sie auf Verschlüsseln oder soemthing, und bam! Es funktioniert!?
Dies zum Beispiel:
print('Hello world!')
würde wiederum in etwas wie
sdf9sd@@@&/sdfsdd9fd0f0fsf/&
InformationsquelleAutor | 2014-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach vorkompilieren Dateien (Brocken) und laden von binären Blöcken.
luac
können Sie strip-debug-Informationen. Wenn das nicht ausreicht, definieren Sie Ihre eigenen Transformationen auf die kompilierten lua -, stripping-Namen, wo möglich. Es ist nicht wirklich so viel Nachfrage nach lua obfuscators obwohl...Auch, dass Sie Locker einer der wichtigsten Vorteile der Verwendung eines eingebetteten Skriptsprache: Erweiterbarkeit.
InformationsquelleAutor Deduplicator
Einfachsten Verschleierung option zu kompilieren, Lua-code, wie andere vorgeschlagen, aber es hat zwei wesentliche Aspekte: (1) die strings sind wahrscheinlich immer noch zu gut sichtbar in Ihrer kompilierten code, und (2) der compilierte code für den Lua-interpreter ist nicht tragbar, also, wenn Sie Ziel-unterschiedliche Architekturen, die Sie benötigen, um verschiedene kompiliert Brocken für Sie.
Das erste Problem kann gelöst werden, indem mit einem pre-Prozessor, der (zum Beispiel) wandelt die strings in eine Sequenz von zahlen, und dann verkettet Sie zurück zur run-time.
Die zweite Frage ist nicht leicht behandelt werden, ohne änderungen an den Dolmetscher, aber wenn Sie die Wahl haben, Dolmetscher -, dann LuaJIT generiert portablen bytecode ausgeführt wird, über alle seine Plattformen (mit der gleichen version von LuaJIT); beachten Sie, dass LuaJIT-bytecode unterscheidet sich von Lua-bytecode, so dass es nicht ausgeführt werden kann von einem Lua-interpreter.
Eine komplexere Möglichkeit wäre die Verschlüsselung der code (eventuell vor dem kompilieren), aber Sie brauchen, um Gewicht zusätzliche Mechanismen (und die Arbeit auf Ihrem Teil) gegen mögliche Unannehmlichkeiten für die Benutzer und einen Verlust, den Sie haben, von jemanden knacken des Schutzes. Würde ich persönlich benutze so etwas einfach genug, um abzuschrecken, die die Mehrheit der neugierige Nutzer, da Sie wahrscheinlich keine chance gegen einen engagierten hacker sowieso.
InformationsquelleAutor Paul Kulchenko
Könnten Sie
loadstring
zu Holen ein Stück, dannstring.dump
und dann gelten einige Transformationen, wie Radfahren die Byte-swapping-Segmente, etc. Transformationen müssen reversibel sein. Dann in einer Datei speichern.Beachten Sie, dass jede Person mit Zugriff auf Ihre "encryptor" Lua-Modul weiß, wie entschlüsseln Sie Ihre Datei. Wenn Sie Ihr verschlüsseltes Modul in C/C++, alle, die Zugriff auf die Quelle zu, oder binäre der Lua-Verschlüsselungsmodul Sie konnte
require
das Modul zu und unofuscate der code. Mit interpretiert Sprache ist es ziemlich schwierig zu tun: Sie kann die Messlatte ein wenig über die oben genannten Techniken, aber die Erhöhung, die es erfordern eine erhebliche Menge an Arbeit (die onlybreal deterent) ist sehr schwierig, soweit ich weiß.Wenn Sie einbetten der Lua-interpreter, als Sie tun können diese aus C, das macht es deutlich schwerer (vorausgesetzt, eine Version bauen, die alle Symbole gestrippt), die person müsste, um bequem zu sein mit stepping through assembly, aber es dauert nur eine person in der Lage zu knacken den Algorithmus, dann können Sie den code anderen zur Verfügung.
Yo immer noch daran interessiert, dies zu tun? 🙂
InformationsquelleAutor Oliver
Ich dachte, ich würde hinzufügen, einige Beispiel-code, da die Antworten hier waren hilfreich, aber nicht uns alle den Weg dorthin. Wir sparen wollten einige lua-Tabelle Informationen, und nicht nur machen es super einfach für jemanden, Spritzen Sie Ihren eigenen code. serialisieren Sie Ihre Tabelle, und verwenden Sie dann Last(str), um es in ein ladbares lua Stück, und speichern Sie Sie mit Schnur.dump. Mit den 'wahren' parameter, die debug-Informationen werden entfernt, und es gibt wirklich nicht viele gibt. Ja, Sie können sehen, string-Schlüssel, aber es ist viel besser als nur das speichern der Nackte serialisiert lua-Tabelle.
Die Ausgabe von einer kleinen Tabelle sieht in Notepad++ :
LuaS У
Vx@w( @ AKA└АJБ┴ JA @
& А & name
Coulombmetervalue? С╘ ажў
InformationsquelleAutor premes