Simple EDR
Como vai funcionar?
Código que obtém o ID do processo com o nome fornecido:
DWORD GetProcessIdByName(const wstring& processName) {
DWORD processId = 0;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 processEntry = { sizeof(PROCESSENTRY32) };
if (Process32First(snapshot, &processEntry)) {
do {
if (processName == processEntry.szExeFile) {
processId = processEntry.th32ProcessID;
break;
}
} while (Process32Next(snapshot, &processEntry));
}
CloseHandle(snapshot);
return processId;
}Código para Injeção da DLL:
NamedPipeServer para Comunicação:
Inclusão da MinHook:
Funções:
Ponteiros para as funções originais:
Enviar Mensagem para o Named Pipe:
Código Responsavel por terminar o processo:
Função para o hook OpenProcess:
Função para o hook WriteProcessMemory:
Função para o hook VirtualAllocEx:
Função para o hook CreateRemoteThread:
Função para Implementar o hook:
Iniciar thread após a dll ser carregada:
Entendendo o que fizemos:
Prova de Conceito:
Last updated