2011-12-14 13 views
6

私は、盗難防止を含む多くの理由で、コンパイルされた多くのLuaスクリプト(マルチプレイヤーモードのMulti Theft Auto用)を持っています。実際、Luadec(http://luadec51.luaforge.net/)は簡単にスクリプトのコンパイルを行うことができるので、これは盗難の防止に過ぎません。私のスクリプトをどのようにして逆コンパイル不能にすることができるのか、誰にも分かっていますか?Luaスクリプトを互換性のないものにするにはどうしたらいいですか?

答えて

7

暗号化;それが実際に働く唯一の方法です。もちろん、あなたのプログラムはそれらを解読しなければならないので、解読されたデータをただちにメモリから取り出すことができます。

だから、あなたは何もできません。 の方法はある程度は「盗難の唯一の抑止力」になります。実際のアセンブリにコンパイルしても、元のソースコードとはまったく異なるものに逆コンパイルすることができないため、単なる抑止力に過ぎません。

質問は、ユーザーにどのくらいのトラブルを与えたいかという疑問です。暗号化は、おそらくあなたのための最も打撃を与える。これにより、メモリからデータを取り出す方法を理解するために、実行可能ファイルを辿る必要があります。ほとんどのカジュアルなユーザーはそれを望んでいません。

2

本当に深刻なことをしたいのであれば、lua vmによって生成され、使用されているオペコードを変更することができます。それで、シェルフ・ソフトウェアからデコンパイルすることはできません。これは価値があるよりも多くの問題を引き起こすかもしれません - あなた自身のバージョンのluaをサポートしなければならないでしょうし、おそらくluajitのようなものを使うことはできませんでした。

デコンパイルするには、出てくるオペコードのマッピングと変換が必要です。おそらくそれほど難しいことではありませんが、おそらくそうではありません。それはかなり容易であり、ソースを見てみると

[更新]

は、そこに2つのファイルlopcode.cがあり、あなたはちょうどあなたが行われますこれらの中のオペコードの順序を変更する場合は、多分lopcode.h。あなたがこれをやり終えると、それは動作するかどうかを投稿してください。

+1

VM命令のオペランドの順序を変更することで、少し難しくすることもできます。 – lhf

+1

この方法は、 'luac'によって提供されたバイトコードリスターにアクセスできる場合、おそらく完全には機能しません。これは、リバースエンジニアリングできるためです。しかし、それは痛みで、おそらくほとんどの人を抑えるでしょう。また、動機付けられたハッカーのための挑戦でもあります。 :-) – lhf

+0

実際には、ハッシュダンプを持つ専用のハッカーは何も停止しません。これを以下のNicolに示唆されているように暗号化に含めて、最初にlua obfuscatorで実行すると、真に献身的なものだけが残されます。 – daven11

0

私はそれが可能ではないと思います。獣の本質(非常に小さなVMで動作する最小限の言語)は、基本的にそれを禁止しています。

あなたが望むことができる最良のものは、逆コンパイルされたコードが人間にとって可能な限り理解しにくいことです。

1

Multi Theft Autoは、スクリプトの暗号化をサポートするようになりました。オンラインでhttp://luac.mtasa.com/にコンパイルするか、スタンドアロンコンパイラをダウンロードしてください。

関連する問題