IDA de Portabelização



Uma pequena mensagem.

Por várias razões pessoais, gosto de arrastar meu kit de ferramentas para uma unidade flash ou disco rígido externo. Uma ferramenta é a IDA 6.8.

Depois de trabalhar com sistemas, não gosto quando existem caudas no registro ou na forma de arquivos. E, infelizmente, a AID e seus módulos (em particular, BinnDiff) são culpados por isso.

Bem, havia um desejo de obter um complexo totalmente portátil.

Bem, na medida de seu conhecimento e entendimento modestos do problema, três soluções eram visíveis:

  1. Envolva tudo no ThinApp ou TurboStudio. O resultado foi grande, complicado, com capacidade limitada de atualizar plug-ins etc. Não coube.
  2. Escreva um residente que rastreie as alterações e as reverta após o final da sessão da IDA. O resultado foi bastante grande (vários megabytes) ou exigiu a presença de bibliotecas no sistema para execução. Ao alterar a natureza das "caudas", era necessário reescrever e compilar o código. Não é isso.
  3. Faça com as ferramentas internas do Windows. Sobre isso - em mais detalhes.

De fato, é inteiramente possível eliminar caudas na forma de arquivos e balanços no registro em um arquivo em lotes simples do Windows, mesmo sem o Powershell. O código no meu caso saiu assim:

@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 

Um efeito colateral de um arquivo em lotes é uma janela preta que trava durante a operação da IDA. Então juntei tudo no Quick Batch Compiler , como resultado, o programa se tornou completamente "invisível".

Portanto, foi possível portar o programa usando o menor tamanho de arquivo sem a necessidade de bibliotecas adicionais, usando exclusivamente as ferramentas internas do Windows que estão no sistema operacional há mais de 10 anos. Ao mesmo tempo, a capacidade de alterar plug-ins, scripts e configurações de IDA não é limitada.

Este "projeto" (em voz alta) está no github, no mesmo local - o arquivo montado. Críticas e acréscimos são aceitos.

PS: Eu sei que, começando com o IDA 7.0, os caminhos e os arquivos afetados foram alterados. Mas eu uso o 6.8 devido ao fato de que alguns plugins não são reescritos no 7.0, e em geral eu não gostei do 7.0. No entanto, o conceito proposto é facilmente adaptado às novas versões do IDA.

Source: https://habr.com/ru/post/pt438652/


All Articles