A injeção de processo em abreviação é injetar código no espaço de memória de processo em execução.
O Windows aloca espaço de memória 4G para cada processo, e o código neste espaço 4G pode ser acessado e executado por esse processo. "Patching", o software é realmente injeção de processo.
Também existem muitos hackers usando a injeção de processo para injetar código malicioso no processo de destino para ataques.
Os métodos de injeção de processo comumente usados no ambiente do Windows incluem: CreateremoteThread, Apcinject, SustendThread, setWindowhookex, etc.
Além disso, aprendi um método de injeção relativamente único: injeção de reflexão. A injeção de reflexão é usada principalmente para implementar a injeção por meio de operações nos arquivos de PE, com uma alta taxa de sucesso de injeção e o aprendizado mais valioso.
OpneProcess ).VirtualAllocEX ).WriteProcessMemory ).CreateRemoteThread ). Obtenha o endereço de função da biblioteca de carga ( GetProcAddress ) da Kenerl32 e passe o caminho da biblioteca dinâmica gravada para o processo de destino para a biblioteca de carga como um parâmetro.WaitForSingleObejct ), liberte a memória e feche a alça.CreateProcess Define o sexto parâmetro a suspender.QueueUserAPC para adicionar LoadLibrary como um objeto APC à fila APC do thread e passa o caminho da DLL como um parâmetro. Preste atenção às alças libertadoras e memória. A idéia geral é implementar a função de loadlibrary que carrega a biblioteca dinâmica na DLL e se carrega no processo de destino.
Loadibrary é implementada modificando o arquivo PE:
1. Escreva a DLL no espaço de aplicação do espaço de endereço do processo de destino.
2. Obtenha o endereço da função que carrega seu próprio no arquivo implementado na DLL, crie um encadeamento remoto e passe o endereço da função. A função que carrega a própria DLL também é implementada engenhosamente.
setWindowsHookEX . Sistema operacional do Windows, vs2015.
Os testes são passados no sistema Windows de 32 bits e no sistema Windows de 64 bits.
.
|-- APCInject(Ring0) // 驱动层的APC注入
|-- APCInject // Ring3层的APC注入
|-- CreateSuspend // 挂起线程注入
|-- InjectByRegister // 注册表注入(未测试)
|-- ReflectDll // 反射注入的Dll
|-- ReflectiveInject // 反射注入
|-- RemoteThread // 远程线程注入
|-- Src // 驱动层的APC注入源码
|-- Dll.dll // 32位测试Dll
|-- Dll64.dll // 64位测试Dll
|-- Process-Inject.sln // 项目启动文件
|-- README.md // 项目说明文件
.
Bem -vindo ao pedido e bem -vindo a pedir emissão.
Ao interpretar este trabalho, assine e compartilhe -o da mesma maneira.