導航:首頁 > 源碼編譯 > lua反編譯工具

lua反編譯工具

發布時間:2022-02-09 04:21:01

❶ lua腳本怎麼反編譯

對於使用原版的lua 所生成的腳本,都有相應的反編譯器,你花點功夫搜索,網上一定能找到的。
lua4----CFLuaDC
lua5----DisLua 、luadec

❷ 求一個Lua編輯器(WOW lua),跟使用方法。

lua沒有什麼固定的編譯器
可以使用記事本編譯
不過我推薦使用2種
1種是NotePad++這只是個編寫工具,沒辦法直接運行(准確的說
其實也不是沒辦法運行,要配置一系列參數後也是可以運行的,但是容易出錯,並且出錯後要關閉程序重新打開才會恢復)
另一種是官方的編譯器sciTE
可以到lua的官方網站www.lua.org下載
程序名為luaforwindows
裡面還有很詳細的新手教程和example
如果是要在游戲里編寫lua的那個wowlua的話留個郵箱
我有個zV_WowLua-v40000-1.0.0.zip

❸ 求如何反編譯LUA5.1的文件

你在網上搜索 「LuaDec」,試一試。
如果要反編譯5.1版本的LUA,似乎有一個專門的改進版本的LuaDec。
我只是以前看到過這個工具,本人並沒有認真使用過。

建議尊重作者版權,通過正規渠道來獲得LUA的源碼,比如說聯系軟體作者、進行商業合作、或者黑了軟體作者的電腦,等等。
祝好運!

❹ 我想修改一個lua文件,但是是編譯後的,請問如何修改

這是因為你的反編譯器的版本和當初編譯那個Lua文件時的版本不一致。

你首先得知道你這個Lua文件是用哪個版本編譯的,再去找對應版本的Lua反編譯器。

什麼Lua文件值得你花精力去反編譯它啊?能自己搞就自己從頭搞吧。

❺ lua 怎麼反編譯

1.Lua的虛擬機指令,5.2 的有40條

Lua的指令使用一個32bit的unsigned integer表示。所有指令的定義都在lopcodes.h文件中(可以從Lua 官方網站下
載),使用一個enum OpCode代表指令類型。在lua5.2中,總共有40種指令(id從0到39)。根據指令參數的不同,可以將所有指令分為4
類:

typedef enum {
/*----------------------------------------------------------------------
name args description

------------------------------------------------------------------------*/
OP_MOVE,/* A B R(A) := R(B) */
OP_LOADK,/* A Bx R(A) := Kst(Bx) */
OP_LOADKX,/* A R(A) := Kst(extra arg) */
OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */
OP_LOADNIL,/* A B R(A), R(A+1), ..., R(A+B) := nil */
OP_GETUPVAL,/* A B R(A) := UpValue[B] */

OP_GETTABUP,/* A B C R(A) := UpValue[B][RK(C)] */
OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */

OP_SETTABUP,/* A B C UpValue[A][RK(B)] := RK(C) */
OP_SETUPVAL,/* A B UpValue[B] := R(A) */
OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */

OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */

OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */

OP_ADD,/* A B C R(A) := RK(B) + RK(C) */
OP_SUB,/* A B C R(A) := RK(B) - RK(C) */
OP_MUL,/* A B C R(A) := RK(B) * RK(C) */
OP_DIV,/* A B C R(A) := RK(B) / RK(C) */
OP_MOD,/* A B C R(A) := RK(B) % RK(C) */
OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */
OP_UNM,/* A B R(A) := -R(B) */
OP_NOT,/* A B R(A) := not R(B) */
OP_LEN,/* A B R(A) := length of R(B) */

OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */

OP_JMP,/* A sBx pc+=sBx; if (A) close all upvalues >= R(A) + 1 */
OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */
OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */
OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */

OP_TEST,/* A C if not (R(A) <=> C) then pc++ */
OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */

OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */
OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */
OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */

OP_FORLOOP,/* A sBx R(A)+=R(A+2);
if R(A) <?= R(A+1) then { pc+=sBx; R(A+3)=R(A) }*/
OP_FORPREP,/* A sBx R(A)-=R(A+2); pc+=sBx */

OP_TFORCALL,/* A C R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); */
OP_TFORLOOP,/* A sBx if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx }*/

OP_SETLIST,/* A B C R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B */

OP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx]) */

OP_VARARG,/* A B R(A), R(A+1), ..., R(A+B-2) = vararg */

OP_EXTRAARG/* Ax extra (larger) argument for previous opcode */
} OpCode;

**********************************************************
虛擬機指令(2) MOVE & LOAD

OP_MOVE A B
OP_MOVE用來將寄存器B中的值拷貝到寄存器A中,由於Lua是基於寄存器虛擬機,大部分的指令都是直接對寄存器進行操作,而不需要對數據進行壓棧和彈棧。OP_MOVE 指令的作用 是將一個Local變數復制給另一個local變數.
例子:
local a = 10;
local b = a;
編譯出來的結果
1 [1] LOAD 0 1;1代表的是常量表的項,這里代表的是10
2 [2] MOVE 1 0
所代表的二進制為
B A OP_Code
Load 0 1 = 100000000 000000000 00000000 000001 = 0x80000001 ,
也就是說, 0x80000001 的二進制所代表的指令為 Load 0 1,這里B中的最高位為1,表示的B為常量表的序號,而不是寄存器

MOVE 1 0 = 000000000 000000000 00000001 000000 = 0x40

*****************華麗分割線***********************************************
1.lua 的二進制格式,官方的luac.exe 編譯出來的格式

原始的lua 腳本為
local a = 10
local b = a
print(b)

下面介紹格式文件,介紹每個欄位的意思.當然啦,這種格式是官方的,各個游戲公司可能會做一些改動,但是萬變不離其宗。個個欄位已經用顏色標明了
在lua 的源文件中,前面四個位元組 1b 4c 75 61 也就是 \033Lua , 標識的是lua文件的特有的標示符數據格式,代表是lua
#define LUA_SIGNATURE "\033Lua" 033時八進制 = 0x1b ,很多那些反編譯工具判斷這四個位元組的值,來判斷是否能反編譯,很多公司都會偷偷的去掉或者用其他的值來替換,以迷惑菜鳥。呵呵

52 第五個位元組,表示的是,當前lua 的目標版本,這里指的是5.2 版本。
感覺編輯的好痛苦,我還是直接貼我的比較圖算了,看起來比較舒服

函數的頭描述
linedefined = 00 00 00 00 ;函數定義開始處的行號
linedefined = 00 00 00 00 ; 函數定義結束處的行號 ;頂級函數開始和結束行號都是為00
numparams = 00 ;固定參數的數目 number of fixed parameters
is_vararg = 01 ;可變參數標識符
• 1=VARARG_HASARG
• 2=VARARG_ISVARARG
• 4=VARARG_NEEDSARG
maxstacksize = 03 ;調用函數所需要的堆棧空間指令段
sizecode = 06 00 00 00 ; 函數中 指令的數目,緩存區的大小 = sizecode * sizeof(Instruction),每四個位元組為一條指令
code = 02 00 00 00 41 00 00 00 87 40 40 00 c1 00 80 00 a0 40 00 01 1e 00 80 00

常量列表 保存著函數中引用的常量的列表 (常量池)
Constant.sizek = 02 00 00 00 ;常量列表的大小 ,緩存區的大小 = Constant.sizek * sizeof(TValue) = 2 * 8 = 16,每項為8個位元組,
TValue * = 03 00 00 .
00 00 00 00 24 40 04 06 00 00 00 70 72 69 6e 74 [email protected]
Constant list 數據結構 保存著函數中引用的常量的列表 (常量池)
Integer 常量列表的大小 (sizek)
[
1 byte 常量類型 (value in parentheses): • 0=LUA_TNIL, 1=LUA_TBOOLEAN,• 3=LUA_TNUMBER, 4=LUA_TSTRING
Const 常量本身: 如果常量類型是0這個域不存在;如果類型是1,這個是0或1;如果類型是3這個域是 Number;如果類型是4 這個域是String。
]
這里的String 是包含"0"為結束的字元串

為什麼上傳圖片以後,圖片都變小了,而且不清晰呢?

***********************給大家發一點福利,矯正虛擬機指令的函數**************************************
//矯正虛擬機指令
DWORD Rectify(DWORD Source);
{
DWORD Instruction = Source;
BYTE Source_OpCode = Instruction & 0x3F;
switch(Source_OpCode)
{
case OP_MOVE:
Source_OpCode = Target_OpCode;
break;
...
}
Instruction = ((Instruction & 0xFFFFFFC0) | Source_OpCode);
return Instruction
}

❻ lua腳本語言,請問已經被編譯了的語言怎麼反編譯獲得裡面的內容我好修改

LUA 我記得不用什麼反編譯吧,
另外 LUA本來就是開源的呀,直接有源代碼下(http://www.lua.org/)
而且LUA支持DLL(SO)的 功能擴充直接寫DLL就可以了呀

另外通過DLL(SO)的交互性也非常好

重來沒聽說過什麼帶病毒的LUA 官網下的肯定沒病毒,你要再不放心 自己編譯個就好了

❼ 請教lua如何反編譯,或者指點一下luadec的用法,請不要復制回答問題。

搜:Lua腳本反編譯入門教程。

❽ 對於*.lua文件,需要用什麼軟體程序打開

*.lua文件可以用記事本程序打開,具體打開步驟如下:

1、文件格式後綴名以*.lua格式存在。

❾ 求一個LUA反編譯工具Luadec 2.1~~~求分享啊,找遍了都找不到,跑求啊

推薦你用luadisasm
luadec好像版本比較低,高版本的lua機器碼是反編譯不了
留個郵箱我發給你

❿ lua文件怎麼反編譯,用什麼軟體,具體怎麼做求教程

luadec,不過,反編譯後的變數名和注釋都沒有了。你確定你看得懂?

閱讀全文

與lua反編譯工具相關的資料

熱點內容
如何重設伺服器網關 瀏覽:862
世界經濟pdf 瀏覽:106
異或演算法找缺失的數 瀏覽:319
單片機flagt1 瀏覽:483
單片機清理 瀏覽:658
東風景逸空調壓縮機 瀏覽:156
天津程序員炒股 瀏覽:229
pcl源碼目錄 瀏覽:967
python分類數據轉換 瀏覽:109
wordpdf不能復制 瀏覽:961
快捷方式參數命令 瀏覽:111
cmd命令復制粘貼文件 瀏覽:583
ug實體快速修剪的命令是什麼 瀏覽:123
軟體工程對演算法的要求 瀏覽:935
元史pdf 瀏覽:97
如何讓伺服器卡爆不用tnt 瀏覽:801
兵器pdf 瀏覽:925
雲伺服器怎麼限制cpu 瀏覽:166
學信網用的什麼app 瀏覽:878
linux重啟命令apache 瀏覽:753