Pregunta

¿Alguien sabe de un desensamblador para ARMV4i ejecutables y DLL?

Tengo un complemento DLL que estoy escribiendo con un formato muy raro data abort (<5% del tiempo) que he reducido a una función específica (a través de dumpbin y la dirección generada por el data abort).Sin embargo, es una función bastante grande y me gustaría limitarla un poco.Sé que está sucediendo en un memset() llamada, pero esa función en particular tiene alrededor de 35 de ellos, así que esperaba que al observar el desmontaje pudiera descubrir dónde está realmente el problema.

¿Fue útil?

Solución

IDA Pro definitivamente desmontará ARM.Y ellos (Datarescue) una vez me consiguieron una licencia alrededor de las 11 p.m. hora local, así que me gusta recomendarlos...

veo desde http://www.datarescue.com/idabase/ que ha habido cierta reorganización de la empresa, pero supongo que sigue siendo un buen producto.

Aquí está el enlace al nuevo editor: http://www.hex-rays.com/idapro/

Otros consejos

Creo que IDA Pro hará lo que quieras.Se mencionó en el libro O'Reilly Security Warrior y lo he visto recomendado en foros de desarrolladores de Windows Mobile.

Encantado es un desensamblador y ensamblador de Windows Mobile / Pocket PC / Win CE (para CPU ARM)

También puede consultar BDASM, un desensamblador de shareware; las versiones posteriores tienen complementos ARM.El sitio web parece estar caído, pero si lo buscas encontrarás la distribución shareware.

El código fuente del desensamblador ARM simple, DESARMAR, también está disponible.

El objdump de binutils (herramientas de compilación de Linux) se puede utilizar para producir el desensamblado, "objdump -b binario -m arm7tdmi -D nombre_archivo"

-Adán

Hace un par de años encontré un desensamblador ARM que usé mientras hacía algunos trabajos integrados.Sin embargo, no recuerdo su nombre, aunque creo que era parte de un paquete más grande como un emulador o algo así.

En su caso, ¿podría pedirle a su compilador que genere una lista ensamblada del código compilado?Eso podría ayudar a darle algo de margen.

De lo contrario, podría dividir su función en una o más funciones nuevas, si todo lo que puede obtener es el seguimiento de la pila.Luego divida la nueva función en una o más nuevamente.Este es el método probado y verdadero de "divide y vencerás".Y si tiene 35 llamadas a memset() en una función, ¡también podría ser una buena idea desde el punto de vista del diseño!

Actualizar:Encontré el paquete que usé: ARMfetamina.Funcionó para el código ARM9 que estaba desarrollando, pero parece que no se ha actualizado desde hace bastante tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top