
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:
- Envolva tudo no ThinApp ou TurboStudio. O resultado foi grande, complicado, com capacidade limitada de atualizar plug-ins etc. Não coube.
- 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.
- 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.