2011-12-14 51 views
6

我有許多Lua腳本(用於多人模式Multi Theft Auto),它們被編譯,其原因很多,包括防盜。實際上,這只是一種盜竊威懾,因爲Luadec(http://luadec51.luaforge.net/)可以輕鬆地對腳本進行反編譯。有沒有人有關於如何使我的腳本不可反編譯的任何提示?我該如何讓Lua腳本不可反編譯?

回答

7

加密;這真的是它工作的唯一方式。當然,由於你的程序必須解密它們,所以它們可能只是從內存中抓取解密的數據。

所以不,沒有什麼可以做的。 任何方法將在某種程度上「只是一種防盜威懾」。即使編譯到實際彙編也只是一種威懾,因爲這可以反編譯成與原始源代碼完全不同的東西。

問題是你想給用戶多少麻煩。加密可能會給你帶來最大的壓力。這將迫使他們必須通過可執行文件來弄清楚如何從內存中抽出數據。大多數臨時用戶不會希望這樣做。

2

如果你想變得非常認真,你可以更改lua虛擬機生成和使用的操作碼,那麼現成的軟件無法反編譯它。雖然這可能會給你帶來更多的問題,但你不得不支持你自己的lua版本,而你可能不會使用luajit這樣的東西。

要進行反編譯,他們必須找出您想要翻譯的操作碼的映射。這可能不會太難,但我可能不會。

[更新]

看着它可能是相當容易的來源,有兩個文件lopcode.c和lopcode.h也許如果你只需要改變這些操作碼你會做的順序。如果你最終這樣做並且它工作與否,請發佈。

+1

通過更改虛擬機指令中操作數的順序,也可以使它變得更加難一些。 – lhf

+1

請注意,如果您有權訪問像'luac'提供的字節碼列表,則此方法可能無法正常工作,因爲您可以對訂單進行逆向工程。但這將是一種痛苦,可能會阻止大多數人。或者是對動機黑客的挑戰。 :-) – lhf

+0

事實上,沒有任何東西能夠阻止專用黑客進行十六進制轉儲。如果你按照Nicol的建議在加密中加入這個加密算法,並首先通過lua混淆器運行它,那麼只剩下真正的專用加密算法。 – daven11

0

我不認爲這是可能的。野獸的本質(一個在非常小的虛擬機上工作的非常小的語言)基本上禁止它。

您希望得到的最好結果是反編譯的代碼儘可能難以理解,對於人類來說。