Questão:
Como obter o IDA Pro Free para alterar automaticamente o segmento no retf?
Milind R
2014-01-27 03:42:17 UTC
view on stackexchange narkive permalink

Não consegui que o IDA pro fizesse uma desmontagem simples de um arquivo binário simples de 16 bits (bootloader). Estou apenas começando e parece ser mais difícil do que deveria.

Há um conjunto simples de instruções que

  seg000: 7C5D push 7C0hseg000: 7C60 pop dsseg000: 7C61 assume ds: nothingseg000: 7C61 push dsseg000: 7C62 push (deslocamento unk_7C66 - deslocamento loc_7C00) seg000: 7C65 retfseg000: 7C65; -------------------------------------------------- ------------------------ seg000: 7C66 unk_7C66 db 88h; ê; DATA XREF: seg000: 7C62o  

Logo abaixo de push 7c0h; pop ds diz assume ds: nothing . retf realmente usa os valores na pilha para definir o segmento e deslocamento. Existe uma maneira de habilitar manualmente essa análise? Existem desmontadores mais inteligentes por aí? Estou tendo problemas para seguir o fluxo e o IDA não está ajudando em nada.

Um responda:
Dmitry Janushkevich
2014-06-27 17:57:47 UTC
view on stackexchange narkive permalink

Desculpas por trazer isso à tona depois de meio ano; espero que a questão ainda seja relevante.

Se isso estiver ocorrendo em vários lugares, sugiro escrever um script IDC simples para resolver o problema. O script:

  • Combina a sequência de instrução push / pop / push / push / retf;
  • Configure uma referência cruzada de código da instrução retf para o endereço calculado ;
  • Coloque um comentário;
  • Marque o destino para análise por IDA (opcional, acho que IDA deve começar a explorar automaticamente após a criação de refex).

Isso deve resolver o problema em questão. Infelizmente, o IDA não é tão inteligente quanto gostaríamos.

Obrigado .. Vou tentar escrever o script IDC sozinho; se não funcionar, volto ao RE.SE! :)


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...