RT 我在網上找到這篇文 裡頭說到用Ilvmoney作openprocess  Public Declare Function OP Lib "IlvMoney.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Sub Command1_Click()
appHwnd = FindWindow(" Client", " Client")
hProcessID = RunDll32Add5("user32", "GetWindowThreadProcessId", hwnd, VarPtr(processID))
hProcess = RunDll32("IlvMoney", "OP", PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, hProcessID)
End Sub
Public Function RunDll32(LibFileName As String, ProcName As String, ParamArray Params()) As Long
Dim hProc As Long
Dim hModule As Long
Dim i As Long, CodeStar As Long
ReDim OpCode(400 + 6 * UBound(Params)) '保留用来写OPCODE
'读取模组
hModule = LoadLibrary(ByVal LibFileName)
If hModule = 0 Then
MsgBox "Library读取失败"
Exit Function
End If
'取得函数位址
hProc = GetProcAddress(hModule, ByVal ProcName)
If hProc = 0 Then
MsgBox "函数读取失败", vbCritical
FreeLibrary hModule
Exit Function
End If
'---以下为Assembly--
'程序起始位址必须是16的倍数
CodeStar = (VarPtr(OpCode(0)) Or &HF) + 1
opIndex = CodeStar - VarPtr(OpCode(0)) '程序开始的元素位置
'前端部份以中断点填满
For i = 0 To opIndex - 1
OpCode(i) = &HCC 'int 3
Next
'--------以下开始放入所需的程序----------
'将参数push到堆迭
'由于是STDCall CALL 参数由最后一个开始放到堆迭
For i = UBound(Params) To 0 Step -1
AddByteToCode &H68 'push
AddLongToCode CLng(Params(i)) '参数位址
Next i
'call hProc
AddByteToCode &HE8 'call
AddLongToCode hProc - VarPtr(OpCode(opIndex)) - 4 '函数位址 用call的定址
'-----------结束所需的程序--------------
'返回呼叫函数
AddByteToCode &HC2 'ret 10h
AddByteToCode &H10
AddByteToCode &H0
'执行刚刚写完的Assembly Code
RunDll32 = CallWindowProc(CodeStar, 0, 1, 2, 3)
FreeLibrary hModule '释放模组
End Function
就在RunDll32Add5出錯了提示:"沒有定義這個Sub或Function"哭阿 要怎麼解決??還是有其他的寫法嗎?順帶一提:裡面有說使用Assembly是直接寫在VB裡嗎?

解决方案 »

  1.   

    你把 RunDll32Add5 改成 RunDll32 试试。所有函数在使用之前都必须声明。你下面声明的是RunDll32,而不是RunDll32Add5,所以用RunDll32Add5会报错。
      

  2.   

    抱歉阿 我是台湾人 没将繁转简这样可以了 但是下面的LoadLibrary又出同样错误唉.好像很多都没宣告阿
      

  3.   

    加上这个声明:Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
      

  4.   

    这样吧,你下个APIViewer
    缺什么声明自己查了之后加上。