DLL注入,除了线程注入,消息钩子注入,输入法注入外,还有一种就是内存注入 那么什么是内存注入呢?
. l5 |1 A) U9 l" j' c9 K内存注入就是指内存中加载并且执行DLL文件,这样的注入方式好处有以下几点:/ t9 U5 C/ Z& H0 v( Z2 }6 S7 n( m
1.不需要把DLL文件暴露在出来(防止别人拿着你的DLL文件改装成自己的程序或者破解)+ U1 C2 g# y: u. w; R
内存DLL不需要写出到硬盘上即可使用.只要用易语言编译出来DLL后,加入到图片资源中,即可直接在内存用运行使用. 2.安全性高,注入到对方进程后,对方进程如果有检测非法DLL文件加载,一般是检测不到的,$ @) Y! H q( d0 W6 @- R3 g& A9 {) t
因为枚举进程模块文件找不到DLL文件,因为DLL不再是模块文件,也没有DLL名称,而是一段内存机器码了.7 \/ G0 z2 @) @( r5 a, C
除非搜整个进程空间内存来查找DLL代码数据特征 来看下Game-EC 最新版本模块里的这个命令 内存安装DLL 的参数信息
7 Z0 F; }: @% d1 I- t子程序名:内存安装DLL5 k' X+ p' j1 v- Y
失败返回0,成功返回内存DLL在目标进程里的地址,可以用 内存释放DLL () 进行释放
3 ^4 m+ J1 w* d6 E$ _- _* a返回值类型:整数型6 ^$ I& p' I* U" |7 d5 j$ o
参数<1>的名称为“进程句柄”,类型为“整数型”。注明: 。: F. |, k3 g% R+ ~' _. Z
参数<2>的名称为“DLL_数据”,类型为“字节集”。注明:把DLL文件放在易语言的资源在这里#DLL文件.
* ^' P4 F o6 [2 p4 ]参数<3>的名称为“绑定线程”,类型为“整数型”,允许接收空参数数据。注明:尽量使用绑定线程的方式加载,
q( V+ ^2 ^9 f6 _0 S+ C+ I+ w4 r5 i不然可能会产生窗口无法载入呼出等一些不确定的问题. 其实这个 内存安装DLL() 的用法很简单与 安装线程DLL() 基本差不多,
' }7 R- h, C& L7 f" Y7 h; Z唯一不同的是 参数二是DLL文件字节集数据,提供图片资源名即可.不用把dll文件写出,内存加载即可5 b4 _( j8 X M( B* ?, }
下面代码是 EXE 的(注入器的代码)0 j8 b- Z1 P! V5 Y2 l. l7 R; p
如图: 下面代码是内存注入DLL的DLL文件代码 win7 测试 需要注意的是 只有内存安装DLL()+ g: ~, \6 g) Z
是用来注Game-EC模块所编译的DLL,如果你拿其他语言写的DLL文件,使用内存安装DLL
5 ^. d+ c$ m1 `& w# a来进行内存方式注入的话可能会失败的。 DLL 得使用 编译 来编译,并且提示是否写出所需支持库,选择否即可! 本功能目前只测试过:xp,2003,win7 32位 64位 ,win8 32位系统
8 n! @* l' a9 i* B特别提醒:
_+ o4 O7 h& q如果注入个别游戏出现奔溃,' N6 C) y9 r: p, i+ R0 m
可能是DLL 窗口里 使用了 “标签”、“透明标签”、“易语言自带时钟这几样组件” 。6 M1 f+ [8 m* e$ E/ c2 V
如果要使用标签请用编辑框代替,时钟请用模块自带的 时间_创建时钟() 再试。 ! w( S0 V. w" Y2 J5 p {' A
4 a9 V0 Z# I; U* ~9 }% @; Y0 P w
|