易語言怎麼製作修改遊戲內存,易語言怎麼寫內存破解補丁
這個要用到dll
獲取進程標示符,也就是進程ID
.版本 2
.支持庫 eAPI
.程序集變量 進程列表, 進程信息, , "0"
.程序集變量 n, 整數型
.程序集變量 進程ID, 整數型
.程序集變量 寄存器, 整數型
.程序集變量 進程的句柄, 整數型
.子程序 __啟動窗口_創建完畢
進程列表 = 取系統進程列表 ()
.計次循環首 (取數組成員數 (進程列表), n)
.如果真 (進程列表 [n].進程名稱 = “你的遊戲名稱.exe”)
進程ID = 進程列表 [n].進程標識符
跳出循環 ()
.如果真結束
.計次循環尾 ()
首先要獲取訪問權限,返回進程句柄。
.版本 2
.DLL命令 OpenProcess, 整數型, "Kernel32.dll", "OpenProcess"
.參數 訪問方法, 整數型
.參數 是否繼承句柄, 邏輯型
.參數 進程標識符, 整數型
.版本 2
.子程序 _時鐘1_週期事件
進程的句柄 = OpenProcess (2035711, 假, 進程ID)
3. 寫數據到內存地址
.版本 2
.DLL命令 WriteProcessMemory, 邏輯型, , "WriteProcessMemory"
.參數 進程句柄, 整數型
.參數 要寫的內存地址, 整數型
.參數 寫入變量的緩衝區, 整數型, 傳址
.參數 要寫入的字節數, 整數型
.參數 實際寫入的字節數, 整數型
.版本 2
.子程序 _時鐘1_週期事件
.局部變量 a, 整數型
WriteProcessMemory (進程的句柄, 327421008, 9999, 4, a)
4. 寫完後要關閉句柄,不然會卡死
.版本 2
.DLL命令 CloseHandle, 邏輯型, , "CloseHandle"
.參數 要關閉的句柄, 整數型
.版本 2
.子程序 _時鐘1_週期事件
CloseHandle (進程的句柄)
2.如何用易語言代碼修改內存.版本 2
.程序集 窗口程序集1
.程序集變量 ID, 整數型
.程序集變量 進程句柄, 整數型
.程序集變量 地址1, 整數型
.程序集變量 地址2, 整數型
.子程序 __啟動窗口_創建完畢
ID = 進程取ID (“winlinez.exe”)
進程句柄=進程ID取進程句柄(ID)
地址1 = 讀內存整數型 (進程句柄, 十六到十 (“00430144”))
地址2 = 讀內存整數型(進程句柄,地址1 + 十六到十 (“00430144”)
.子程序 _按鈕1_被單擊
時鐘1.時鐘週期 = 1000
.子程序 _時鐘1_週期事件
寫內存整數型 (進程句柄, 地址2, 9999)
.子程序 _按鈕2_被單擊
時鐘1.時鐘週期 = 0
如果還是讀不出來,那麼這個地址就是有內存保護機制的,或者你找的不是基址
3.用易語言寫內存修改器源碼怎樣寫版本 2
.支持庫 spec
.程序集 窗口程序集1
.子程序 __啟動窗口_創建完畢
調試輸出 (內存地址是否可讀_ (6234567))
調試輸出 (內存地址是否可寫_ (6234567))
.子程序 內存地址是否可讀_, 邏輯型
.參數 內存地址
.參數 讀取長度, , 可空
.局部變量 是否可讀, 邏輯型
.如果真 (讀取長度 = 0)
讀取長度 = 1
.如果真結束
__try ()
指針到字節集 (內存地址, 讀取長度)
是否可讀 = 真
__except ()
是否可讀 = 假
__limit ()
返回 (是否可讀)
.子程序 內存地址是否可寫_, 邏輯型
.參數 內存地址
.參數 寫入長度, , 可空
.局部變量 是否可寫, 邏輯型
.局部變量 臨時_數據, 字節集
.如果真 (寫入長度 = 0)
寫入長度 = 1
.如果真結束
__try ()
臨時_數據 = 指針到字節集 (內存地址, 寫入長度)
寫到內存 (臨時_數據, 內存地址, 寫入長度)
是否可寫 = 真
__except ()
是否可寫 = 假
__limit ()
返回 (是否可寫)