DLL注入,除了线程注入,消息钩子注入,输入法注入外,还有一种就是内存注入 那么什么是内存注入呢?
+ j7 |4 A8 q$ T( [, o内存注入就是指内存中加载并且执行DLL文件,这样的注入方式好处有以下几点:
8 o: h, K# h! g* a1 n! m' d* D1.不需要把DLL文件暴露在出来(防止别人拿着你的DLL文件改装成自己的程序或者破解)! J# p7 q' J. c! }
内存DLL不需要写出到硬盘上即可使用.只要用易语言编译出来DLL后,加入到图片资源中,即可直接在内存用运行使用. 2.安全性高,注入到对方进程后,对方进程如果有检测非法DLL文件加载,一般是检测不到的,
) G) k' h( d8 X& G4 A6 x( c因为枚举进程模块文件找不到DLL文件,因为DLL不再是模块文件,也没有DLL名称,而是一段内存机器码了.) B4 ~' y+ g9 a8 x5 c8 n7 t3 c
除非搜整个进程空间内存来查找DLL代码数据特征 来看下Game-EC 最新版本模块里的这个命令 内存安装DLL 的参数信息
$ y; j3 B3 K6 V1 n5 @子程序名:内存安装DLL
/ ~; {/ }: d) u$ y v7 t失败返回0,成功返回内存DLL在目标进程里的地址,可以用 内存释放DLL () 进行释放
* s( \! V% o' L9 M+ ?返回值类型:整数型
( E' l4 V, ]- x5 ?5 h" `4 p参数<1>的名称为“进程句柄”,类型为“整数型”。注明: 。# x0 Y1 K" Y# z3 |
参数<2>的名称为“DLL_数据”,类型为“字节集”。注明:把DLL文件放在易语言的资源在这里#DLL文件.
) }/ y0 V" C# U7 p6 M7 J" `6 y: p) l% I参数<3>的名称为“绑定线程”,类型为“整数型”,允许接收空参数数据。注明:尽量使用绑定线程的方式加载,
& M& e; k3 ]4 X( Y% V' H: D不然可能会产生窗口无法载入呼出等一些不确定的问题. 其实这个 内存安装DLL() 的用法很简单与 安装线程DLL() 基本差不多,
% d E8 i4 o4 h- p! q0 N. p0 r唯一不同的是 参数二是DLL文件字节集数据,提供图片资源名即可.不用把dll文件写出,内存加载即可
- x1 r: P- Z: x# y9 s/ j5 {下面代码是 EXE 的(注入器的代码)% D. E5 G+ k& N7 Q4 y8 ~
如图: 下面代码是内存注入DLL的DLL文件代码 win7 测试 需要注意的是 只有内存安装DLL()
/ B/ c* C6 W, Y& M是用来注Game-EC模块所编译的DLL,如果你拿其他语言写的DLL文件,使用内存安装DLL
" P0 v( H' \, H0 |: b7 Q来进行内存方式注入的话可能会失败的。 DLL 得使用 编译 来编译,并且提示是否写出所需支持库,选择否即可! 本功能目前只测试过:xp,2003,win7 32位 64位 ,win8 32位系统
3 n3 h% h0 f- R6 i0 F* I M+ \特别提醒:
# f3 [9 l# ?2 W; Y5 D! A如果注入个别游戏出现奔溃,) ~$ X9 R# P3 S) P6 S
可能是DLL 窗口里 使用了 “标签”、“透明标签”、“易语言自带时钟这几样组件” 。
: Z& A% k( X! t) S; O; u- k如果要使用标签请用编辑框代替,时钟请用模块自带的 时间_创建时钟() 再试。 2 x. t) M) u) h: a+ _9 Q
+ s, x% Q! |/ H, S) P7 g
|