VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: tgy

VB写的DLL简单注射器

[复制链接]
发表于 2012-3-9 16:01:17 | 显示全部楼层
tgy 发表于 2011-12-12 16:29
更新一下:
增加dll文件直接拖放注入功能(可直接拖放DLL文件到列表框指定的进程中即可实现快捷注入),附:dll ...

LZ能否开源 !我很喜欢这个东东!做外挂用比较好!能否发个源码给我!
回复 支持 反对

使用道具 举报

发表于 2012-3-9 16:52:50 | 显示全部楼层
daiw20089 发表于 2012-3-9 16:01
LZ能否开源 !我很喜欢这个东东!做外挂用比较好!能否发个源码给我!


楼主!这个我写的,这个普通的!不知道和你有那个有什么区别!我发现一个问题!你在注入的时候就拦截了!。我不知道怎么处理!


工程1.rar (5.64 KB, 下载次数: 476)

点评

tgy
注入时被安全软件拦截是很正常的.  发表于 2012-3-9 21:07
回复 支持 反对

使用道具 举报

发表于 2012-3-9 21:10:51 | 显示全部楼层
有什么好的办法么
回复 支持 反对

使用道具 举报

发表于 2012-3-9 21:11:15 | 显示全部楼层
daiw20089 发表于 2012-3-9 16:52
楼主!这个我写的,这个普通的!不知道和你有那个有什么区别!我发现一个问题!你在注入的时候就拦截了 ...

但是你的那个注入器怎么可以注入
回复 支持 反对

使用道具 举报

发表于 2012-3-9 21:14:41 | 显示全部楼层
LZ能不能发个源码啊!我QQ328257345
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-9 21:18:14 | 显示全部楼层
使用远程线程注入
核心注入源码
Option   Explicit

Private   Const   PROCESS_CREATE_THREAD   =   &H2
Private   Const   PROCESS_QUERY_INFORMATION   =   &H400
Private   Const   PROCESS_VM_WRITE   =   &H20
Private   Const   PROCESS_VM_OPERATION   =   &H8
Private   Const   MEM_COMMIT   =   &H1000
Private   Const   MEM_RELEASE   =   &H8000
Private   Const   PAGE_READWRITE   =   &H4
Private   Const   INFINITE   =   &HFFFFFFFF
Private   Const   STANDARD_RIGHTS_REQUIRED   =   &HF0000
Private   Const   TOKEN_ASSIGN_PRIMARY   =   &H1
Private   Const   TOKEN_DUPLICATE   =   (&H2)
Private   Const   TOKEN_IMPERSONATE   =   (&H4)
Private   Const   TOKEN_QUERY   =   (&H8)
Private   Const   TOKEN_QUERY_SOURCE   =   (&H10)
Private   Const   TOKEN_ADJUST_PRIVILEGES   =   (&H20)
Private   Const   TOKEN_ADJUST_GROUPS   =   (&H40)
Private   Const   TOKEN_ADJUST_DEFAULT   =   (&H80)
Private   Const   TOKEN_ALL_ACCESS   =   (STANDARD_RIGHTS_REQUIRED   Or   TOKEN_ASSIGN_PRIMARY   Or   _
TOKEN_DUPLICATE   Or   TOKEN_IMPERSONATE   Or   TOKEN_QUERY   Or   TOKEN_QUERY_SOURCE   Or   _
TOKEN_ADJUST_PRIVILEGES   Or   TOKEN_ADJUST_GROUPS   Or   TOKEN_ADJUST_DEFAULT)
Private   Const   SE_PRIVILEGE_ENABLED   =   &H2
Private   Const   ANYSIZE_ARRAY   =   1
Private   Const   SE_DEBUG_NAME   =   "SeDebugPrivilege "

Private   Type   LUID
      lowpart   As   Long
      highpart   As   Long
End   Type

Private   Type   LUID_AND_ATTRIBUTES
      pLuid   As   LUID
      Attributes   As   Long
End   Type

Private   Type   TOKEN_PRIVILEGES
      PrivilegeCount   As   Long
      Privileges(ANYSIZE_ARRAY)   As   LUID_AND_ATTRIBUTES
End   Type

Private   Declare   Function   OpenProcessToken   Lib   "advapi32.dll "   (ByVal   ProcessHandle   As   Long,   ByVal   DesiredAccess   As   Long,   TokenHandle   As   Long)   As   Long
Private   Declare   Function   AdjustTokenPrivileges   Lib   "advapi32.dll "   (ByVal   TokenHandle   As   Long,   ByVal   DisableAllPriv   As   Long,   NewState   As   TOKEN_PRIVILEGES,   ByVal   BufferLength   As   Long,   PreviousState   As   TOKEN_PRIVILEGES,   ReturnLength   As   Long)   As   Long                                 'Used   to   adjust   your   program 's   security   privileges,   can 't   restore   without   it!
Private   Declare   Function   LookupPrivilegeValue   Lib   "advapi32.dll "   Alias   "LookupPrivilegeValueA "   (ByVal   lpSystemName   As   Any,   ByVal   lpName   As   String,   lpLuid   As   LUID)   As   Long
Private   Declare   Function   GetCurrentProcess   Lib   "kernel32 "   ()   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   VirtualFreeEx   Lib   "kernel32 "   (ByVal   hProcess   As   Long,   lpAddress   As   Any,   ByVal   dwSize   As   Long,   ByVal   dwFreeType   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   Declare   Function   TerminateProcess   Lib   "kernel32 "   (ByVal   hProcess   As   Long,   ByVal   uExitCode   As   Long)   As   Long
Private   Declare   Function   WriteProcessMemory   Lib   "kernel32 "   (ByVal   hProcess   As   Long,   lpBaseAddress   As   Any,   lpBuffer   As   Any,   ByVal   nSize   As   Long,   lpNumberOfBytesWritten   As   Long)   As   Long
Private   Declare   Function   GetModuleHandle   Lib   "kernel32 "   Alias   "GetModuleHandleA "   (ByVal   lpModuleName   As   String)   As   Long
Private   Declare   Function   GetProcAddress   Lib   "kernel32 "   (ByVal   hModule   As   Long,   ByVal   lpProcName   As   String)   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   WaitForSingleObject   Lib   "kernel32 "   (ByVal   hHandle   As   Long,   ByVal   dwMilliseconds   As   Long)   As   Long
Private   Declare   Function   CloseHandle   Lib   "kernel32 "   (ByVal   hObject   As   Long)   As   Long
Private   Declare   Function   GetExitCodeThread   Lib   "kernel32 "   (ByVal   hThread   As   Long,   lpExitCode   As   Long)   As   Long

Public   Function   InjectDll(ByVal   dwProcessId   As   Long,   ByVal   pszLibFile   As   String)   As   Boolean
      Dim   hProcess   As   Long,   hThread   As   Long
      Dim   pszLibFileRemote   As   Long,   exitCode   As   Long

      On   Error   GoTo   errhandle
      hProcess   =   OpenProcess(PROCESS_QUERY_INFORMATION   Or   PROCESS_CREATE_THREAD   Or   PROCESS_VM_OPERATION   Or   PROCESS_VM_WRITE,   0,   dwProcessId)

      If   hProcess   =   0   Then   GoTo   errhandle

      Dim   cch       As   Long,   cb   As   Long

      cch   =   1   +   LenB(StrConv(pszLibFile,   vbFromUnicode))
      cb   =   cch

      pszLibFileRemote   =   VirtualAllocEx(hProcess,   ByVal   0&,   cb,   MEM_COMMIT,   PAGE_READWRITE)

      If   pszLibFileRemote   =   0   Then   GoTo   errhandle

      If   (WriteProcessMemory(hProcess,   ByVal   pszLibFileRemote,   ByVal   pszLibFile,   cb,   ByVal   0&)   =   0)   Then   GoTo   errhandle

      Dim   pfnThreadRtn       As   Long

      pfnThreadRtn   =   GetProcAddress(GetModuleHandle( "Kernel32 "),   "LoadLibraryA ")

      If   pfnThreadRtn   =   0   Then   GoTo   errhandle

      hThread   =   CreateRemoteThread(hProcess,   ByVal   0&,   0&,   ByVal   pfnThreadRtn,   ByVal   pszLibFileRemote,   0,   0&)

      If   (hThread   =   0)   Then   GoTo   errhandle

      WaitForSingleObject   hThread,   INFINITE

      GetExitCodeThread   hThread,   exitCode

      InjectDll   =   CBool(exitCode)

errhandle:

      If   pszLibFileRemote   <>   0   Then
              VirtualFreeEx   hProcess,   ByVal   pszLibFileRemote,   0,   MEM_RELEASE
              InjectDll   =   False
              Exit   Function
      End   If
      If   hThread   <>   0   Then
              CloseHandle   hThread
              InjectDll   =   False
              Exit   Function
      End   If
      If   hProcess   <>   0   Then
              CloseHandle   hProcess
              InjectDll   =   False
              Exit   Function
      End   If
      InjectDll   =   True
End   Function
回复 支持 反对

使用道具 举报

发表于 2012-3-9 21:32:05 | 显示全部楼层
我真的无解!LZ怎么不说话?

点评

tgy
上面的代码有点问题,没发现吗,API声明中双引号内多了一个空格,把控格删除就可以了.  发表于 2012-3-9 23:04
回复 支持 反对

使用道具 举报

发表于 2012-3-9 23:22:34 | 显示全部楼层
能把源程序发我么!谢谢!实在无法实现
回复 支持 反对

使用道具 举报

发表于 2012-3-9 23:32:20 | 显示全部楼层

Dim handle As Long
handle = 取进程pid.取进程pid("vb6.0.exe")

InjectDll handle, App.Path & "\bvs.dll"

我是这么写的 怎么注入不进去?
回复 支持 反对

使用道具 举报

发表于 2012-3-9 23:58:12 | 显示全部楼层
可以了!谢谢你!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2020-6-2 00:55

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表