Pergunta

Alguém conhece algum desmontador para ARMV4i executáveis ​​e DLLs?

Eu tenho uma DLL de plug-in que estou escrevendo com um arquivo muito raro data abort (<5% das vezes) que reduzi a uma função específica (via dumpbin e a saída de endereço pelo data abort).No entanto, é uma função bastante grande e gostaria de restringi-la um pouco.Eu sei que isso está acontecendo em um memset() chamada, mas essa função específica tem cerca de 35 delas, então eu esperava que, olhando para a desmontagem, eu pudesse descobrir onde realmente está o problema.

Foi útil?

Solução

O IDA Pro definitivamente fará a desmontagem do ARM.E eles (Datarescue) uma vez me arranjaram uma licença por volta das 23h, horário local, então gosto de recomendá-los...

eu vejo de http://www.datarescue.com/idabase/ que houve alguma reorganização da empresa, mas acho que ainda é um bom produto.

Aqui está o link para o novo editor: http://www.hex-rays.com/idapro/

Outras dicas

Acredito que IDA Pro fará o que você quiser.Foi mencionado no livro O'Reilly Security Warrior e já o vi recomendado em fóruns de desenvolvedores do Windows Mobile.

Encantado é um desmontador e montador de Windows Mobile / Pocket PC / Win CE (para CPUs ARM)

Você também pode consultar o BDASM, um desmontador de shareware - versões posteriores possuem plug-ins ARM.O site parece estar fora do ar, mas se você pesquisar, encontrará a distribuição shareware.

O código-fonte do desmontador ARM simples, DESARMAR, também está disponível.

O objdump binutils (ferramentas do compilador Linux) pode ser usado para produzir desmontagem, "objdump -b binário -m arm7tdmi -D file_name"

-Adão

Alguns anos atrás, encontrei um desmontador ARM que usei enquanto fazia alguns trabalhos incorporados.No entanto, não me lembro do nome - embora ache que fazia parte de um pacote maior, como um emulador ou algo assim.

No seu caso, você poderia pedir ao seu compilador para gerar uma listagem assembly do código compilado?Isso pode ajudar a lhe dar algum escopo.

Caso contrário, você poderá dividir sua função em uma ou mais novas funções, se tudo o que conseguir for o rastreamento de pilha.Em seguida, divida a nova função em uma ou mais novamente.Este é o método testado e comprovado de “dividir para conquistar”.E se você tiver 35 chamadas para memset() em uma função, também pode ser uma boa ideia do ponto de vista do design!

Atualizar:Encontrei o pacote que usei: ARMfetamina.Funcionou para o código ARM9 que estava desenvolvendo, mas parece que não é atualizado há algum tempo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top