Is there any iOS app for arm Disassembling? I mean one that can run on iPhone. Nor IDA or Hopper have any iOS version
-
r2 can run on a (jailbroken) iphone. see github.com/radare/radare2/blob/master/doc/iphone.md– broadwayCommented Jun 1, 2016 at 7:00
-
Isn't the basic idea of iOS that every application runs in its own sandbox? So that means you'd have to load external data into it – other than on a desktop system, you can't go and run it on anything you have installed.– JongwareCommented Jun 1, 2016 at 10:40
-
1Actualy, IDA has been ported to iOS (Jailbroken) letsunlockiphone.guru/ida-pro-disassembler-ported-iphone It really can run, I have used it before. I do prefer radare2 though. (See jvoisins answer)– Starwarsfan2099Commented Jun 7, 2016 at 2:14
3 Answers
If your iPhone is jailbroken, you can use radare2 on it. You can follow the process to cross-compile it here, or simply grab the latest release from Cydia.
A neat feature of radare2 is that you can run it on your iPhone, and debug/analyse your application remotely, since radare2 instances can communicate, either by spawning the web interface, or with the rap protocol, documented here.
If your iPhone isn't jailbroken, then there is no way an application could be used to analyse another one, since each of them is running in a separate sandbox.
I think you might try the otool command line tool its very basic but it do some disassembling, it just show function names and instructions no fancy links "showing where code will jump" it shows only dresses
But definitely you need to be Jailbroken
For a long time, I was using gdb from Cydia on my iPad 2 (it should still work on any 32-bit device). You can dump memory by attaching gdb to the running application's pid: ps ax | grep [app name]
and gdb -p -q [pid]
.
If you wanted to add a breakpoint at a symbol or selector, you first needed to extract the headers from the application. Using any variant of Class Dump (I used class-dump-z), I could break at any symbol dumped from the generated interfaces. After hitting the breakpoint, just run the disassemble
command.