我用远程线程注入成功了,然后DllMain里面只执行了第一句,后面的都没反应,怎么回事?
Dll是用VB6的插件写的Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Const DLL_PROCESS_DETACH = 0 '动态链接库从进程的地址空间卸出时
Private Const DLL_PROCESS_ATTACH = 1 '动态链接库第一次插入进程的地址空间时
Private Const DLL_THREAD_ATTACH = 2 '新线程生成
Private Const DLL_THREAD_DETACH = 3 '线程销毁
Public Function DLLMain(ByVal hInstDLL As Long, ByVal fdwReason As Long, ByVal lpwReserved As Long) As Long
If fdwReason = DLL_PROCESS_ATTACH Then
Dim hProcess As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId)
TerminateProcess hProcess, 0
DLLMain = 1
Else
DLLMain = 0
End If
End FunctionSub Main()End Sub

解决方案 »

  1.   

    这种DLL本质上还是基于VB6的虚拟机环境的,所以目标进程里也需要有这样的环境才有可能执行。看你代码,是要插谁谁死么?。那你用MASM32写一个吧,语法与VB语法差不多,也有if..else...endif这样的高级语法。
      

  2.   

    这个能执行吗?
    你Beep一个,没声说明执行不了
      

  3.   

    vb搞dll注入不太可行的,你最好换一个语言
      

  4.   

    那就用powerbasic,也是basic语言,但是在底层,细节控制上比vb好,用它编dll没问题