native-dll

Native DLL Injection Using LoadLibrary - Parte 04

Por Davi Chaves O processo de injeção nativa de uma dll em um processo é bastante semelhante ao método convencional utilizando as funções da kernel32.dll. A lógica é exatamente igual: NTSTATUS NtProcessStartup(PPEB peb) { // Abre o processo alvo NtOpenProcess(...); // Alocamos um pouco de memória no processo alvo NtAllocateVirtualMemory(...); // Escrevemos o nome da nossa dll na memória do processo alvo NtWriteVirtualMemory(...); // Pegamos o endereço da função LoadLibraryW LdrGetProcedureAddress("LoadLibraryW".

Escrevendo Aplicações Nativas para Windows - Parte 3

Por Davi Chaves O objetivo desse artigo vai ser enumerar todos os processos e, em seguida enumerar todos as threads e handles de um processo específico. NtQuerySystemInformation Essa função será usada para pegarmos quase todo tipo de informação do sistema. O primeiro parametro dela é um valor de um enum SYSTEM_INFORMATION_CLASS que vai definir que tipo de informação ela vai trazer. Abaixo a estrutura desse enum. Primeiramente, estaremos utilizando o valor SystemProcessInformation para obtermos uma lista de todos os processos.

Escrevendo Aplicações Nativas para Windows - Parte 2

Por Davi Chaves Até o momento, temos uma aplicação nativa, mas não conseguimos printar nada. Uma forma de construirmos essa funcionalidade seria fazer nosso processo native escrever no standard output do processo pai. Entretanto, eu acabei encontrando algumas dificuldades nessa solução. Dessa forma, vamos utilizar uma outra alternativa: criar um arquivo output.txt e escrever todos as saidas do nosso programa nele. Criando e Escrevendo em um Arquivo Para isso, vamos ter que utilizar duas APIs: NtCreateFile e NtWriteFile.

Escrevendo Aplicações Nativas para Windows - Parte 1

Por Davi Chaves O objetivo desse artigo é montarmos um binário que dependa exclusivamente da ntdll.dll. Abaixo estão algumas funções exportadas por essa biblioteca. Using Native Functions Antes de construirmos uma aplicação que dependa apenas da ntdll.dll, vamos primeiro aprender a como utilizar as funções dessa biblioteca. Primeiro Método: Dynamic Linking Como toda função exportada, podemos utilizar a função GetProcAddress para acharmos o endereço de uma certa função e chama-la quando quisermos.