文章目录[隐藏]
内存注入我们录制了两个课时,这是第一课时,完成内存注入的编写。
内存注入流程
1、获取注入进程ID
2、获取注入DLL的路径
3、打开进程,获取进程句柄
4、申请内存,读入DLL
5、将DLL路径写入内存地址
6、将DLL路径写入内存地址
7、为内存中的汇编指令申请内存地址
8、把汇编指令写入内存
9、把汇编指令写入内存
10、创建远程线程,执行装载DLL函数
11、线程等待
12、取终止线程退出的代码
13、 关闭线程和进程句柄
易语言内存注入源码:
.版本 2 .子程序 内存注入, 逻辑型 .参数 进程ID, 整数型 .参数 DLL文件, 文本型 .局部变量 DLL数据, 字节集 .局部变量 DLL数据大小, 整数型 .局部变量 主要汇编指令, 字节集 .局部变量 线程句柄, 整数型 ' 打开进程,获取进程句柄 进程句柄 = OpenProcess (#PROCESS_ALL_ACCESS, 假, 进程ID) .如果真 (进程句柄 = 0) 信息框 (“打开进程失败!!”, 16, , ) 返回 (假) .如果真结束 ' 申请内存,读入DLL DLL数据 = 读入文件 (DLL文件) DLL数据大小 = 取字节集长度 (DLL数据) + 1 申请DLL内存地址 = VirtualAllocEx (进程句柄, 0, DLL数据大小, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE) .如果真 (申请DLL内存地址 = 0) 信息框 (“申请DLL内存地址失败!!”, 16, , ) CloseHandle (进程句柄) 返回 (假) .如果真结束 ' 将DLL路径写入内存地址 WriteProcessMemory (进程句柄, 申请DLL内存地址, DLL数据, DLL数据大小, 0) ' 将一些汇编指令写入内存,进行加载 主要汇编指令 = #load_code + #getaddr_code + #free_code ' 为内存中的汇编指令申请内存地址 申请装载地址 = VirtualAllocEx (进程句柄, 0, 取字节集长度 (主要汇编指令), #MEM_COMMIT, #PAGE_EXECUTE_READWRITE) .如果真 (申请装载地址 = 0) 信息框 (“申请装载地址失败!!”, 16, , ) CloseHandle (进程句柄) 返回 (假) .如果真结束 ' 把汇编指令写入内存 WriteProcessMemory (进程句柄, 申请装载地址, 主要汇编指令, 取字节集长度 (主要汇编指令), 0) ' 保存获取的DLL函数地址功能和卸载DLL的地址 getaddr_code地址 = 申请装载地址 + 取字节集长度 (#load_code) free_code地址 = getaddr_code地址 + 取字节集长度 (#getaddr_code) ' 创建远程线程,执行装载DLL函数 线程句柄 = CreateRemoteThread (进程句柄, 0, 0, 申请装载地址, 申请DLL内存地址, 0, 0) ' 线程等待 WaitForSingleObject (线程句柄, #DMUS_SEG_REPEAT_INFINITE) ' 取终止线程退出的代码 GetExitCodeThread (线程句柄, DLL句柄) .如果真 (线程句柄 = 0) 信息框 (“内存注入失败!!”, 16, , ) CloseHandle (进程句柄) 返回 (假) .如果真结束 ' 关闭线程和进程句柄 CloseHandle (线程句柄) CloseHandle (进程句柄) 返回 (真)
教程获取下载:
百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947
511遇见QQ: 272586593