Comment dissimuler le code lua?
Je ne trouve rien sur Google pour certains outil qui permet de crypter/dissimule mes fichiers lua, j'ai donc décidé de demander ici. Peut-être que certains professionnel sait comment le faire? (Gratuit).
J'ai fait un simple jeu en lua maintenant, et je ne veux pas que les gens de voir le code, sinon, ils peuvent facilement tricher. Comment puis-je faire de l'ensemble du texte à l'intérieur de l' .lua fichier aléatoire de lettres et de trucs?
J'ai utilisé pour programmer en C# et j'ai eu cette .NET obfuscator appelé SmartAssembly qui fonctionne plutôt bien. Lorsque quelqu'un pourrait essayer de vérifier le code de mes applications, il serait juste un tas de lettres et de chiffres avec des caractères chinois, et d'autres choses.
Quelqu'un connait un programme qui peut le faire pour lua aswell? Il suffit de charger ce fichier à chiffrer, cliquez sur Crypter ou soemthing, et bam! Il fonctionne!?
Par exemple ceci:
print('Hello world!')
se transformer en quelque chose comme
sdf9sd@@@&/sdfsdd9fd0f0fsf/&
OriginalL'auteur | 2014-03-29
Vous devez vous connecter pour publier un commentaire.
Juste précompiler vos fichiers (morceaux) et de la charge binaire morceaux.
luac
vous permet de dépouiller les informations de débogage. Si cela ne suffit pas, définir vos propres transformations, sur la compilation lua, le décapage des noms, si possible. Il n'y a pas vraiment beaucoup de demande pour lua obfuscators...Aussi, vous perdez l'un des principaux avantages de l'utilisation d'un langage de script incorporé: l'Extensibilité.
OriginalL'auteur Deduplicator
Le plus simple de la dissimulation de l'option est de compiler votre code Lua comme d'autres l'ont suggéré, il a cependant deux problèmes majeurs: (1) les cordes sont encore susceptibles d'être facilement visible dans votre code compilé, et (2) le code compilé pour interpréteur Lua n'est pas portable, donc si vous ciblez des architectures différentes, vous avez besoin d'avoir différents morceaux compilés pour eux.
Le premier problème peut être résolu par l'utilisation d'un pré-processeur (par exemple) convertit vos chaînes à une séquence de nombres, et les concatène en arrière au moment de l'exécution.
La deuxième question n'est pas facile d'aborder sans apporter de modifications à l'interprète, mais si vous avez le choix des interprètes, alors LuaJIT génère portable bytecode qui se déroulera à travers l'ensemble de ses plates-formes (exécutant la même version de LuaJIT); à noter qu'LuaJIT bytecode est différente de Lua "bytecode", donc il ne peut pas être exécuté par un interpréteur Lua.
De plus en plus complexe option serait de chiffrer le code (éventuellement avant de le compiler), mais vous avez besoin de poids supplémentaire mécanismes (et le travail sur votre partie) contre tout désagrément possible pour vos utilisateurs et de toute perte que vous avez de quelqu'un craquage de la protection. Je serais personnellement utiliser quelque chose de suffisamment simple pour dissuader la majorité des utilisateurs curieux comme vous probablement n'ont aucune chance contre un dédié hacker de toute façon.
OriginalL'auteur Paul Kulchenko
Vous pouvez utiliser
loadstring
pour obtenir un morceau puisstring.dump
puis appliquer quelques transformations comme le vélo, les octets, l'échange de segments, etc. Les Transformations doivent être réversibles. Puis les enregistrer dans un fichier.Noter que toute personne ayant accès à votre "crypteurs" Lua module permettra de savoir comment décrypter votre fichier. Si vous faites votre chiffré module en C/C++, toute personne ayant accès à la source ou binaire de Lua module de chiffrement ils pourraient
require
le module de trop et unofuscate le code. Avec interprété langue, il est assez difficile à faire: vous pouvez monter la barre un peu par ci-dessus les techniques, mais de l'élever pour exiger une quantité importante de travail (le onlybreal deterent) est très difficile autant que je sache.Si vous incorporez l'interpréteur Lua que vous pouvez le faire à partir de C, ce qui rend beaucoup plus difficile (en supposant un Communiqué de construire avec tous les symboles dépouillé), la personne devra être à l'aise de marcher jusqu'à l'assemblage, mais il suffit d'une seule personne capable de fendre l'algorithme, alors ils peuvent faire le code à la disposition des autres.
Yo toujours intéressé à faire cela? 🙂
OriginalL'auteur Oliver
Je pensais ajouter un exemple de code, puisque les réponses ici ont été utiles, mais n'a pas obtenu de nous tout le chemin là. Nous voulions sauver quelques lua informations de la table, et tout simplement pas super facile pour quelqu'un à injecter leur propre code. sérialiser votre table, puis l'utilisation de la charge(str) pour en faire un chargeable lua morceau et enregistrer avec de la ficelle.dump. Avec le "vrai" paramètre, les informations de débogage est dépouillé, et il n'y a vraiment pas grand-chose. Oui, vous pouvez voir des clés de chaîne, mais c'est beaucoup mieux que de gagner de la nue sérialisé table lua.
La sortie d'une petite table ressemble à ceci dans Notepad++ :
LuaS У
Vx@w( @ AKA└АJБ┴ JA @
& А & nom
Coulombmetervalue? С╘ ажў
OriginalL'auteur premes