VB讀取線程、句柄及寫入內(nèi)存的API代碼實(shí)例
本文所述實(shí)例為VB讀取內(nèi)存、線程及句柄的一個(gè)API,對(duì)涉及系統(tǒng)底層操作的VB編程有一定的幫助,需要的讀者可以參考使用。這個(gè)API可獲取到線程ID,寫內(nèi)存,包括進(jìn)程句柄,ByVal 內(nèi)存區(qū)地址,數(shù)據(jù),總長(zhǎng)度,已經(jīng)完成長(zhǎng)度,讀取進(jìn)程,包括進(jìn)程句柄,ByVal 內(nèi)存區(qū)地址,讀取來(lái)的數(shù)據(jù)存放處,要讀取的長(zhǎng)度,已經(jīng)讀取的長(zhǎng)度,內(nèi)存分配(進(jìn)程柄,地址[好像只要丟個(gè)0進(jìn)去就行],長(zhǎng)度,權(quán)限1[MEM_COMMIT],權(quán)限2[PAGE_READWRITE])返回:分配到的內(nèi)存起始地址等功能。
具體實(shí)現(xiàn)代碼如下:
Attribute VB_Name = "API" Option Explicit Public Declare Function GetDesktopWindow Lib "User32.DLL" () As Long Public Declare Function FindWindow Lib "User32.DLL" Alias "FindWindowA" (ByVal ClassName As String, ByVal Caption As String) As Long Public Declare Function GetWindow Lib "User32.DLL" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Public Declare Function GetWindowText Lib "User32.DLL" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Const GW_CHILD = (5) Public Const GW_HWNDNEXT = (2) Public Declare Function GetWindowThreadProcessId Lib "User32.DLL" (ByVal hwnd As Long, ProcessId As Long) As Long '取找線程ID(句柄,返回的線程ID) Public Declare Function OpenProcess Lib "Kernel32.DLL" (ByVal 操作權(quán)限 As Long, ByVal 繼承句柄 As Long, ByVal 線程ID As Long) As Long Public Declare Function ReadProcessMemory Lib "Kernel32.DLL" (ByVal 進(jìn)程柄 As Long, ByVal 內(nèi)存位置 As Long, 緩沖區(qū) As Any, ByVal 長(zhǎng)度 As Long, lpNumberOfBytesWritten As Long) As Long '讀取進(jìn)程(進(jìn)程句柄,ByVal 內(nèi)存區(qū)地址,讀取來(lái)的數(shù)據(jù)存放處,要讀取的長(zhǎng)度,已經(jīng)讀取的長(zhǎng)度[0]) Public Declare Function WriteProcessMemory Lib "Kernel32.DLL" (ByVal 進(jìn)程柄 As Long, 內(nèi)存位置 As Any, 緩沖區(qū) As Any, ByVal 長(zhǎng)度 As Long, lpNumberOfBytesWritten As Long) As Long '寫內(nèi)存(進(jìn)程句柄,ByVal 內(nèi)存區(qū)地址,數(shù)據(jù),總長(zhǎng)度,已經(jīng)完成長(zhǎng)度[0]) Public Declare Function CloseHandle Lib "Kernel32.DLL" (ByVal 進(jìn)程柄 As Long) As Long '釋放(進(jìn)程句柄)'不釋放會(huì)出錯(cuò) Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const SYNCHRONIZE = &H100000 Public Const RRAD_WRITE = &H1F0FFF Public Const PROCESS_VM_OPERATION = &H8& Public Const 讀取 = &H10& Public Const 寫入 = &H20& '---------變量轉(zhuǎn)換API Public Declare Sub MOV Lib "Kernel32.DLL" Alias "RtlMoveMemory" (變量1 As Any, 變量2 As Any, ByVal 長(zhǎng)度 As Long) '---------內(nèi)存保護(hù)分配釋放 Public Declare Function VPE Lib "Kernel32.DLL" Alias "VirtualProtectEx" (ByVal 進(jìn)程柄 As Long, 地址 As Any, ByVal 長(zhǎng)度 As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long Public Declare Function VAE Lib "Kernel32.DLL" Alias "VirtualAllocEx" (ByVal 進(jìn)程柄 As Long, ByVal 地址 As Long, ByVal 長(zhǎng)度 As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long '內(nèi)存分配(進(jìn)程柄,地址[好像只要丟個(gè)0進(jìn)去就行],長(zhǎng)度,權(quán)限1[MEM_COMMIT],權(quán)限2[PAGE_READWRITE])返回:分配到的內(nèi)存起始地址 Public Declare Function VFE Lib "Kernel32.DLL" Alias "VirtualFreeEx" (ByVal 進(jìn)程柄 As Long, ByVal 地址 As Long, ByVal 長(zhǎng)度 As Long, ByVal 釋放類型 As Long) As Long Public Const MEM_COMMIT = &H1000 Public Const PAGE_READWRITE = &H4 Public Const STILL_ACTIVE = &H103& Public Const INFINITE = &HFFFF '---------取模塊函數(shù)位置API Public Declare Function GetModuleHandle Lib "Kernel32.DLL" Alias "GetModuleHandleA" (ByVal ModuleName As String) As Long Public Declare Function LoadLibrary Lib "Kernel32.DLL" Alias "LoadLibraryA" (ByVal ModuleName As String) As Long Public Declare Function GetProcAddress Lib "Kernel32.DLL" (ByVal hModule As Long, ByVal ProcName As String) As Long Public Declare Function CreateRemoteThread Lib "Kernel32.DLL" (ByVal 進(jìn)程柄 As Long, lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long Public Declare Function GetTickCount Lib "kernel32" () As Long
上一篇:vbs腳本實(shí)現(xiàn)下載jre包并靜默安裝的代碼實(shí)例
欄 目:vb
下一篇:VB語(yǔ)言使用ADO連接、操作SQLServer數(shù)據(jù)庫(kù)教程
本文標(biāo)題:VB讀取線程、句柄及寫入內(nèi)存的API代碼實(shí)例
本文地址:http://mengdiqiu.com.cn/a1/vb/7214.html
您可能感興趣的文章
- 01-10VBS教程:方法-Skip 方法
- 01-10VBS教程:函數(shù)-Int、Fix 函數(shù)
- 01-10VBS教程:函數(shù)-LTrim、RTrim 和 Trim 函數(shù)
- 01-10使用ADSI、ASP和一對(duì)魔術(shù)戲法自動(dòng)地創(chuàng)立一個(gè)虛擬目錄的方法
- 01-10Stream、WshShell、WshUrlShortcut對(duì)象及Shell.Application的參數(shù)與使用
- 01-10用vbs讀取文本文件的最后一行
- 01-10vbs中使用 ADO 讀取所有數(shù)據(jù)均在一行上的文本文件的代碼
- 01-10用vbs讀取遠(yuǎn)程計(jì)算機(jī)上的文本文件的代碼
- 01-10用vbs實(shí)現(xiàn)讀取文本文件的方法
- 01-10tel.xls.vbs xls專殺工具


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法