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
Herramientas/GitHubGitHub/gaasedelen/patching
Análisis EstáticoAnálisis Dinámico de Código (DAST)ExplotaciónIngeniería InversaShellcodeDepuradoresAnálisis de MalwareAnálisis de BinariosAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
1.3k1499hace 1 añoRevisado por Kitploit
GitHub
gaasedelen/patching

patching

Un plugin interactivo de parcheo binario para IDA Pro

Ver Repositorio

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

Patching - Parcheo Binario Interactivo para IDA Pro

Plugin Patching

Resumen

No es poco común en el análisis de malware, la ingeniería inversa de software y campos más amplios de investigación en seguridad, parchear código ensamblador para cambiar el comportamiento de un programa existente. Este proyecto extiende el popular desensamblador IDA Pro para crear un flujo de trabajo de parcheo binario interactivo más robusto, diseñado para iteración rápida.

Este proyecto actualmente está impulsado por un fork menor del omnipresente Keystone Engine, compatible con parcheo x86/x64 y Arm/Arm64, con planes de habilitar las arquitecturas restantes de Keystone en una versión futura.

Agradecimientos especiales a Hex-Rays por apoyar el desarrollo de este plugin.

Lanzamientos

  • v0.2 -- Correcciones importantes de errores, compatibilidad con IDA 9
  • v0.1 -- Versión inicial

Instalación

Este plugin requiere IDA 7.6 y Python 3. Es compatible con Windows, Linux y macOS.

Tenga en cuenta que las versiones antiguas de IDA (8.2 y anteriores) no son compatibles con Python 3.11 y superiores.

Instalación Fácil

Descargar herramienta

Ejecute la siguiente línea en la consola de IDA para instalar automáticamente el plugin:

Windows / Linux

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py').read())

macOS

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py', cafile='/etc/ssl/cert.pem').read())

Instalación Manual

Alternativamente, el plugin se puede instalar manualmente descargando el paquete de plugin distribuible para su plataforma respectiva desde la página de lanzamientos y descomprimiéndolo en su carpeta de plugins.

Se recomienda encarecidamente instalar este plugin en el directorio de plugins de usuario de IDA:

root@kitploit:~
import ida_diskio, os; print(os.path.join(ida_diskio.get_user_idadir(), "plugins"))

Uso

El plugin de parcheo se cargará automáticamente para arquitecturas compatibles (x86/x64/Arm/Arm64) e inyectará acciones de parcheo relevantes en el menú contextual de clic derecho de las vistas de desensamblado de IDA:

Menú contextual de clic derecho del plugin de parcheo

Una lista completa de las acciones de parcheo contextual se describen en las siguientes secciones.

Assemble

El diálogo principal de parcheo se puede lanzar mediante la acción Assemble en el menú contextual de clic derecho. Simula una vista básica de desensamblado de IDA que se puede usar para editar una o varias instrucciones en rápida sucesión.

El diálogo interactivo de parcheo

La línea de ensamblaje es un campo editable que se puede usar para modificar instrucciones en tiempo real. Presionar Enter confirmará (parcheará) la instrucción ingresada en la base de datos.

Su ubicación actual (también conocido como su cursor) siempre se resaltará en verde. Las instrucciones que serán sobrescritas como resultado de su parche/edición se resaltarán en rojo antes de confirmar el parche.

Las instrucciones adicionales que serán sobrescritas por un parche se muestran en rojo

Finalmente, las teclas de flecha UP y DOWN se pueden usar mientras aún se está enfocado en el campo de texto de ensamblaje editable para mover rápidamente el cursor hacia arriba y hacia abajo en la vista de desensamblado sin usar el mouse.

NOP

La acción de parcheo más común es poner NOP a una o más instrucciones. Por esta razón, la acción NOP siempre será visible en el menú de clic derecho para acceso rápido.

Instrucción NOP de clic derecho

Se pueden poner NOP a instrucciones individuales, así como a un rango seleccionado de instrucciones.

Force Conditional Jump

Forzar un salto condicional para que siempre ejecute una ruta 'buena' es otra acción de parcheo común. El plugin solo mostrará esta acción al hacer clic derecho en una instrucción de salto condicional.

Forzando un salto condicional

Si nunca desea que se tome un salto condicional, ¡puede simplemente ponerle NOP!

Save & Quick Apply

Los parches se pueden guardar (aplicar) a un ejecutable seleccionado a través del submenú de parcheo en cualquier momento. La acción de aplicación rápida hace que sea aún más rápido guardar parches posteriores usando la misma configuración.

Aplicando parches al ejecutable original

El plugin también hará un esfuerzo activo para retener una copia de seguridad (.bak) del ejecutable original que utiliza para aplicar 'limpiamente' el conjunto actual de parches de la base de datos durante cada guardado.

Revert Patch

Finalmente, si alguna vez no está satisfecho con un parche, simplemente puede hacer clic derecho en bloques de instrucciones parcheados (amarillos) para revertirlos a su valor original.

Revirtiendo parches

Si bien es 'fácil' revertir los bytes a su valor original, puede ser 'difícil' restaurar el análisis a su estado anterior. Revertir un parche puede ocasionalmente requerir ajustes humanos adicionales.

Errores Conocidos

  • Mejorar aún más la corrección de ARM / ARM64 / THUMB
  • Definir un comportamiento 'mejor' para cpp::like::symbols(...) / IDBs (muy inestable ahora mismo)
  • ¿Agregar / Actualizar / Modificar / Mostrar / Advertir sobre Entradas de Reubicación??
  • ¿Manejar registros renombrados (como contra idb anotado con dwarf)?
  • Varias instrucciones nuevas (circa 2017 y posteriores) no son compatibles con Keystone
  • Algunas codificaciones de instrucciones problemáticas por Keystone

Trabajo Futuro

Si el tiempo y la motivación lo permiten, el trabajo futuro puede incluir:

  • Habilitar las principales arquitecturas restantes compatibles con Keystone:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Ensamblaje de múltiples instrucciones (ej. xor eax, eax; ret;)
  • Ensamblaje de múltiples líneas (ej. shellcode / etiquetas asm)
  • Edición interactiva de bytes / datos / cadenas
  • Sugerencias de símbolos / autocompletado / coincidencia difusa
  • Resaltado de sintaxis en la línea de ensamblaje editable
  • Mejores sugerencias de errores, problemas de sintaxis, etc.
  • NOP / Force Jump desde la vista Hex-Rays (suena fácil, ¡pero probablemente sea bastante difícil!)
  • ¿alternar botón de radio entre modo 'pretty print' vs modo 'raw'? ¿o mostrar ambos?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

Doy la bienvenida a contribuciones externas, problemas y solicitudes de funciones. Por favor, haga cualquier pull request a la rama develop de este repositorio si desea que sean considerados para una versión futura.

Autores

  • Markus Gaasedelen (@gaasedelen)