Indis Re-creating the world one bit at a time
Indis is an intelligent disassembly framework. The primary goal for indis is to provide facilities for analysis of binary files. The plan is to provide a highly extensible object model for binary contents with support of reversing back up to C-like code.
Indis consists of a core gem, that unifies all the different target formats and architectures (which is a pretty hard task for now, when I’m focused on Mach-O ARM targets only); format processing gems (like Mach-O), that provide support of loading the specific binary format and collecting generic info about it (stuff like virtual map of sections, symbol references, etc.); and cpu processing gems (ARM for now).
Source Code
You can find the gems source at GitHub.
API Documentation
Updates
See the archive for updates on the project.
Show me some output!
Why, here you go ;)
% bin/indis-dis app-arm-release.o _main
000021b4 e92d40f0 PUSH {r4, r5, r6, r7, lr}
000021b8 e28d700c ADD r7, sp, #12
000021bc e1a05001 MOV r5, r1
000021c0 e1a06000 MOV r6, r0
000021c4 eb000388 BL 0x2fec ; branch_to_sym: _objc_autoreleasePoolPush
000021c8 e3011324 MOVW r1, #4900
000021cc e3401000 MOVT r1, #0
000021d0 e1a04000 MOV r4, r0
000021d4 e79f1001 LDR r1, [pc, r1]
000021d8 e3010360 MOVW r0, #4960
000021dc e3400000 MOVT r0, #0
000021e0 e79f0000 LDR r0, [pc, r0]
000021e4 eb000381 BL 0x2ff0 ; branch_to_sym: _objc_msgSend
000021e8 eb00037c BL 0x2fe0 ; branch_to_sym: _NSStringFromClass
000021ec e1a01005 MOV r1, r5
000021f0 e3a02000 MOV r2, #0
000021f4 e1a03000 MOV r3, r0
000021f8 e1a00006 MOV r0, r6
000021fc eb000375 BL 0x2fd8 ; branch_to_sym: _UIApplicationMain
00002200 e1a05000 MOV r5, r0
00002204 e1a00004 MOV r0, r4
00002208 eb000376 BL 0x2fe8 ; branch_to_sym: _objc_autoreleasePoolPop
0000220c e1a00005 MOV r0, r5
00002210 e8bd80f0 POP {r4, r5, r6, r7, pc}
Build Status
Integration Tests (indis meta gem)
Core
Mach-O
ARM
License
This project is distributed under the terms of GPL-3 license.



