|
20精币
.版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.子程序 注入DLL
.局部变量 进程句柄, 整数型
.局部变量 内存地址, 整数型
.局部变量 内存地址大小, 整数型
.局部变量 写内存状态, 逻辑型
.局部变量 kernel32地址, 整数型
.局部变量 LoadLibraryA, 整数型
.局部变量 线程句柄, 整数型
.局部变量 窗口句柄, 整数型
.局部变量 进程ID, 整数型
进程ID = 进程_进程取ID (“BES.exe”)
' 首先打开进程
进程句柄 = 打开进程 (2097151, 0, 进程ID)
.如果真 (进程句柄 = 0)
调试输出 (“打开进程失败”)
返回 ()
.如果真结束
' 申请地址大小
内存地址大小 = 取文本长度 (“C:\Users\Administrator\Desktop\Z.dll”)
' 申请进程内存
内存地址 = 申请进程内存 (进程句柄, 0, 内存地址大小, 4096, 4)
.如果真 (内存地址 = 0)
调试输出 (“申请内存地址失败!”)
关闭句柄 (进程句柄)
返回 ()
.如果真结束
' 将DLL path写入进程内存
写内存状态 = 写进程内存 (进程句柄, 内存地址, 到字节集 (“Z.dll”), 内存地址大小, 0)
输出调试文本 (到文本 (内存地址))
.如果真 (写内存状态 = 假)
调试输出 (“写入内存失败”)
释放申请内存 (进程句柄, 内存地址, 0, 32768)
关闭句柄 (进程句柄)
返回 ()
.如果真结束
' 获取Kernel32.dll基地址
kernel32地址 = 获取模块基地址 (“kernel32”)
.如果真 (kernel32地址 = 0)
调试输出 (“获取模块基地址失败!”)
释放申请内存 (进程句柄, 内存地址, 0, 32768)
关闭句柄 (进程句柄)
返回 ()
.如果真结束
' 获取LoadLibraryA在Kernel32.dll中的地址
LoadLibraryA = 获取函数地址 (kernel32地址, “LoadLibraryA”)
.如果真 (LoadLibraryA = 0)
调试输出 (“获取函数地址失败!”)
释放申请内存 (进程句柄, 内存地址, 0, 32768)
关闭句柄 (进程句柄)
返回 ()
.如果真结束
' 创建远程线程
线程句柄 = 创建远程线程 (进程句柄, 0, 0, LoadLibraryA, 内存地址, 0, 0)
.如果 (线程句柄 = 0)
调试输出 (“注入失败!”)
.否则
调试输出 (“注入成功!”)
.如果结束
关闭句柄 (进程句柄)
调试输出 (内存地址大小)
调试输出 (内存地址)
调试输出 (写内存状态)
调试输出 (kernel32地址)
调试输出 (LoadLibraryA)
调试输出 (进程ID)
.子程序 _按钮1_被单击
注入DLL ()
为什么显示注入成功 结果是没有注入
|
|