lua腳本獲取內存地址內容
⑴ C#中執行Lua腳本
一:
new lua().DoFile("myLua.lua"); //執行lua腳本 /myLua.lua:要 執行的lua的腳本名字
new lua().DoString("num = 2"); //讀取腳本
注意:腳本文件必須和工程目銷喚錄所在是同一塵斗旦個路徑不然會找不到lua的 腳本
對lua腳本的位置放置:
1)直接將lua文件,放在工程目錄下面的Debug文件夾下
2)將lua腳本的屬性中 "復制到輸出目錄" 選擇「始終復制」
--1.導入luanet程序集,該程序集負責 lua call C#
require 「luanet」
--2.載入程序集(命名空間)
uanet.load_assembly(「System」) // 載入程序集(我們說過程序集其實就是.exe或者.dll文件)
--3.獲取類別(獲取類名)
Test = luanet.import_type(「System.Test」) //引入類(Test就是類名)
--4.調用構造函數初始化C#腳本的類對象
--調用無參數的構造函數
-- test = Test()
--調用有參數的構造函數 ----int
-- test = Test(10)
--調用有參數的構造函數 ----string
-- test = Test("10")
-- lua調用C#構造函數規則---> 自動匹配最近的那個
-- -對於某些情況並不適用,比如說C#函數中有兩個一個參數的構造函數重載時即會發生匹配錯誤的情況
--- 這種情況我們需要手動指定調用哪個構造函數
test_argInt = luanet.get_constructor_bysig(Test,"System.String")
t = test_argInt(3)
-- 5.調用C#屬性
print(t.LanguageNume)
-- 調用Test類中的TestPrint()方法,使用的是":"
t:TestPrint(10);
-- 調用Test類中的靜態方法,使用的是"."
Test.TestStatciPrint(9)
--調用帶有ref參數的方法
t:RefMethod(8)
--調用帶有out參數的方法(帶有out的參數可派擾以不寫,即不傳參數)
-- var,var2 = t:OutMethod("hello")
-- print(var2)
-- v1,v2,v3,v4 = t:OutMethod(10)
tb = t:OutMethod(10)
print(type(tb))
⑵ lua腳本怎麼獲取當前正在執行的腳本的當前路徑
時代在發展科技在進步,互聯網已經不是什麼神秘的領域,現在越來越多的年輕人對於互聯網越來越熟悉,甚至有些開始學習Linux系統方面的知識,下面小猿圈Linux講師就講關於如何在Linux系統獲取當前工作路,希望對你有所幫助。
獲取工作路徑這里介紹兩種方法:
1、使用getcwd()函數。
頭文件:#include
定義函數:char*getcwd(char*buf,size_tsize);
函數說明:getcwd()會將當前的工作目錄絕對路徑復制到參數buf所指的內存空間,參數size為buf的空間大小。
實例:
voidgetPath()
{
charpPath[256]={0};
getcwd(buf,256);
printf("filePath:%s\n",pPath);
}
主函數調用此函數運行結果:
filePath:/home/myTest
2、使用readlink()函數
頭文件:#include<unistd.h>
函數定義:intreadlink(constchar*path,char*buf,size_tbufsiz);
函數說明:此函數會將參數path的符號連接內容到參數buf所指的內存空間,返回的內容不是以NULL作字元串結尾,但會將字元串的字元數返回。若參數bufsiz小於符號連接的內容長度,過長的內容會被截斷。成功返回buf長度,失敗返回-1。
實例:
voidgetPath()
{
charpPath[256]={0};
intret=-1;
ret=readlink("/proc/self/exe",pPath,256);
pPath[ret]="\0"
printf("thefilePath:%s\n",pPath);
}
intmain()
{
getPath();
}
運行結果:
thefilePath:/home/myTest/a.out
小猿圈Linux講師提醒大家:每天學習一點技術問題,只要功夫深,鐵杵磨成針,學習不是一朝一夕的,是需要付出行動的,而且還要堅持,學習新的技術需要不斷的查閱資料,看視頻,復習,練習,如果你工作中或者生活中遇到什麼問題,可以到小猿圈去尋找答案的,相信會給你滿意的答復
⑶ 怎麼用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打開。
最後點擊逗生成修改器地,選擇路徑,起一個名稱,點逗保存地。會提示修改器已生成。
至此修改器製作完成。使用效果見簡介圖片。
選擇左面窗口中已添加的地址,選擇逗刪除項目地可以去掉選中的地址。