首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

virtualFreeEx返回值老是0

2013-02-25 
virtualFreeEx返回值总是0Private Declare Function WriteProcessMemory Lib kernel32 (ByVal hProcess

virtualFreeEx返回值总是0

Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As Any, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
'Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long



Const MEM_RELEASE = &H8000
Const MEM_COMMIT = &H1000
Const MEM_RESERVE = &H2000
 Const PROCESS_ALL_ACCESS = &H1F0FFF

Process = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION, 0, idd)
hwnd = FindWindow(vbNullString, "Element Client")
If hwnd = 0 Then MsgBox "未开启武林外传"

GetWindowThreadProcessId hwnd, idd
If idd = 0 Then
MsgBox "获取idd失败"
Exit Sub
End If
hProcess = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION, 0, idd)

callAddr = VirtualAllocEx(hProcess, ByVal 0&, UBound(immitCode), MEM_COMMIT Or MEM_RESERVE,  PAGE_EXECUTE_READWRITE)

WriteProcessMemory hProcess, ByVal callAddr, immitCode(1), UBound(immitCode), 0
Print "写入字节" & writeByte; 
CreateRemoteThread hProcess, ByVal 0&, 0, ByVal callAddr, ByVal 0&, ByVal 0&, ByVal 0&

到这里 全部可以执行,就 下面那句 返回值 一直都是0 

writeByte = VirtualFreeEx(hProcess, ByVal callAddr,0, MEM_RELEASE)
Print "释放结果" & writeByte             

请贵人帮忙指点一下
[解决办法]
错了,是这样

Const MEM_RELEASE = &H8000&
不带 &,转换成long后,是 &HFFFF8000
带了那个 &, 转换后是    &H00008000

热点排行