EIP是寄存器的一种,它和EBP、ESP都是为“栈”而生,用来存储CPU要读取指令的地址,CPU通过EIP寄存器读取即将要执行的指令。每次CPU执行完相应的汇编指令之后,EIP寄存器的值就会增加。EIP存储着下一条指令的地址,每执行一条指令,该寄存器变化一次。 易语言实现EIP永久注入,步骤难道很大,需要先看看以下文章:易语言EIP注入

易语言EIP永久注入步骤

1、获取进程ID和注入DLL路径
2、打开进程,获取进程句柄
3、获取系统线程快照句柄,包涵进程中所有的块照
4、通过对比获取线程ID
5、打开线程,2032639给予线程所有可能的权限
6、挂起线程
7、保存线程寄存器相关信息,获取EIP值,65543线程环境信息的全部内容
8、申请内存 ,4096 #MEM_COMMIT为特定的页面区域分配内存中或磁盘的页面文件中的物理存储,#PAGE_EXECUTE_READWRITE 64应用程序可读写改区域
9、先将DLL路径写入内存中 0x100的位置
10、获取LoadLibraryA函数地址,还有就是要知道,Kernel32.LoadLibraryW的地址不同进程是一样的,这样就可以直接得到相关RVA
11、易语言完成主要汇编代码
12、将汇编代码写入内存
13、设置新的EIP寄存器值
14、恢复线程
15、关闭线程句柄,关闭进程句柄

EIP注入原理

挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器码和数据拷贝到里面去,然后修改目标进程EIP使其强行跳转到我们拷贝进去的相关机器码位置,执行相关,然后跳转回来。

易语言EIP永久注入源码:

.版本 2
.支持库 spec.子程序 EIP_永久注入, 逻辑型
.参数 进程ID, 整数型
.参数 DLL文件, 文本型, , DLL文件全路径
.局部变量 线程ID, 整数型
.局部变量 快照句柄, 整数型
.局部变量 线程信息, THREADENTRY32
.局部变量 bool, 逻辑型
.局部变量 申请内存地址, 整数型
.局部变量 LoadLibraryA地址, 整数型
.局部变量 线程环境, CONTEXT
.局部变量 EIP, 整数型
.局部变量 汇编代码, 字节集
.局部变量 VirtualFree地址, 整数型
.局部变量 DLL路径大小, 整数型
.局部变量 DLL路径地址, 整数型' 打开进程
进程句柄 = OpenProcess (#PROCESS_ALL_ACCESS, 假, 进程ID)
.如果 (进程句柄 = 0)信息框 (“打开进程失败!”, 0, , )返回 (假)
.否则.如果结束
' 获取系统线程快照句柄,4之包涵进程中所有的块照
快照句柄 = CreateToolhelp32Snapshot (#TH32CS_SNAPTHREAD, 0)
.如果 (快照句柄 = 0)信息框 (“获取系统进程快照句柄失败!”, 0, , )CloseHandle (快照句柄)返回 (假)
.否则.如果结束' 通过对比获取线程ID,初始化28
线程信息.dwSize = 28
bool = Thread32Next (快照句柄, 线程信息)
.判断循环首 (bool).如果真 (线程信息.th32OwnerProcessID = 进程ID)线程ID = 线程信息.th32ThreadID跳出循环 ().如果真结束bool = Thread32Next (快照句柄, 线程信息)
.判断循环尾 ()
.如果真 (线程ID = 0)信息框 (“获取线程ID失败”, 0, , )CloseHandle (进程句柄)返回 (假)
.如果真结束' 打开线程,2032639给予线程所有可能的权限
线程句柄 = OpenThread (#THREAD_ALL_ACCESS, 0, 线程ID)
.如果真 (线程句柄 = 0)信息框 (“打开线程失败”, 0, , )返回 (假)
.如果真结束' 挂起线程
SuspendThread (线程句柄)' 保存线程寄存器相关信息,获取EIP值,65543线程环境信息的全部内容
线程环境.ContextFlags = #CONTEXT_FULL
GetThreadContext (线程句柄, 线程环境)
EIP = 线程环境.EIP
调试输出 (EIP)' 申请内存 ,4096 #MEM_COMMIT为特定的页面区域分配内存中或磁盘的页面文件中的物理存储,#PAGE_EXECUTE_READWRITE 64应用程序可读写改区域
申请内存地址 = VirtualAllocEx (进程句柄, 0, 2048, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE)
.如果真 (申请内存地址 = 0)信息框 (“申请内存地址失败”, 0, , )ResumeThread (线程句柄)CloseHandle (线程句柄)CloseHandle (进程句柄)返回 (假)
.如果真结束' 先将DLL路径写入内存中 0x100的位置
DLL路径大小 = 取文本长度 (DLL文件) + 1
DLL路径地址 = 申请内存地址 + 256
WriteProcessMemory (进程句柄, DLL路径地址, 到字节集 (DLL文件), DLL路径大小, 0)' 获取LoadLibraryA函数地址,还有就是要知道,Kernel32.LoadLibraryW的地址不同进程是一样的,这样就可以直接得到相关RVALoadLibraryA地址 = GetProcAddress (GetModuleHandleA (“Kernel32.dll”), “LoadLibraryA”)
.如果真 (LoadLibraryA地址 = 0)信息框 (“LoadLibraryA地址失败”, 0, , )ResumeThread (线程句柄)CloseHandle (线程句柄)CloseHandle (进程句柄)返回 (假)
.如果真结束
' 主要汇编代码
汇编代码 = { 96, 156, 104 } + 到字节集 (到整数 (申请内存地址 + 256))
汇编代码 = 汇编代码 + { 232 } + 到字节集 (到整数 (LoadLibraryA地址 - (申请内存地址 + 取字节集长度 (汇编代码)) - 5)) + { 157, 97 }
汇编代码 = 汇编代码 + { 232 } + 到字节集 (到整数 (EIP - (申请内存地址 + 取字节集长度 (汇编代码)) - 5))
调试输出 (汇编代码)' 将汇编代码写入内存WriteProcessMemory (进程句柄, 申请内存地址, 汇编代码, 取字节集长度 (汇编代码), 0)
' 设置新的EIP寄存器值
线程环境.EIP = 申请内存地址
SetThreadContext (线程句柄, 线程环境)' 恢复线程
ResumeThread (线程句柄)' 关闭线程句柄,关闭进程句柄
CloseHandle (线程句柄)
CloseHandle (进程句柄)
返回 (真)

参考源码:http://www.511yj.com/eyuyan-hook-65.html

易语言EIP永久注入相关推荐

  1. 易语言c源码流程图怎么实现,易语言APC内存注入主要流程源码

    易语言APC内存注入主要流程 1.打开进程 进程句柄 = OpenProcess (2035711, 假, 进程ID) 2.读入DLL文件及获取主要汇编指令 DLL文件 = 读入文件 (DLL路径) ...

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

    DLL注入,除了线程注入,消息钩子注入,输入法注入外,还有一种就是内存注入 那么什么是内存注入呢? 内存注入就是指内存中加载并且执行DLL文件,这样的注入方式好处有以下几点: 1.不需要把DLL文件暴 ...

  3. 易语言远程线程注入DLL到游戏

    远程线程注入CreateRemoteThread通过获取注入目标进程的句柄,把我们的DLL注入到目标进程内存地址,远程线程的意思是另一个进程中的线程,并非远控的意思,也就是远程线程注入是指一个进程在另 ...

  4. 易语言游戏基址内存数据CEAA自动汇编脚本注入及CALL的调用

    对于汇编基础稍弱的同学来说,CEEAA自动汇编是一个部错的选择,以CE为工具,以脚本注入为主,采用CEAA自动汇编,利于易语言调用自动 汇编脚本注入游戏,实战了各种汇编技巧,易语言注入调用汇编的各种方 ...

  5. 易语言输入法注入dll到游戏进程

    易语言的输入法注入,需要一个易语言专门的输入法,我们在这里集成到程序里,通过判断先写到system32目录 输入法注入流程: 1.安装输入法 2.激活一下 3.将输入法文件复制到c:\WINDOWS\ ...

  6. 易语言64位端游内存封包逆向教程介绍---传奇4实战(易全网首套)

    易语言是否支持64位游戏内存或者注入呢?当然是支持的.下面内容教大家如何用易语言 写内存和封包辅助. 技术声明:本教程只能用于计算机技术研究,不做其他用途,如果有疑问,可以联系我. 复习位内存汇编基础 ...

  7. 易语言和java接口_易语言写接口让其他调用 易语言api使用教程

    易语言如何调用API函数? 你代码方法错了,如果传出参数为文本或字节集必须先"申请内存缓冲",如图1 源码中有两种方法,建议你采用"长整数"的那个,比较方便~! ...

  8. 易语言利用WMI获取磁盘信息源码

    WMI 是 Windows Management Instrumentation (Windows管理工具)的缩写,是内置在操作系统中核心的管理支持技术,通过它可以访问.配置.管理和监视几乎所有的 W ...

  9. 易语言注入 c dll,易语言DLL注入模块简单型

    易语言DLL注入模块简单型系统结构:注入DLL,卸载DLL,提取错误标题,提取错误信息,提取错误代码,UnHookDLL,OpenProcess,VirtualAllocEx,CloseHandle, ...

最新文章

  1. 利用增强限制条件来求解问题
  2. 未定义标识符 stringc/c++(20)_20款奔驰G63AMG霸气颜值 运动造型
  3. java的query_Java-Query
  4. centos找不到chattr命令_一个骚命令防止你的文件被误删除!
  5. 我的世界卸载java_我的世界:官方移除了Herobrine?一个骗了玩家十年的谎言!...
  6. 设计模式之模版方法模式demo
  7. 写作工具_4种加快数据科学写作速度的工具
  8. linux网络发包性能优化
  9. C#中通过Lambda表达式为委托传入更多的参数
  10. springmvc解决静态资源无法访问的两种方法
  11. somachine3.1安装包和注册文件
  12. java变量不声明可以直接使用吗_Java基础_变量的声明与使用
  13. 智安网络丨第一次听人把云计算讲这么明白!
  14. python控制示波器获取波形_三种方法教你用示波器快速捕获异常
  15. C 碎片八 结构体amp;枚举amp;联合
  16. golang fmt占位符
  17. Java浅拷贝和深拷贝(一文足矣),及String类型的坑。
  18. Kotlin 的?和!!
  19. 例举电脑一键重装系统win10简单的步骤操作
  20. 生活质量衡量系统_绿茶提取物可改善系统性红斑狼疮疾病活动以及生活质量

热门文章

  1. 校园建设的一个实例:校园网规划与设计
  2. arm-linux-gnueabihf 交叉编译ffmpeg
  3. 关系型数据库和非关系型数据库简单介绍:
  4. java后台发送post请求 MultipartFile、json
  5. java保姆级教程—— 1.什么是游戏
  6. 【Bison学习笔记】1:生成简易的语法分析程序,使Bsion和Flex协同工作
  7. APP——内存测试——参考01
  8. USB接口测试器--USB2.0/USB3.0信号检测器
  9. 短视频系统开发时如何实现在iOS系统相册中选取视频
  10. 2003服务器文件自动只读,windows 2003 文件夹只读,iis 无法写入的问题解决方法...