R3注入的四种方式
来源:互联网 发布:字有几个字节知乎 编辑:程序博客网 时间:2024/06/07 01:15
DLL注入
1.首先要获取想要注入的进程句柄(OpenProcess)
2.从要注入的进程的地址空间中分配一段内存(VirtualAllocEx)
3.往分配的内存位置写入要注入的DLL名称(WriteProcessMemory)
4.从kernel32.dll中找到LoadLibrary(A或W)函数地址(GetModuleHandle+GetProcAddress)
5.创建远程线程执行加载DLL函数(CreateRemoteThread)
傀儡进程注入
1.首先读取恶意代码的可执行文件并将其解析(按PE结构镜像加载)
2.建立一个挂起的傀儡进程并获取其进程基本信息(CreateProcess函数传入的结构中可获取进程和主线程句柄)
3.获取进程主线程的基本信息(GetThreadContext获取的contex的Ebx为PEB,+8获取进程基址,ReadProcessMemory读取)
4.从ntdll获取NtUnmapViewOfSection远程卸载基址模块(GetModuleHandle+GetProcAddress)
5.从傀儡进程中的恶意镜像指向的基址分配恶意镜像大小的内存然后把恶意镜像写进去(如果选择其他地址则需要修改恶意镜像的基址重定位表_VirtualAllocEx+WriteProcessMemory)
6.修改进程主线程eip指向恶意镜像入口点以及PEB指向的基址(contex的Eax为eip,PEB用WriteProcessMemory修改)
7.将修改的contex设置回去并回复线程运行(SetThreadContext+ResumeThread)
x64下用ntdll中的NtQueryInformationProcess获取PEB,contex的Rcx为eip
HOOK注入
1.加载一个DLL,获取其某个函数地址(LoadLibrary+GetProcAddress)
2.获取一个进程句柄
3.通过系统钩子把指定函数挂上去即可(SetWindowsHookEx,目标进程会加载DLL)
APC注入
1.获取指定进程的ID以及所有线程的集合 (CreateToolhelp32Snapshot)
2.远程分配内存并将指定DLL名称写入(VirtualAllocEx+WriteProcessMemory)
3.迭代打开所有线程依次往APC队列添加加载DLL函数调用(OpenThread+QueueUserAPC+GetProcAddress)
- R3注入的四种方式
- spring的四种注入方式
- spring依赖注入的四种方式
- Spring的四种注入方式
- spring实现注入的四种方式
- Spring依赖注入的四种方式
- spring 依赖注入的四种方式
- spring的四种注入方式
- Spring的四种注入方式
- spring四种依赖注入的方式
- Spring Ioc注入的四种方式
- spring依赖注入的四种方式
- spring的四种依赖注入方式
- Spring 的四种方式依赖注入
- Spring的四种依赖注入方式
- spring依赖注入的四种方式
- R3注入
- Spring 四种注入方式
- mysql的锁
- 多线程 生产者与消费者
- 在anaconda(python)下安装opencv
- Python装饰器
- Error:Failed to resolve: com.android.support:support-annotations:26.0.2
- R3注入的四种方式
- cocos2dx入门编程HelloGame
- axios 全攻略之 API
- 第一次使用Android Studio时你应该知道的一切配置
- 在VS中OpenCV用imread读取不到图片
- AtCoder AGC 005D 容斥+二分图+DP
- 09_28
- nginx
- 大学真的是该放松的时候吗?