
Una integración para IDA y VS Code que conecta ambos para ejecutar y depurar fácilmente scripts de IDAPython.
IDACode facilita la ejecución y depuración de scripts de Python en su entorno IDA sin salir de Visual Studio Code. La extensión de VS Code se puede encontrar en el marketplace.
IDACode aún se encuentra en una etapa muy temprana y se espera que haya errores. Por favor, abra un nuevo issue si encuentra algún problema.
debugpy para la comunicación, sincroniza la ventana de salida de forma natural con el panel de salida de VS Code.IDACode ha sido probado en Windows y macOS con IDA 8.4/9.0 y Python 3.12 (las versiones anteriores de Python tienen problemas con la depuración).
Para configurar las dependencias del plugin de IDA, ejecute:
# make sure to use the correct Python version
# IDACode supports the latest debugpy as of version 3.0.0, make sure to upgrade!
python -m pip install --user debugpy tornado
Clone este repositorio o descargue un paquete de lanzamiento desde aquí. ida.zip refleja el contenido de la carpeta ida en este repositorio. Copie todos los archivos en el directorio de plugins de IDA.
El siguiente paso es configurar sus ajustes para que coincidan con su entorno (opcional). Edite idacode_utils/settings.py según corresponda:
HOST: Esta es la dirección del host. Siempre es 127.0.0.1 a menos que desee que sea accesible desde una ubicación remota. Tenga en cuenta que este plugin no utiliza autenticación.PORT: Este es el puerto en el que desea que IDA escuche. Se utiliza para la comunicación websocket entre IDA y VS Code.DEBUG_PORT: Este es el puerto en el que desea escuchar las sesiones de depuración entrantes.LOGGING: Determina si el depurador debe registrar en archivos. Esto es especialmente útil cuando tiene problemas con IDACode. Por favor, envíe un nuevo issue si encuentra algo. Los archivos siempre se encuentran en su directorio temporal (por ejemplo, Windows: %TEMP%). Los archivos se llaman debugpy.*.log.Ahora puede iniciar el plugin haciendo clic en IDACode en el menú de plugins.
La extensión de VS Code está disponible en el marketplace. Para configurar la extensión, consulte el README de la extensión.
Presione IDACode en el menú de plugins. Debería aparecer el siguiente texto:
IDACode listening on 127.0.0.1:7065
A partir de la versión 0.2.0, IDACode admite "Ejecutar al guardar", que está habilitado por defecto. VS Code ejecutará automáticamente su script en IDA tan pronto como guarde el documento actual (por ejemplo, con CTRL+S). Este comportamiento se puede deshabilitar en la configuración. Abra la Consola de Desarrollo de Extensiones de VS Code usando Ctrl-Shift-P e ingrese "idacode" para ver la lista de comandos a continuación. No use la funcionalidad "Ejecutar" o "Depurar" de VS Code, ya que recibirá un mensaje "HTTP misformed" en IDA.
Hay 4 comandos a su disposición:

Una vez que tenga abierta una carpeta donde desee colocar sus scripts (¡debe especificar la carpeta cuando VS Code se lo solicite!), estará listo para conectarse a IDA. Puede hacerlo ejecutando Connect to IDA o Connect and attach a debugger to IDA. Tenga en cuenta que una sesión de depuración es permanente hasta que reinicie IDA. No puede cambiar la carpeta del espacio de trabajo una vez que el depurador se ha iniciado.
Asegúrese de que la carpeta del espacio de trabajo sea la carpeta donde se encuentran sus scripts principales.
Una vez conectado, podrá seleccionar Execute script in IDA.
IDACode utiliza el depurador remoto de VS Code para conectarse a IDA. Todas las funciones de VS Code son compatibles. Sin embargo, debe especificar el punto de entrada del script utilizando la funcionalidad incorporada de Python: breakpoint. Esta instrucción le dice al depurador que pause la ejecución; si no hay un depurador presente, simplemente ignorará la función. IDACode importa un paquete auxiliar llamado dbg que implementa una sobrecarga de breakpoint llamada bp. Esta función admite registro y condicionales:
name = idc.get_segm_name(segment)
dbg.bp(name==".text", f"found {name} at {segment}")
Tenga en cuenta también que una llamada a breakpoint() nunca debe ocurrir al final de un archivo; siempre debe estar antes de cualquier otra línea de código, ya que se detiene en la siguiente instrucción de su código. También tenga en cuenta que si decide usar el paquete dbg, debe eliminar todas las referencias o usar la variable __idacode__ como condicional antes de ejecutarlo como un script normal de IDA.
También es importante que adjuntar un depurador creará una nueva instancia del depurador. En la mayoría de los casos, esto no es lo que desea. Si se desconecta del depurador, use el depurador remoto de VS Code para volver a conectarse.
