私は、盗難防止を含む多くの理由で、コンパイルされた多くのLuaスクリプト(マルチプレイヤーモードのMulti Theft Auto用)を持っています。実際、Luadec(http://luadec51.luaforge.net/)は簡単にスクリプトのコンパイルを行うことができるので、これは盗難の防止に過ぎません。私のスクリプトをどのようにして逆コンパイル不能にすることができるのか、誰にも分かっていますか?Luaスクリプトを互換性のないものにするにはどうしたらいいですか?
答えて
暗号化;それが実際に働く唯一の方法です。もちろん、あなたのプログラムはそれらを解読しなければならないので、解読されたデータをただちにメモリから取り出すことができます。
だから、あなたは何もできません。 の方法はある程度は「盗難の唯一の抑止力」になります。実際のアセンブリにコンパイルしても、元のソースコードとはまったく異なるものに逆コンパイルすることができないため、単なる抑止力に過ぎません。
質問は、ユーザーにどのくらいのトラブルを与えたいかという疑問です。暗号化は、おそらくあなたのための最も打撃を与える。これにより、メモリからデータを取り出す方法を理解するために、実行可能ファイルを辿る必要があります。ほとんどのカジュアルなユーザーはそれを望んでいません。
本当に深刻なことをしたいのであれば、lua vmによって生成され、使用されているオペコードを変更することができます。それで、シェルフ・ソフトウェアからデコンパイルすることはできません。これは価値があるよりも多くの問題を引き起こすかもしれません - あなた自身のバージョンのluaをサポートしなければならないでしょうし、おそらくluajitのようなものを使うことはできませんでした。
デコンパイルするには、出てくるオペコードのマッピングと変換が必要です。おそらくそれほど難しいことではありませんが、おそらくそうではありません。それはかなり容易であり、ソースを見てみると
[更新]
は、そこに2つのファイルlopcode.cがあり、あなたはちょうどあなたが行われますこれらの中のオペコードの順序を変更する場合は、多分lopcode.h。あなたがこれをやり終えると、それは動作するかどうかを投稿してください。
私はそれが可能ではないと思います。獣の本質(非常に小さなVMで動作する最小限の言語)は、基本的にそれを禁止しています。
あなたが望むことができる最良のものは、逆コンパイルされたコードが人間にとって可能な限り理解しにくいことです。
Multi Theft Autoは、スクリプトの暗号化をサポートするようになりました。オンラインでhttp://luac.mtasa.com/にコンパイルするか、スタンドアロンコンパイラをダウンロードしてください。
- 1. これらの互換性のないタイプを回避するにはどうすればよいですか?
- 2. luaスクリプトからC++クラスメンバー関数にアクセスするにはどうしたらいいですか?
- 3. Qt4とGLewは互いに互換性がないようです
- 4. firefoxプラグインを将来のリリースと互換性を持たせるにはどうすればいいですか
- 5. 製品リリースではライブラリ名が変更され、古いものと新しいものとの互換性はどのようになっていますか?
- 6. 互換性のないタイプ
- 7. 互換性のないポインタコンパイラエラー
- 8. 互換性のないデータ
- 9. Pythonモジュール/スクリプト内からxdotoolを使用するにはどうしたらいいですか?私はのようなものを使用したい場合
- 10. 互換性のない範囲のチャートシリーズを扱うには?
- 11. 互換性のないスキップ... /見つからない
- 12. iPhoneアプリをユニバーサルアプリ(iPhone&iPad互換)にするにはどうしたらいいですか?
- 13. Rubyでスクリプトを作成するにはどうしたらいいですか?
- 14. IRBでスクリプトを再ロードするにはどうしたらいいですか?
- 15. とにかくdlopenにCと互換性のないバイナリをロードしないように指示する(Linux)
- 16. .luaスクリプトを実行するにはどうすればよいですか?
- 17. すべてのデリゲートタイプが互いに互換性がないのはなぜですか?
- 18. 互換性のないプラグインを互換性のあるプラグインにする方法は?
- 19. C++ STLベクトルイテレータは、互換性のない
- 20. 「initializtionで互換性のない型」
- 21. クラスイテレータで互換性のないタイプ
- 22. configureスクリプトを作成するにはどうしたらいいですか?
- 23. シェルスクリプトをPerlに変換するにはどうしたらいいですか?
- 24. .jarを.exeに変換するにはどうしたらいいですか?
- 25. シェルスクリプトをPerlに変換するにはどうしたらいいですか?
- 26. コンソールアプリケーションを.dllに変換するにはどうしたらいいですか?
- 27. jQueryスクリプト+互換性
- 28. ウェブサイトのどのセクションが新しいブラウザと互換性がないのかを見つけるにはどうすればよいですか?
- 29. ブラウザの互換性のためにPNGが悪いです
- 30. Entity Framework 4.3でモデルの互換性チェックを無効にするにはどうすればよいですか?
VM命令のオペランドの順序を変更することで、少し難しくすることもできます。 – lhf
この方法は、 'luac'によって提供されたバイトコードリスターにアクセスできる場合、おそらく完全には機能しません。これは、リバースエンジニアリングできるためです。しかし、それは痛みで、おそらくほとんどの人を抑えるでしょう。また、動機付けられたハッカーのための挑戦でもあります。 :-) – lhf
実際には、ハッシュダンプを持つ専用のハッカーは何も停止しません。これを以下のNicolに示唆されているように暗号化に含めて、最初にlua obfuscatorで実行すると、真に献身的なものだけが残されます。 – daven11