免杀之进程注入
分配虚拟内存
每个进程都有自己的虚拟进程。进程之间存在共享内存,但在一般情况下,如果没有Kernel的协助,进程A应该无法查看进程B的虚拟内存。内核当然可以看到所有进程的虚拟内存,因为它必须执行虚拟内存到物理内存的转换。进程A可以使用虚拟内存API在进程B的地址空间中分配新的虚拟内存,这个功能的具体操作由内核在内部实施
- 使用OpenProcess或NtOpenProcess打开一个目标进程
- 使用VirtualAllocEx或NtAlliocateVirualMemory在目标进程中分配eXecute-Read-Write(XRW)内存
- 使用WriteProcessMemory或NtWriteVirtualMemory 将payload复制到新内存中
- 执行payload
- 使用VirtualFreeEx或NtWriteMemory在目标进程中取消释放的XRW内存
- 使用CloseHandle或Ntclose关闭目标进程句柄
创建section(节)对象
节对象代表一段可以分享的内存,进程可以使用section对象与其他共享部分内存地址空间。Section对象还提供一种机制,可以通过该机制将文件映射到内存地址空间
- NtCreateSection 创建一个新的内存区段,并返回一个句柄
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小chen妙妙屋!
评论
