RelocAlloc: Usando a seção .reloc para substituir as chamadas típicas de alocação
Explicando o código:
- Primeiro, localizamos os endereços de todas as dlls mapeadas no nosso processo.
- Em seguida, construímos um array de structs e o preenchemos com alguns dados, essa é a função Initialize().
- Agora, temos um array completo, o próximo passo é procurar o endereço certo.
- chamar GetSuitableAddress(SIZE_T ShellcodeSize) fará o trabalho; isso nos encontra o code cave certo (local vazio na memória, que caiba o tamanho do shellcode)
- caso seja encontrado, ele será retornado.
- para usá-lo, devemos ajustar a proteção de memória para gravável/executável ... (o poc é diretamente rwx)
Demonstração:
img1
img2
# FIQUE LIGADO PARA MAIS
120064592-a5c83480-c075-11eb-89c1-78732ecaf8d3