
Un mensaje muy pequeño.
Por varias razones personales, me gusta arrastrar mi kit de herramientas a una unidad flash o disco duro externo. Una herramienta es IDA 6.8.
Después de trabajar con sistemas, no me gusta cuando hay colas en el registro o en forma de archivos. Y desafortunadamente, la IDA y sus módulos (en particular, BinnDiff) son culpables de esto.
Bueno, había un deseo de obtener un complejo totalmente portátil.
Bueno, en la medida de su modesto conocimiento y comprensión del problema, fueron visibles tres soluciones:
- Envuelva todo en ThinApp o TurboStudio. El resultado fue grande, engorroso, con capacidad limitada para actualizar complementos, etc. No encajaba.
- Escriba a un residente que rastree los cambios y los regrese después del final de la sesión de IDA. El resultado fue bastante grande (varios megabytes) o requirió la presencia de bibliotecas en el sistema para ejecutarse. Al cambiar la naturaleza de las "colas", era necesario reescribir y compilar el código. No es eso
- Hazlo con las herramientas integradas de Windows. Sobre esto, con más detalle.
De hecho, es completamente posible eliminar las colas en forma de archivos y saldos en el registro en un simple archivo por lotes de Windows, incluso sin Powershell. El código en mi caso salió así:
@ECHO Off rem rem IDA set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" (If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86) rem set param=%~1 rem - IDA? xcopy /E /I /C /Y /Q /H /R "%appdata%\zynamics" ".\Backup\zynamics" xcopy /E /I /C /Y /Q /H /R "%appdata%\Hex-Rays" ".\Backup\Hex-Rays" xcopy /E /I /C /Y /Q /H /R "%appdata%\IDA Pro" ".\Backup\IDA Pro" rem , call :removedir "%appdata%\zynamics" call :removedir "%appdata%\Hex-Rays" call :removedir "%appdata%\IDA Pro" rem xcopy /E /I /C /Y /Q /H /R ".\BinDiff\INI" "%appdata%\" xcopy /E /I /C /Y /Q /H /R ".\Hex-Rays" "%appdata%\" xcopy /E /I /C /Y /Q /H /R ".\Hex-Rays\IDA Pro" "%appdata%\IDA Pro" rem IDA reg export HKEY_CURRENT_USER\Software\Hex-Rays backup.reg /y rem ... reg import settings.reg rem , rem IDA , 32 Windows x64 if "%param%"=="32" goto x32 if "%param%"=="64" goto x64 if "%param:~1%"=="32" goto x32 if "%param:~1%"=="64" goto x64 if "%xOS%"=="x64" goto x64 if "%xOS%"=="x32" goto x32 rem IDA x32 , :x32 start /wait idaq.exe goto end rem IDA x64 , :x64 start /wait idaq64.exe goto end rem :removedir del /F /Q /S %1 > nul rmdir /s /q %1 exit /b rem :end rem reg export HKEY_CURRENT_USER\Software\Hex-Rays settings.reg /y rem ... xcopy /E /I /C /Y /Q /H /R "%appdata%\zynamics\*" ".\BinDiff\INI\zynamics" xcopy /E /I /C /Y /Q /H /R "%appdata%\Hex-Rays\*" ".\Hex-Rays" xcopy /E /I /C /Y /Q /H /R "%appdata%\IDA Pro" ".\Hex-Rays\IDA Pro" rem reg delete HKEY_CURRENT_USER\Software\Hex-Rays /f rem ... , reg import backup.reg rem del /F /Q backup.reg call :removedir "%appdata%\zynamics" call :removedir "%appdata%\Hex-Rays" call :removedir "%appdata%\IDA Pro" rem , xcopy /E /I /C /Y /Q /H /R ".\Backup\*" "%appdata%\" rem ... call :removedir Backup
Un efecto secundario de dicho archivo por lotes es una ventana negra que se cuelga durante la operación IDA. Así que lo puse todo junto en el
Compilador de lotes rápidos , como resultado el programa se volvió completamente "invisible".
Por lo tanto, resultó posible portar el programa utilizando el tamaño de archivo más pequeño sin la necesidad de bibliotecas adicionales, utilizando exclusivamente las herramientas integradas de Windows que han estado en el sistema operativo durante más de 10 años. Al mismo tiempo, la capacidad de cambiar complementos, scripts y configuraciones IDA no está limitada.
Este "proyecto" (dicho en voz muy alta) está en el
github, en el mismo lugar: el archivo ensamblado. Se aceptan críticas y adiciones.
PD: Sé que a partir de IDA 7.0 las rutas y los archivos afectados han cambiado. Pero uso 6.8 en vista del hecho de que algunos complementos no se reescriben en 7.0, y en general no me gustó 7.0. Sin embargo, el concepto propuesto se adapta fácilmente a las nuevas versiones de IDA.