I am trying to decompile a Android ARM native binary using Hex-Rays IDA Pro. IDA detects the possible formats as
- ELF for ARM (Shared object)
- Binary file
If I choose ELF for ARM (Shared object), then it correctly decompiles and detect most of the standard functions like tan/sin/cos etc. But when I try to run the remote android debugger, I am getting the alert messages
- Input file is a dynamic library, it cannot be run by itself. Please specify the host application.
- The file can't be loaded by the debugger plugin. Please verify that the parameters are valid.
If I select Binary file, then it is not decompiling correctly. Also remote android debugger option is not listed in debuggers list.
I am able to execute the binary file directly on an Android ARM emulator.
What am I doing wrong? How can I debug a ELF for ARM binary executable file with IDA pro?
Edit: I have already tried with android_server
running on an AVD and a physical device. When I try to connect [ELF for ARM (Shared object)], I can see the following output in android_server
=========================================================
[7] Accepting connection from 127.0.0.1...
[7] Closing connection from 127.0.0.1...
Are all ARM binary executables detected as shared object? Or is my executable file being misidentified as a .so
file?
Are you positive that this application can be run independently from the command line (adb)?
If it is a shared library, you will need to attach to a process that can load and call the functionality that you want to step through in IDA.
– diff May 27 '15 at 22:11