易语言DLL制作调用线程调用DLL函数并传参数

线程调用DLL函数并带参数 可调用已注入其它程序的DLL函数
为下一步线程注入准备用到的API
CreateThread
WaitForInputIdle
GetProcAddress
LoadLibraryA
FreeLibrary

DLL函数源码:

  1. .版本 2
  2.  
  3. .子程序 子程序1, , 公开
  4. .参数 整数, 整数型
  5. .局部变量 文本, 文本型
  6.  
  7. 文本 = 指针到文本 (整数)
  8. 信息框 (“外部线程调用我” + 文本, 64, “DLL内部函数”, )

易语言调用DLL步骤及源码:

LoadLibraryA获取DLL句柄

  1. .版本 2
  2.  
  3. dll句柄 = LoadLibraryA (取运行目录 () + “\321.dll”)
  4. .如果真 (dll句柄 ≤ 0)
  5.     信息框 (“载人DLL 失败!”, 48, “警告”, )
  6.     返回 ()
  7. .如果真结束
  8.  
  9. 编辑框1.内容 = “Dll句柄:” + 到文本 (dll句柄)

GetProcAddress来获取函数地址,GetProcAddress调用

  1. .版本 2
  2. .支持库 spec
  3. .支持库 EThread
  4.  
  5. .局部变量 函数地址, 整数型
  6. .局部变量 内存地址, 整数型
  7. .局部变量 线程句柄, 整数型
  8. .局部变量 线程ID, 整数型
  9.  
  10. .如果真 (dll句柄 ≤ 0)
  11.     信息框 (“请先载人DLL”, 48, “警告”, )
  12.     返回 ()
  13. .如果真结束
  14.  
  15. 函数地址 = GetProcAddress (dll句柄, “子程序1”)
  16. ' 申请内存地址用了存放参数.调用完之后必须释放内存
  17. 内存地址 = 申请内存 (取文本长度 (编辑框1.内容), )
  18. ' 把DLL里的函数参数写入地址
  19. 写到内存 (编辑框1.内容, 内存地址, )
  20. ' 使用远程线程调用DLL里或者其他进程里的注入的DLL里的函数
  21. 线程句柄 = CreateThread (0, 0, 函数地址, 内存地址, 0, 线程ID)
  22. .如果真 (等待线程 (线程句柄, ))
  23.     FreeLibrary (线程句柄)
  24.     释放内存 (内存地址)

FreeLibrary释放DLL

  1. .版本 2
  2.  
  3. .如果真 (FreeLibrary (dll句柄) ≠ 0)
  4.     dll句柄 = 0
  5. .如果真结束

教程下载:

百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA

提取码:加QQ群:521068947 群文件下载

511遇见全部视频教程百度网盘下载

资源教程交流①群:521068947

511遇见QQ: 272586593

分享到:

用微信扫一扫,分享给朋友


发布日期:

所属分类: 编程 标签: