文章目录[隐藏]
线程调用DLL函数并带参数 可调用已注入其它程序的DLL函数
为下一步线程注入准备用到的API
CreateThread
WaitForInputIdle
GetProcAddress
LoadLibraryA
FreeLibrary
DLL函数源码:
.版本 2
.子程序 子程序1, , 公开
.参数 整数, 整数型
.局部变量 文本, 文本型
文本 = 指针到文本 (整数)
信息框 (“外部线程调用我” + 文本, 64, “DLL内部函数”, )
易语言调用DLL步骤及源码:
LoadLibraryA获取DLL句柄
.版本 2
dll句柄 = LoadLibraryA (取运行目录 () + “\321.dll”)
.如果真 (dll句柄 ≤ 0)
信息框 (“载人DLL 失败!”, 48, “警告”, )
返回 ()
.如果真结束
编辑框1.内容 = “Dll句柄:” + 到文本 (dll句柄)
GetProcAddress来获取函数地址,GetProcAddress调用
.版本 2
.支持库 spec
.支持库 EThread
.局部变量 函数地址, 整数型
.局部变量 内存地址, 整数型
.局部变量 线程句柄, 整数型
.局部变量 线程ID, 整数型
.如果真 (dll句柄 ≤ 0)
信息框 (“请先载人DLL”, 48, “警告”, )
返回 ()
.如果真结束
函数地址 = GetProcAddress (dll句柄, “子程序1”)
' 申请内存地址用了存放参数.调用完之后必须释放内存
内存地址 = 申请内存 (取文本长度 (编辑框1.内容), )
' 把DLL里的函数参数写入地址
写到内存 (编辑框1.内容, 内存地址, )
' 使用远程线程调用DLL里或者其他进程里的注入的DLL里的函数
线程句柄 = CreateThread (0, 0, 函数地址, 内存地址, 0, 线程ID)
.如果真 (等待线程 (线程句柄, ))
FreeLibrary (线程句柄)
释放内存 (内存地址)
FreeLibrary释放DLL
.版本 2
.如果真 (FreeLibrary (dll句柄) ≠ 0)
dll句柄 = 0
.如果真结束
教程下载:
百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947
511遇见QQ: 272586593