VB6.0超级模块-内存操作篇-含特征码搜索和HOOK跳转构造
生活随笔
收集整理的這篇文章主要介紹了
VB6.0超级模块-内存操作篇-含特征码搜索和HOOK跳转构造
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 簡介:除了 特征碼搜索和構造HOOK跳轉,還有基本的多級指針讀寫。也就是用了這些函數以后就可以修改游戲的變量和反匯編代碼了。當然也可以讀取游戲的變量數值。 '獲取窗口句柄 '參數是游戲進程名 或 窗口類名 或 窗口標題 Function GetWindowHwnd(ByVal WindowClassVsWindowText As String) As Long ' '獲取進程PID '參數是游戲進程名 或 窗口類名 或 窗口標題 Function GetPid(ByVal WindowClassVsWindowTextExeName As String) As Long '獲取窗口句柄 '參數是游戲進程名 或 窗口類名 或 窗口標題 Function GetProcessHwnd(ByVal WindowClassVsWindowTextExeName As String) As Long '獲窗口句柄 '獲取進程句柄 '參數是游戲進程名 或 窗口類名 或 窗口標題 'a=GetProcessHwnd("天地玄門") Function GetProcessHwnd(ByVal WindowClassVsWindowTextExeName As String) As Long '獲窗口句柄 '寫入反匯編對應的字節集 , 比如 '參數1 '參數是游戲進程名 或 窗口類名 或 窗口標題 '參數2 反匯編代碼地址 '參數3 反匯編字節集 'VB超級模塊.WriteAsmByte ("天地玄門","6A9EC0","90 90 90 90 90 90 90") 'VB超級模塊.WriteAsmByte ("天地玄門","Game.dll*4E32","90 90 90 90 90 90 90") Function WriteAsmByte(ByVal WindowClassVsWindowTextExeName As String, ByVal PeCodeAdr As String, ByVal AsmByte As String) As String 構造 JMP 跳轉 '參數1 目標游戲進程名或窗口名 或窗口類名, '參數2 目標進程的HOOK點的代碼地址 '參數3 My函數的代碼地址 'CALL??JmpCode ("天地玄門","4D9EC0","6A0000" ) Function JmpCode(ByVal WindowClassVsWindowTextExeName As String, ByVal PeCodeAdr As String, ByVal MyCodeAdr As String) As String '不含申請內存的 '搜索特征碼 'A=FindAsm ("天地玄門","50000-6A9EC0" , "2b f3 89 b7 60 55 00 00") '參數1是 游戲進程名或者窗口名或窗口類名 '參數2是 搜索范圍 '參數3是 特征碼-字節集 Function FindAsm(ByVal WindowClassVsWindowTextExeName As String, ByVal AddrRange As String, ByVal AsmCodeByte As String) As String '讀取4字節整數??a = ReadLong ("天地玄門", "6A9EC0+768+5560") '讀取4字節整數??a = ReadLong ("天地玄門", "Game.dll*43AE+768+5560") '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 Function ReadLong(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As Long '讀取4字節整數 '讀取2字節的整數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '讀取2字節整數??a = ReadInteger ("天地玄門", "6A9EC0+768+5560") '讀取2字節整數??a = ReadInteger ("天地玄門", "Game.dll*43AE+768+5560") Function ReadInteger(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As Integer '讀取1字節的整數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '讀取1字節整數??a = ReadByte ("天地玄門", "6A9EC0+768+5560") '讀取1字節整數??a = ReadByte ("天地玄門", "Game.dll*43AE+768+5560") Function ReadByte(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As Byte ??'寫入4字節的整數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '參數3:寫入的數值 '讀取4字節整數??a = WriteLong ("天地玄門", "6A9EC0+768+5560",100) '讀取4字節整數??a = WriteLong ("天地玄門", "Game.dll*43AE+768+5560",100) Sub WriteLong(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String, ByVal vas As Long) '寫入2字節的整數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '參數3:寫入的數值 '寫入2字節整數??CALL??WriteInteger ("天地玄門", "6A9EC0+768+5560",100) '寫入2字節整數? ?CALL? ?WriteInteger ("天地玄門", "Game.dll*43AE+768+5560",100) Sub WriteInteger(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String, ByVal vas As Integer) '寫入1字節的整數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '參數3:寫入的數值 '寫入1字節整數??CALL??WriteInteger ("天地玄門", "6A9EC0+768+5560",100) '寫入1字節整數? ?CALL? ?WriteInteger ("天地玄門", "Game.dll*43AE+768+5560",250) Sub WriteByte(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String, ByVal vas As Byte) '寫入單精度小數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '參數3:寫入的數值 '寫入單精度小數字節整數??CALL??WriteSingle ("天地玄門", "6A9EC0+768+5560",100) '寫入單精度小數字節整數? ?CALL? ?WriteSingle ("天地玄門", "Game.dll*43AE+768+5560",100) Sub WriteSingle(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String, ByVal vas As Single)? ???'修改 4字節浮點數 '寫入雙進度小數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '參數3:寫入的數值 '寫入單精度小數字節整數??CALL??WriteDouble ("天地玄門", "6A9EC0+768+5560",100) '寫入單精度小數字節整數? ?CALL? ?WriteDouble ("天地玄門", "Game.dll*43AE+768+5560",100) Sub WriteDouble(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String, ByVal vas As Double)? ?? ? '修改 4字節浮點數 '讀取單精度小數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '讀取單精度小數字節整數 a=WriteDouble ("天地玄門", "6A9EC0+768+5560",100) '讀取單精度小數字節整數??a= WriteDouble ("天地玄門", "Game.dll*43AE+768+5560",100) Function ReadSingle(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As Single '讀取1字節整數 ' '讀取雙精度浮點數 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '讀取雙精度浮點數 a=WriteDouble ("天地玄門", "6A9EC0+768+5560",100) '讀取雙精度浮點數??a= WriteDouble ("天地玄門", "Game.dll*43AE+768+5560",100) Function ReadDouble(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As Double '讀取Unicode字符串 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 '讀取Unicode字符串 a=ReadStringUnicode ("天地玄門", "6A9EC0+768+5560",100) '讀取Unicode字符串??a= ReadStringUnicode ("天地玄門", "Game.dll*43AE+768+5560",100) Function ReadStringUnicode(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As String ' '讀取 Ansi字符串 '參數1:游戲進程名或者窗口名或窗口類名 '參數2:可以是 多級指針結構,也可以單獨1個內存地址 'Ansi字符串 a=ReadStringAnsi ("天地玄門", "6A9EC0+768+5560",100) 'Ansi字符串??a= ReadStringAnsi ("天地玄門", "Game.dll*43AE+768+5560",100) Function ReadStringAnsi(ByVal WindowClassVsWindowTextExeName As String, ByVal ProcesAddr As String) As String? ?'讀取1字節整數 '獲取游戲進程上的某個模塊地址 '參數1 進程窗口名、類名或者進程名 '參數2 模塊名 ,比如Client.dll 或??Game.dll??或??Game.dat??或??Client.dat Public Function GetProcessModuleHandle(ByVal WindowClassVsWindowTextExeName As String, ByVal ModuleName As String) As Long '參數1 進程窗口名、類名或者進程名,參數2 模塊名 ,參數3 模塊所在的路徑關鍵字 比如 C盤 WINDOWS 目錄下的路徑 就填寫 "WINDOWS" 即可 '這個函數一般不怎么用,一般用上面的 GetProcessModuleHandle 函數就可以了,那么這個函數為啥我要寫呢? 因為 有的時候 同模塊名 但是路徑不同 并且這2個模塊 版本也不同,只是模塊名相同。這個時候 就需要區分 路徑關鍵字了 '比如d3d9.dll這個 模塊 一般 某類進程目錄下面有,操作系統C盤上也有。??但是 真正調用的是系統的那個模塊 ' Dim mymod1 As Long ' mymod1 = GetProcessModuleHandleEx("天地玄門中文版", "d3d9.dll","WINDOWS") Public Function GetProcessModuleHandleEx(ByVal WindowClassVsWindowTextExeName As String, ByVal ModuleName As String, ByVal DLL_Path As String) As Long '獲取模塊地址 用PID ''參數1 進程窗口名、類名或者進程名,參數2 模塊名 Public Function GetProcessModuleHandleByPid(ByVal GamePid As String, ByVal ModuleName As String) As Long |
| VB6.0超級模塊模塊下載去 技術交流站 www.zai996.com? q1016058890?? |
總結
以上是生活随笔為你收集整理的VB6.0超级模块-内存操作篇-含特征码搜索和HOOK跳转构造的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非平稳序列的随机性分析(SAS)
- 下一篇: 数据分析拆解方法