plugin IDA hrtng
O plug -in HRTNG IDA é uma coleção de ferramentas, idéias e experimentos de diferentes fontes que achei interessante e útil no meu trabalho de reversão.
Um guia prático para o inverso de um malware complexo usando o exemplo de dissecar um módulo FinSpy com a ajuda do plug -in HRTNG IDA no SecureList
Não existe um lugar no menu em que todas as funcionalidades do plug -in agrupem. itens de menu de hrtng colocados mais perto das funções de decompilador de Raios IDA e Raios Hex-Raios Logicamente relacionados. Mensagens, itens de menu, janelas pop -up e caixas de diálogo pertencem a este plug -in estão marcadas com o prefixo " [hrt] ".
O plug-in requer presença de decompilador de raios hexáticos na sua instalação da IDA. O plug -in pode ser compilado com IDA SDK> = 7.3, mas não bem testado com versões antigas.
Agradecimentos especiais a seguir as pessoas por seus ótimos plugins foram usados como base para o meu trabalho:
- Milan Bohacek, Hexrays_tools e Hexrays_hlight
- HexRaysdeob de Rolf Rolles e Takahiro Haruyama
- Karthik Selvaraj Krypton Plugin
- Ali Rahbar, Ali Pezeshk e Elias Bachaalany Graphslick Plugin
- Markus Gakeredelen AVX Suporte para o decompilador HEX-RAYS X64
Recursos do plugin:
Automação
- Puxe comentários do DISASM para a View Pseudocode
- Renomeação automática de variáveis locais e globais, membros da estrutura
- Substituição automática de enum
- Com ajudante
Transformação interativa do pseudocódigo
- Assistência interativa de renomeação/retipo interativa
- Auxilia na mudança do tipo de membro da estrutura ou variável local/global
- reinterpret_cast
- Seleção de colapso
- "OffsetOf" conversor
Descriptografia
- Strings/dados/descriptografia const
- Construir strings de pilha (opcionalmente com descriptografia)
- Construir seqüências de matriz (opcionalmente com descriptografia)
- Strings em massa descriptografia
Lidar com o código ofuscado
- Código ofuscado descompilar
- Digitalizar hashes de nomes de API
- Sem acaso
Reconhecimento de código
- Assinaturas de microcódigo
- De -in -inline - Detecção de funções inlinadas
Estruturas de assistência
- Crie estruturas dummy
- Auxiliar lacunas divididas em estruturas
Virtual/Indirect chama assistência
- Virtual chama assistência
- Salte para o destino indireto de chamada
- Corrija o ponteiro da pilha para chamada indireta
Melhorias da UI da IDA
- Xrefs estendidos
- Destaque de Brace Matching
- Sincronização de conteúdo de janela 'Funções' Automático 'Funções'
Misk características
- Obtenha ajuda da API
- Levantador AVX
- Despejo strings, comentários e nomes do banco de dados da IDA
- Criação de tabela de compensações
- Converter função em __usercall, detecte registros estragados
- Conjunto de convenções de chamadas um pouco mais perto de Go-lang
Patching
- Patch Custom Area com NOPS
- Patch do depurador / patch do arquivo
- Pesquisar e patch
- Crie um arquivo remendado (DEC)
Ajuda do desenvolvedor de plug -in da IDA
Prédio
- Clone ou faça o download do código-fonte CMAKE da Biblioteca Crypto ++ ® para a pasta
hrtng/src/cryptopp-cmake .
cd src
git clone https://github.com/abdes/cryptopp-cmake
- Copie
IDA_DIR/plugins/hexrays_sdk/include/hexrays.hpp Arquivo para o diretório include o SDK IDA. (Não é necessário para a IDA 9.0) - Edite o arquivo
hrtng/src/CMakeLists.txt para definir o caminho correto e a versão do IDA SDK usado. Para construir mais tarde com outra versão SDK, você pode alterar a variável IDASDK_VER Cmake usando as ferramentas cmake -D , ccmake ou cmake-gui . - Criar diretório de compilação, vá para ele, configure e construa Projeto CMake
mkdir bld && cd bld
cmake <path-to/hrtng/src>
cmake --build . --config Release -j 4 --clean-first
- Na primeira tentativa de construção, haverá um erro de compilação:
hrtng/src/deob.cpp:912:60: error: ‘class rangeset_t’ has no member named ‘getbag’
fc.create("tmpfc2", ranges.getbag(), 0);//!!! add line into range.hpp, class rangeset_t: "const rangevec_t &getbag() const { return bag; }"
- Para corrigir o erro, edite o arquivo
IDA_SDK/include/range.hpp , adicionando linha com a implementação da função getbag na Declaração class rangeset_t como no exemplo a seguir:
class rangeset_t
{
rangevec_t bag;
...
public:
const rangevec_t &getbag() const { return bag; }
...
};
- Copie binários construídos em pasta
IDA_DIR/plugins TOGETER com arquivos apilist.txt e literal.txt de hrtng/bin/plugins - Lucro
Licença
Este programa é lançado sob licença GPL V3
Autores
- Sergey.Belov em Kaspersky.com