防游戏检测之易语言DLL内存注入技术

DLL注入,除了线程注入,消息钩子注入,输入法注入外,还有一种就是内存注入

那么什么是内存注入呢?
内存注入就是指内存中加载并且执行DLL文件,这样的注入方式好处有以下几点:
1.不需要把DLL文件暴露在出来(防止别人拿着你的DLL文件改装成自己的程序或者破解)
内存DLL不需要写出到硬盘上即可使用.只要用易语言编译出来DLL后,加入到图片资源中,即可直接在内存用运行使用.

2.安全性高,注入到对方进程后,对方进程如果有检测非法DLL文件加载,一般是检测不到的,
因为枚举进程模块文件找不到DLL文件,因为DLL不再是模块文件,也没有DLL名称,而是一段内存机器码了.
除非搜整个进程空间内存来查找DLL代码数据特征

来看下Game-EC 最新版本模块里的这个命令 内存安装DLL 的参数信息
子程序名:内存安装DLL
失败返回0,成功返回内存DLL在目标进程里的地址,可以用 内存释放DLL () 进行释放
返回值类型:整数型
参数<1>的名称为“进程句柄”,类型为“整数型”。注明: 。
参数<2>的名称为“DLL_数据”,类型为“字节集”。注明:把DLL文件放在易语言的资源在这里#DLL文件.
参数<3>的名称为“绑定线程”,类型为“整数型”,允许接收空参数数据。注明:尽量使用绑定线程的方式加载,
不然可能会产生窗口无法载入呼出等一些不确定的问题.

其实这个 内存安装DLL() 的用法很简单与 安装线程DLL() 基本差不多,
唯一不同的是 参数二是DLL文件字节集数据,提供图片资源名即可.不用把dll文件写出,内存加载即可
下面代码是 EXE 的(注入器的代码)
如图:
在这里插入图片描述下面代码是内存注入DLL的DLL文件代码
在这里插入图片描述
win7 测试
在这里插入图片描述在这里插入图片描述
需要注意的是 只有内存安装DLL()
是用来注Game-EC模块所编译的DLL,如果你拿其他语言写的DLL文件,使用内存安装DLL
来进行内存方式注入的话可能会失败的。

DLL 得使用 编译 来编译,并且提示是否写出所需支持库,选择否即可!

本功能目前只测试过:xp,2003,win7 32位 64位 ,win8 32位系统
特别提醒:
如果注入个别游戏出现奔溃,
可能是DLL 窗口里 使用了 “标签”、“透明标签”、“易语言自带时钟这几样组件” 。
如果要使用标签请用编辑框代替,时钟请用模块自带的 时间_创建时钟() 再试。
本文章转载来自:http://bbs.dult.cn/thread-10510-1-1.html 源码下载进入此原创地址

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
易语言是一种基于Visual Basic语法的编程语言,通过易语言可以方便地实现Windows下的各种功能。DLL注入是一种实现程序代码注入进程的技术,通过DLL注入可以在目标进程中运行自己编写的代码,以达到扩展或修改目标进程功能的目的。 下面是一个简单的易语言DLL注入源码示例: 函数 Declare函数名 CDECL别名 函数类型 字符串 文件名 参数列表 函数库文件名 参数类型 结果; // 声明LoadLibrary函数 Declare Function LoadLibraryA cdecl alias "LoadLibraryA" (sLibName As String) As Long // 声明GetProcAddress函数 Declare Function GetProcAddress cdecl alias "GetProcAddress" (hModule As Long, sProcName As String) As Long // 声明CreateRemoteThread函数 Declare Function CreateRemoteThread cdecl alias "CreateRemoteThread" (hProcess As Long, lpThreadAttributes As Long, dwStackSize As Long, lpStartAddress As Long, lpParameter As Long, dwCreationFlags As Long, lpThreadId As Long) As Long Sub 注入DLL() Dim lProcessHandle As Long Dim lRemoteThread As Long Dim lModuleName As Long Dim lProcAddress As Long ' 打开目标进程,获取进程句柄 lProcessHandle = OpenProcess(&H1F0FFF, False, 目标进程ID) ' 在目标进程中申请一块内存,用于存放DLL路径 lModuleName = VirtualAllocEx(lProcessHandle, 0, Len(DLL路径), 4096, 4) ' 将DLL路径写入到目标进程的内存中 WriteProcessMemory lProcessHandle, lModuleName, DLL路径, Len(DLL路径), NumBytesWritten ' 获取LoadLibrary函数的地址 lProcAddress = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") ' 在目标进程中创建远程线程,回调到LoadLibrary函数 lRemoteThread = CreateRemoteThread(lProcessHandle, 0, 0, lProcAddress, lModuleName, 0, 0) ' 关闭进程句柄 CloseHandle lProcessHandle End Sub 以上是一个基本的易语言DLL注入源码示例。通过调用相关的Windows API函数,实现了在目标进程中注入DLL的流程。需要替换相应的目标进程ID和DLL路径,即可实现DLL注入的功能。这段源码具有一定的通用性,但是需要根据实际情况进行修改和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值