Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CallObfuscator — Ofuscar APIs específicas do Windows com APIs diferentes | Kitploit
Ferramentas/GitHubGitHub/d35ha/callobfuscator
Ferramentas DefensivasAnálise EstáticaAnálise Dinâmica (Sandboxing)Evasão de IDS/IPSEngenharia ReversaAnálise de MalwareAnálise de Binários
GitHubd35ha/callobfuscator

CallObfuscator

Ofuscar APIs específicas do Windows com APIs diferentes

Ver Repositório
1.0k174há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CallObfuscator

Ofusca (oculta) as importações de PE de ferramentas de análise estática/dinâmica.

Teoria

É bem direto: digamos que eu usei VirtualProtect e quero ofuscá-lo com Sleep. A ferramenta manipulará a IAT para que o thunk que aponta para VirtualProtect aponte em vez disso para Sleep. Ao executar o arquivo, o carregador do Windows carregará Sleep em vez de VirtualProtect e moverá a execução para o ponto de entrada. A partir daí, a execução será redirecionada para o shellcode colocado anteriormente pela ferramenta, para encontrar o endereço de VirtualProtect e usá-lo para substituir o endereço de Sleep que foi atribuído anteriormente pelo carregador.

Como usar

  • Pode ser incluído diretamente como uma biblioteca, veja o trecho abaixo (baseado no exemplo); você também pode dar uma olhada em cli.cpp.
root@kitploit:~
#include <cobf.hpp>

int main() {
	cobf obf_file = cobf("sample.exe");
	obf_file.load_pe();
	obf_file.obf_sym("kernel32.dll", "SetLastError", "Beep");
	obf_file.obf_sym("kernel32.dll", "GetLastError", "GetACP");
	obf_file.generate("sample_obfuscated.exe");
	obf_file.unload_pe();
	return 0;
};
  • Também pode ser usado como ferramenta de linha de comando, fornecendo o caminho do PE de entrada, o caminho do PE de saída e, opcionalmente, o caminho para o arquivo de configuração (padrão é config.ini).
    cobf.exe <input file> <out file> [config file]
    O arquivo de configuração contém as ofuscações necessárias (dlls, símbolos, ...).
    Aqui está um modelo para o conteúdo do arquivo de configuração
root@kitploit:~
; Template for the config file:
; 	* Sections can be written as:
; 		[dll_name]
; 		old_sym=new_sym
;	* The dll name is case insensitive, but 
;	the old and the new symbols are not.
; 	* You can use the wildcard on both the
; 	dll name and the old symbol.
; 	* You can use '#' at the start of
; 	the old or the new symbol to flag 
; 	an ordinal.
;	* The new symbol should be exported
;	by the dll so the windows loader can resolve it.
; For example:
; 	* Obfuscating all of the symbols
;	imported from user32.dll with ordinal 1600.
[user32.dll]
*=#1600
;	* Obfuscating symbols imported from both
;	kernel32.dll and kernelbase.dll with Sleep.
[kernel*.dll]
*=Sleep
;	* Obfuscating fprintf with exit.
[*]
fprintf=exit

Exemplo

Compile este exemplo de código

root@kitploit:~
#include <windows.h>
#include <stdio.h>

int main() {
	SetLastError(5);
	printf("Last error is %d\n", GetLastError());
	return 0;
};

Após compilá-lo, é assim que as importações do kernel32 se parecem

pic1

Agora vamos ofuscar tanto SetLastError quanto GetLastError com Beep e GetACP (na verdade, qualquer api do kernel32 funcionará, mesmo que não esteja importada).
As configurações usadas são

root@kitploit:~
[kernel32.dll]
SetLastError=Beep
GetLastError=GetACP

Aqui está a saída (você também pode usar a biblioteca diretamente como mostrado acima).

pic2

Novamente, vamos dar uma olhada nas importações do kernel32

pic3

Não há existência de SetLastError ou GetLastError
Uma confirmação de que os dois arquivos funcionarão corretamente

pic4

Impacto

Decompilador IDA HexRays

pic5

Depurador IDA

pic6

Ghidra

pic7

ApiMonitor

pic8

Isso porque todas as ferramentas de análise estática dependem do nome da api escrito na IAT, que pode ser manipulado como mostrado.
Para o ApiMonitor, por usar hooking na IAT, o mesmo problema existe.

Por outro lado, para ferramentas como x64dbg, os nomes de api exibidos dependerão apenas do que é realmente chamado (não do que está escrito na IAT).

pic9

Adicional

  • Extrair o PE ofuscado da memória não o desofuscará, pois a IAT manipulada permanecerá a mesma.
  • O propósito principal desta ferramenta é atrapalhar o processo de análise (torná-lo mais lento).
  • É possível ofuscar qualquer símbolo importado (por nome ou por ordinal) com outro símbolo (nome ou ordinal).
  • O shellcode é executado como o primeiro callback TLS para processar os símbolos ofuscados necessários para os outros callbacks TLS antes que o ponto de entrada seja executado.
  • O shellcode é fornecido como código C, gerado quando a ferramenta é compilada para facilitar sua edição.
  • Os nomes dos símbolos ofuscados são resolvidos por hash, não diretamente pelo nome.
  • A ferramenta desabilita as realocações e remove quaisquer símbolos de depuração.
  • A ferramenta cria uma nova seção rwx chamada .cobf para armazenar o shellcode e outros dados necessários.
  • Pode ser usado várias vezes no mesmo PE ofuscado.
  • Testado apenas no Windows 10 x64.
  • Obtenha o código com git clone https://github.com/d35ha/CallObfuscator.
  • Baixe os binários na Seção de Lançamentos.

TODO

  • Ofuscação do shellcode (provavelmente com obfusion).
  • Suporte para símbolos de carregamento atrasado.
  • Minimizar o tamanho da seção criada.
  • Hashing em tempo de compilação.
  • Melhores testes.
Baixar ferramenta