易语言PE永久注入是指把我们的DLL注入进程后生成一个新的EXE.当我们每次创建这个进程时,都会加载我们注入的DLL,所以称之为永久注入,还有在易语言里实现PE永久注入,需要PEload,我们以资源的形式加载到易语言。
易语言PE永久注入源码:
.版本 2
.局部变量 字节集, 字节集
.局部变量 DLL, 字节集
.局部变量 映像基址, 整数型
.局部变量 映像大小, 整数型
.局部变量 区段, 区段信息
.如果 (编辑框1.内容 ≠ “” 且 编辑框2.内容 ≠ “”)
字节集 = 读入文件 (编辑框1.内容)
DLL = 读入文件 (编辑框2.内容)
映像基址 = 取映像基址 (字节集)
映像大小 = 取映像大小 (字节集)
加区段 (字节集, “.test”, 取空白字节集 (取字节集长度 (#PELoad) + 取字节集长度 (DLL)), #IMAGE_SCN_MEM_EXECUTE, 区段)
' push dll
写PE数据 (字节集, 区段.实际地址, { 104 } + 到字节集 (到整数 (映像基址 + 区段.内存地址 + 15 + 取字节集长度 (#PELoad))))
' call load
写PE数据 (字节集, 区段.实际地址 + 5, { 232 } + 到字节集 (到整数 (-(映像基址 + 映像大小 + 15) + 映像基址 + 区段.内存地址 + 20)))
' jmp 入口
写PE数据 (字节集, 区段.实际地址 + 10, { 232 } + 到字节集 (到整数 (-(映像基址 + 映像大小 + 15) + 映像基址 + 取入口地址 (字节集))))
写PE数据 (字节集, 区段.实际地址 + 15, #PELoad)
写PE数据 (字节集, 区段.实际地址 + 15 + 取字节集长度 (#PELoad), DLL)
置入口地址 (字节集, 区段.实际地址)
' 写出新的注入后的EXE文件
.如果 (写到文件 (“注入后.exe”, 字节集))
信息框 (“注入成功”, 0, , )
.否则
信息框 (“注入失败”, 0, , )
.如果结束
.否则
信息框 (“请填写相关资料”, #信息图标, “注入提示”, )
完成注入DLL的编写和注入实现。
PE永久注入DLL
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
pe_hook ()
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 返回值被忽略。
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 pe_hook, , 公开
载入 (窗口1, , 真)
注入前后PE相关变换
源码及PEload:http://www.511yj.com/eyuyan-hook-69.html