Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CallObfuscator — Ofuscar APIs específicas de Windows con diferentes APIs | Kitploit
Herramientas/GitHubGitHub/d35ha/callobfuscator
Herramientas DefensivasAnálisis EstáticoAnálisis Dinámico (Sandboxing)Evasión de IDS/IPSIngeniería InversaAnálisis de MalwareAnálisis de Binarios
GitHubd35ha/callobfuscator

CallObfuscator

Ofuscar APIs específicas de Windows con diferentes APIs

Ver Repositorio
1.0k174hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CallObfuscator

Ofuscar (ocultar) las importaciones PE de las herramientas de análisis estático/dinámico.

Teoría

Esto es bastante directo, digamos que he usado VirtualProtect y quiero ofuscarlo con Sleep, la herramienta manipulará la IAT para que el thunk que apunta a VirtualProtect apunte en su lugar a Sleep, ahora al ejecutar el archivo, el cargador de Windows cargará Sleep en lugar de VirtualProtect, y mueve la ejecución al punto de entrada, desde allí la ejecución será redirigida al shellcode, que la herramienta colocó antes, para encontrar la dirección de VirtualProtect y usarla para reemplazar la dirección de Sleep que fue asignada antes por el cargador.

Cómo usar

  • Se puede incluir directamente como biblioteca, vea el siguiente fragmento (basado en el ejemplo), también puede echar un vistazo a 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;
};
  • También se puede usar como herramienta de línea de comandos proporcionando la ruta del PE de entrada, la ruta del PE de salida y opcionalmente la ruta al archivo de configuración (por defecto es config.ini).
    cobf.exe <input file> <out file> [config file]
    El archivo de configuración contiene las ofuscaciones necesarias (dlls, símbolos, ...).
    Aquí hay una plantilla para el contenido del archivo de configuración
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

Ejemplo

Compilar este ejemplo de código

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

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

Después de compilarlo, así es como se ven las importaciones de kernel32

pic1

Ahora ofusquemos tanto SetLastError como GetLastError con Beep y GetACP (en realidad cualquier api de kernel32 estará bien incluso si no está importada en absoluto).
Las configuraciones utilizadas son

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

Aquí está la salida (también puede usar la biblioteca directamente como se muestra arriba).

pic2

Nuevamente echemos un vistazo a las importaciones de kernel32

pic3

No hay existencia de SetLastError o GetLastError
Una confirmación de que los dos archivos funcionarán correctamente

pic4

Impacto

Descompilador IDA HexRays

pic5

Depurador IDA

pic6

Ghidra

pic7

ApiMonitor

pic8

Eso se debe a que todas las herramientas de análisis estático dependen de cuál es el nombre de la API escrito en la IAT, el cual puede ser manipulado como se muestra.
Para ApiMonitor, debido al uso de IAT hooking, existe el mismo problema.

Por otro lado, para herramientas como x64dbg, los nombres de API mostrados dependerán solo de lo que realmente se llama (no de lo que está escrito en la IAT).

pic9

Adicional

  • Volcar el PE ofuscado desde la memoria no lo desofuscará, porque la IAT manipulada será la misma.
  • El propósito principal de esta herramienta es desordenar el proceso de análisis (hacerlo más lento).
  • Se puede ofuscar cualquier símbolo importado (por nombre o por ordinal) con otro símbolo (nombre u ordinal).
  • El shellcode se ejecuta como el primer callback tls para procesar los símbolos ofuscados necesarios por los otros callbacks tls antes de que se ejecute el punto de entrada.
  • El shellcode se distribuye como código c, generado cuando la herramienta se compila para facilitar su edición.
  • Los nombres de los símbolos ofuscados se resuelven mediante hash, no por nombre directamente.
  • La herramienta desactiva las reubicaciones y elimina cualquier símbolo de depuración.
  • La herramienta crea una nueva sección rwx llamada .cobf para contener el shellcode y los otros datos necesarios.
  • Se puede usar varias veces en el mismo PE ofuscado.
  • Probado solo en Windows 10 x64.
  • Obtenga el código fuente con git clone https://github.com/d35ha/CallObfuscator.
  • Descargue los binarios desde la Sección de Lanzamientos.

TODO

  • Ofuscación del shellcode (probablemente con obfusion).
  • Soporte para símbolos cargados con retraso.
  • Minimizar el tamaño de la sección creada.
  • Hashing en tiempo de compilación.
  • Mejores pruebas.
Descargar herramienta