2个回答
展开全部
.版本 2
.子程序 _按钮1_被单击
.局部变量 phandle, 整数型
.局部变量 dwsize, 整数型
.局部变量 dllname, 文本型
.局部变量 lpbuf, 整数型
.局部变量 ret, 整数型
.局部变量 h, 整数型
.局部变量 hthread, 整数型
.局部变量 sa, SECURITY_ATTRIBUTES
.局部变量 dwret, 整数型
.局部变量 remotbaseaddr, 整数型
.局部变量 localbaseaddr, 整数型
.局部变量 trueaddr, 整数型
.局部变量 hmodel
.局部变量 code, 字节集
.局部变量 path, 文本型
phandle = OpenProcess (2035711, 0, 到整数 (编辑框1.内容))
.如果真 (phandle = 0)
信息框 (“打开进程失败!”, 0, )
返回 ()
.如果真结束
dllname = “mydll.dll”
path = 取运行目录 () + “\” + dllname
dwsize = 取文本长度 (path) + 1
lpbuf = API_VirtualAllocEx (phandle, 0, dwsize, 4096, 64)
.如果真 (lpbuf = 0)
信息框 (“分配内存失败!”, 0, )
CloseHandle (phandle)
返回 ()
.如果真结束
ret = WriteProcessMemory (phandle, lpbuf, 到字节集 (path) + { 0 }, dwsize, 0)
.如果真 (ret = 0)
信息框 (“写内存失败!”, 0, )
VirtualFreeEx (phandle, lpbuf, dwsize, 16384)
返回 ()
.如果真结束
h = API_GetModuleHandle (“kernel32.dll”)
h = API_GetProcAddress (h, “LoadLibraryA”)
hthread = API_CreateRemoteThread (phandle, sa, 0, h, lpbuf, 0, 0)
WaitForSingleObject (hthread, -1)
GetExitCodeThread (hthread, dwret)
remotbaseaddr = dwret
VirtualFreeEx (phandle, lpbuf, dwsize, 16384)
CloseHandle (hthread)
' ///////////////////////////////////////////////////////////////////////////////////////
localbaseaddr = LoadLibraryEx (path, 0, 0)
h = API_GetProcAddress (localbaseaddr, “mydllcall”)
trueaddr = remotbaseaddr + h - localbaseaddr
FreeLibrary (localbaseaddr)
lpbuf = API_VirtualAllocEx (phandle, 0, 5, 4096, 64)
.如果真 (lpbuf = 0)
信息框 (“分配内存失败!”, 0, )
CloseHandle (phandle)
返回 ()
.如果真结束
code = { 233 } + 到字节集 (到整数 (trueaddr - lpbuf - 5))
ret = WriteProcessMemory (phandle, lpbuf, code, 5, 0)
.如果真 (ret = 0)
信息框 (“写内存失败!”, 0, )
VirtualFreeEx (phandle, lpbuf, 5, 16384)
返回 ()
.如果真结束
hthread = API_CreateRemoteThread (phandle, sa, 0, lpbuf, 0, 0, 0)
WaitForSingleObject (hthread, -1)
VirtualFreeEx (phandle, lpbuf, 5, 16384)
CloseHandle (hthread)
CloseHandle (phandle)
========
编辑框1.内容为进城PID
.子程序 _按钮1_被单击
.局部变量 phandle, 整数型
.局部变量 dwsize, 整数型
.局部变量 dllname, 文本型
.局部变量 lpbuf, 整数型
.局部变量 ret, 整数型
.局部变量 h, 整数型
.局部变量 hthread, 整数型
.局部变量 sa, SECURITY_ATTRIBUTES
.局部变量 dwret, 整数型
.局部变量 remotbaseaddr, 整数型
.局部变量 localbaseaddr, 整数型
.局部变量 trueaddr, 整数型
.局部变量 hmodel
.局部变量 code, 字节集
.局部变量 path, 文本型
phandle = OpenProcess (2035711, 0, 到整数 (编辑框1.内容))
.如果真 (phandle = 0)
信息框 (“打开进程失败!”, 0, )
返回 ()
.如果真结束
dllname = “mydll.dll”
path = 取运行目录 () + “\” + dllname
dwsize = 取文本长度 (path) + 1
lpbuf = API_VirtualAllocEx (phandle, 0, dwsize, 4096, 64)
.如果真 (lpbuf = 0)
信息框 (“分配内存失败!”, 0, )
CloseHandle (phandle)
返回 ()
.如果真结束
ret = WriteProcessMemory (phandle, lpbuf, 到字节集 (path) + { 0 }, dwsize, 0)
.如果真 (ret = 0)
信息框 (“写内存失败!”, 0, )
VirtualFreeEx (phandle, lpbuf, dwsize, 16384)
返回 ()
.如果真结束
h = API_GetModuleHandle (“kernel32.dll”)
h = API_GetProcAddress (h, “LoadLibraryA”)
hthread = API_CreateRemoteThread (phandle, sa, 0, h, lpbuf, 0, 0)
WaitForSingleObject (hthread, -1)
GetExitCodeThread (hthread, dwret)
remotbaseaddr = dwret
VirtualFreeEx (phandle, lpbuf, dwsize, 16384)
CloseHandle (hthread)
' ///////////////////////////////////////////////////////////////////////////////////////
localbaseaddr = LoadLibraryEx (path, 0, 0)
h = API_GetProcAddress (localbaseaddr, “mydllcall”)
trueaddr = remotbaseaddr + h - localbaseaddr
FreeLibrary (localbaseaddr)
lpbuf = API_VirtualAllocEx (phandle, 0, 5, 4096, 64)
.如果真 (lpbuf = 0)
信息框 (“分配内存失败!”, 0, )
CloseHandle (phandle)
返回 ()
.如果真结束
code = { 233 } + 到字节集 (到整数 (trueaddr - lpbuf - 5))
ret = WriteProcessMemory (phandle, lpbuf, code, 5, 0)
.如果真 (ret = 0)
信息框 (“写内存失败!”, 0, )
VirtualFreeEx (phandle, lpbuf, 5, 16384)
返回 ()
.如果真结束
hthread = API_CreateRemoteThread (phandle, sa, 0, lpbuf, 0, 0, 0)
WaitForSingleObject (hthread, -1)
VirtualFreeEx (phandle, lpbuf, 5, 16384)
CloseHandle (hthread)
CloseHandle (phandle)
========
编辑框1.内容为进城PID
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询