一丶介绍
“IDA(The Interactive Disassembler)”
“IDA是一个支持Windows、Linux和Mac OS X的多平台反汇编器/调试器”
二丶使用
2.1下载:
demo版
https://www.hex-rays.com/products/ida/support/download_demo.shtml
图标:
...不想说话
2.2使用
2.2.1 可执行文件获取
1.自己新建个简单工程,写点简单的代码,打包成ipa
2.解压缩
2.2.2 用idaq打开它
什么都不用配置,遇到弹窗都点ok;
界面如下:
2.2.3对比
源代码:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self setUpButton];
}
在ida里面显示:
; Segment type: Pure code
AREA __text, CODE, READWRITE, ALIGN=3
; ORG 0x8050
CODE16
; ViewController - (void)viewDidLoad
; Attributes: bp-based frame
; void __cdecl -[ViewController viewDidLoad](struct ViewController *self, SEL)
__ViewController_viewDidLoad_
var_C= -0xC
var_8= -8
PUSH {R4,R7,LR}
ADD R7, SP, #4
SUB SP, SP, #8
MOV R4, R0
MOV R0, #(classRef_ViewController - 0x806C)
MOV R1, #(selRef_viewDidLoad - 0x806E)
ADD R0, PC ; classRef_ViewController
ADD R1, PC ; selRef_viewDidLoad
STR R4, [SP,#0xC+var_C]
LDR R0, [R0] ; _OBJC_CLASS_$_ViewController
LDR R1, [R1] ; "viewDidLoad"
STR R0, [SP,#0xC+var_8]
MOV R0, SP
BLX _objc_msgSendSuper2
MOV R0, #(selRef_setUpButton - 0x8086)
ADD R0, PC ; selRef_setUpButton
LDR R1, [R0] ; "setUpButton"
MOV R0, R4
BLX _objc_msgSend
ADD SP, SP, #8
POP {R4,R7,PC}
; End of function -[ViewController viewDidLoad]
如果想对比,某个文件的汇编代码:
三丶扩展
...
四丶总结
...