私は、盗難防止を含む多くの理由で、コンパイルされた多くの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. サーバサイドWebテクノロジブラウザを互換または互換性を持たないものにするには?
- 2. これらの互換性のないタイプを回避するにはどうすればよいですか?
- 3. luaスクリプトからC++クラスメンバー関数にアクセスするにはどうしたらいいですか?
- 4. java.util.Base64とorg.apache.commons.ssl.Base64が互いに互換性がないのはなぜですか?
- 5. 「互換性のない」TYPO3-Extensionをコンポーザーにインストールするにはどうすればよいですか?
- 6. 異なるライブラリからのPosixに準拠したpthread_mutex_tは互いに互換性がありますか?
- 7. Qt4とGLewは互いに互換性がないようです
- 8. firefoxプラグインを将来のリリースと互換性を持たせるにはどうすればいいですか
- 9. 別のLuaスクリプトの中からユーザーが指定したパラメータでLuaスクリプトを実行するにはどうすればよいですか?
- 10. 製品リリースではライブラリ名が変更され、古いものと新しいものとの互換性はどのようになっていますか?
- 11. Pythonモジュール/スクリプト内からxdotoolを使用するにはどうしたらいいですか?私はのようなものを使用したい場合
- 12. 互換性のないデータ
- 13. 互換性のないバージョン
- 14. 互換性のないポインタコンパイラエラー
- 15. 互換性のないタイプ
- 16. 互換性のない型:
- 17. 互換性のないウィンドウフォームアプリケーション
- 18. 互換性のない範囲のチャートシリーズを扱うには?
- 19. iPhoneアプリをユニバーサルアプリ(iPhone&iPad互換)にするにはどうしたらいいですか?
- 20. 互換性のないスキップ... /見つからない
- 21. ローカルクラスに互換性のないエラー
- 22. イテレータは互換性がないのはなぜですか?
- 23. C++エラー(互換性のない型 'void'からTreeNode *に代入)
- 24. .luaスクリプトを実行するにはどうすればよいですか?
- 25. luaスクリプトをluaバイトコードにするには?私はLuaのスクリプトを持っていた場合
- 26. C:互換性のないポインタから整数への変換
- 27. すべてのデリゲートタイプが互いに互換性がないのはなぜですか?
- 28. Qt Designerが互換性のないプラグインを読み込まないようにするにはどうすればいいですか?
- 29. とにかくdlopenにCと互換性のないバイナリをロードしないように指示する(Linux)
- 30. Rubyでスクリプトを作成するにはどうしたらいいですか?
VM命令のオペランドの順序を変更することで、少し難しくすることもできます。 – lhf
この方法は、 'luac'によって提供されたバイトコードリスターにアクセスできる場合、おそらく完全には機能しません。これは、リバースエンジニアリングできるためです。しかし、それは痛みで、おそらくほとんどの人を抑えるでしょう。また、動機付けられたハッカーのための挑戦でもあります。 :-) – lhf
実際には、ハッシュダンプを持つ専用のハッカーは何も停止しません。これを以下のNicolに示唆されているように暗号化に含めて、最初にlua obfuscatorで実行すると、真に献身的なものだけが残されます。 – daven11