lua庫本身提供的是字節碼編譯器,但這個不是混淆,是我搞混了。
使用方法:luac a.lua –o a.luc
另外網上有一個在線混淆器:
http://www.capprime.com/CapprimeLuaObfuscator/CapprimeLuaObfuscator.aspx
這個混淆器基本上能達到混淆的目的,仍有缺點如下:
1. 同一段代碼的混淆在不同時間進行混淆,得到的混淆字段不同
這是致命的缺點,因為我們需要進行動態更新時,並不會更新所有的Lua文件,那么對要更新的文件進行混淆,同一個方法,如果得到方法名與前一次不同,則動態更新的意義就不存在了
2. 不能同時對多個文件進行混淆
因為我們程序往往是工程級別,在現在這個自動化概念被十分重視的時代,一個個文件進行混淆的操作明顯是不被接受的。
這個在線混淆器的最大優點是:
只有與在Lua中定義過的變量名和方法名相同字段才會被混淆。
另外,我們要進行Lua代碼混淆,要考慮到我們的Lua代碼中存在對象的概念,也就是說,我們進行混淆時,要注意不能把對象的方法給進行混淆,否則在與OC交互的過程會出問題。
同時,我們會在Lua中重寫一些OC方法,那這部分方法名是不應當被混淆的。
綜上,要對Lua代碼進行混淆,要考慮的因素較多。我們一般只進行一次加密就能夠很好地達到混淆效果。如果是要去掉多余的注釋、空格、空行等,我們可以寫腳本批量處理Lua文件即可。