lua腳本編輯
1. lua編寫腳本在wireshark中實現,現有偏移是offset按位偏移,在某些欄位需按bit解析,應該怎麼做
比如說第一個bit代表的標志為flag1,後7個bit代表的標志為flag2。那麼flag1和flag2作為要加入tree的field,可以表示為:
flag1=ProtoField.uint8("your_protol_flag1", "flag1", base.DEC, null, 0x80)
flag2=ProtoField.uint8("your_protol_flag2", "flag2", base.DEC, null, 0x7F)
其中0x80,0x7F為按位操作的掩碼,作用分別是取uint8的第一位和後七位。
然後將field加入子樹中即可:
subtree:add(flag1, buffer(offset+2, 1))
subtree:add(flag2, buffer(offset+2, 1))
-------------------------------------------
wireshark官方API地址為:網頁鏈接
2. 怎麼用cheat engine里的lua腳本製作游戲修改器
對於固定內存地址的游戲,可以使用Cheat Engine軟體來製作修改器。這個過程很簡單,就是步驟有些多。
以修改雷電2為例,說明如何用ce製作修改器。也可以用其它修改內存地址的軟體來查找游戲的內存地址,然後添加到ce中。這樣可以簡化製作過程。
工具/原料
Cheat Engine 5.61
金山游俠5
fpe2001
修改並添加地址
1運行游戲。切換窗口,打開ce。
點左上角的逗選擇進程地,在逗進程列表地中選擇游戲的名字,點逗打開地。
建議製作修改器用5.61版本的ce,這個版本的高級選項中有創建修改器的選項。
2選中逗hex地前面的選項,檢測輸入的值是十六進制的。對一些數值,需要選中它,才能搜索到。
在逗值地的輸入框中輸入3,點逗首次掃描地。
3切換到游戲,將生命數改變。
只有地址變化了,才能搜索具體的數值。游戲中的數值大部分都可以用具體的數值來搜索。
4切換到ce,在逗值地的輸入框中輸入改變後的數值,點逗再次掃描地。
通常搜索兩次就可以找到唯一的地址。如果還有許多地址,回到游戲讓數值再改變一次,再回到ce中進行再次掃描。所有的游戲修改器都是這樣進行搜索。
5雙擊搜索到的地址,地址被放入鎖定窗口中,選中逗鎖定地,這個地址在游戲中就始終是這個數值。
在鎖定地址上按滑鼠右鍵,選擇逗更改記錄地→逗描述地,或是在地址的逗描述地位置雙擊左鍵。輸入這個地址的說明。
6在地址上按右鍵,選擇逗瀏覽相關內存區域地。打開逗內存瀏覽器地,在窗口下方就是該地址所在的內存數值,其它的內存數值也在這里。雙擊就可以編輯。可是修改後沒有提示,不利於查看。
7對內存地址進行編輯,需要用到金山游俠和fpe2001。
這兩個修改器,在對內存進行編輯後,對編輯過的地址用彩色標記。在進行內存對比時,很方便。這里就不介紹了,這兩個軟體使用方法比ce簡單多了。有些游戲是需要使用不同修改器,才能搜索到地址。
8雙擊金山游俠中鎖定地址中的逗自動鎖定地,打開逗添加修改地窗口,將地址進行復制。
9回到ce。點逗手動添加地址地,在逗添加地址地窗口中的地址框中粘貼剛才復制的地址,輸入描述說明,確定。
10在地址上按滑鼠右鍵,在彈出的菜單中選擇逗更改記錄地→逗值地,輸入數字,確定。這個地址的數值就改變了。
11選擇逗更改記錄地→逗類型地,選擇新類型後確定,就更改了這個地址的長度。
如果需要更改的數值會很大,就要更改類型。2個位元組代表00,4個位元組代表0000。
12其它的地址也這樣添加到ce中。
這樣就避免了使用ce進行搜索的過程。只要是固定的內存地址,都可以通用。
需要的地址全部添加後,就可以製作修改器了。
13在製作之前,選擇左上角的逗保存地圖標,選擇路徑,點逗保存地。游戲的內存地址就被保存成文件了。
下次運行游戲就可以直接打開保存的地址,不需要再搜索地址。修改器製作出錯後,也可以打開保存的地址,重新進行製作。
END
製作修改器
點左下角的逗高級選項地,打開逗高級選項地窗口。
製作修改器需要使用這里的功能。有些版本的ce中沒有這個功能。
點擊逗創建單獨使用的修改器地圖標,在彈出的窗口中選中逗創建新的修改器地和逗游戲/程序運行時,修改數據地,確定。
在逗修改器製作地窗口中,執行的結果會在預覽窗口中顯示。
選擇逗更改圖像地,選擇一個圖片,可以讓逗預覽地窗口中逗啟動地下面顯示圖像。
選擇逗更改圖標地,選擇一個圖標文件,製作的修改器會顯示這個圖標。
輸入標題,在修改器窗口標題欄上就會顯示內容。
選擇逗進程地,找到運行的游戲文件名,左鍵點擊就選擇了。不選擇,修改器就不會知道要修改什麼游戲。
點擊下面的逗加入項目地,在逗修改器製作:添加記錄地窗口中選擇逗添加地。
在逗修改器製作:添加地址地窗口中選擇逗設定數值並鎖定/解鎖地址地,輸入數值。選中逗允許用戶更改這個數值地,在修改器中就可以更改。
選中逗常規鎖定地,在下面的窗口中選擇一個地址,選擇逗添加地。選擇不正確時會有提示。
在彈出的逗修改器製作:添加記錄地窗口中,在逗作用地輸入框中輸入說明,在逗熱鍵地輸入框中按一下設定的按鍵,不滿意設置的熱鍵點逗清除地,選擇確定。
在右面的逗預覽地窗口中就會出現添加的效果。
6其它的地址也是這樣添加。全部添加後,選中逗防止修改地,製作的修改器就不允許用ce打開。
最後點擊逗生成修改器地,選擇路徑,起一個名稱,點逗保存地。會提示修改器已生成。
至此修改器製作完成。使用效果見簡介圖片。
選擇左面窗口中已添加的地址,選擇逗刪除項目地可以去掉選中的地址。
3. lua腳本有沒有自加自減運算符
到目前為止,沒有相關運算符。5.2 以前標准庫不提供按位操作函數,5.2 開始標准庫 bit32 提供按位操作的函數。比如下面的代碼只可以可以用在 5.2 及以後版本。
12
>print(bit32.bor(1,2))3
4. 如何調試lua腳本
調試lua現有的幾種方案:
1)luaedit : 編輯斷點和斷點命中查看那些都讓習慣用vs的人感到親切,但是它只是在純lua環境下的編輯器,也就是說和期望程序運行中能借用它來調試腳本可能性不大(至少我沒有試驗出來),能用上的需要給lua腳本做個main腳本函數,並提供一系列偽的c api(由lua實現的函數,只提供製定值的返回)。由luaedit啟動腳本main函數進行調試
2)利用 lua debug 庫中的 hook ,然後記錄一張斷點位置表,設置行模式的 hook ,每次進入 hook 都檢查是否是斷點處,若是就停下來等待交互調試。這個方法有效,但是很消耗 cpu 。因為每進入一個新的代碼行,都需要回調一個函數。當這個函數本身又是用 lua 寫的時候,效率更低。
3)利用lua腳本函數實現,在lua腳本中封裝一個斷點函數,這種方式結合debug庫實現斷點和棧信息,然後利用lua環境下的表對函數調用信息進行記錄和列印,需要腳本使用者顯式提供斷點函數的調用。這個辦法的優點自己可以組合出適合自己項目的斷點調試方案。但缺點是相對繁瑣,而且斷點命中以後難以和現有方式融合
5. luac腳本怎麼編輯打開製作
在cmd中執行就可以了。
假設luadec放在c:\lua下,想要看到c:\test\test.lua文件的源碼,那麼可以使用如下操作
1.打開CMD 命令行窗口。
2.在窗口中輸入如下命令:
c:\lua\luadec.exe -d c:\test\test.lua >c:\test\test_bak.lu。
3.使用lua編輯器,打開c:\test\test_bak.lua 就已經看到源碼了。