一丶介紹
“IDA(The Interactive Disassembler)”
“IDA是一個支持Windows、Linux和Mac OS X的多平臺反匯編器/調(diào)試器”
二丶使用
2.1下載:
demo版
https://www.hex-rays.com/products/ida/support/download_demo.shtml

Paste_Image.png
圖標(biāo):

Paste_Image.png
...不想說話
2.2使用
2.2.1 可執(zhí)行文件獲取
1.自己新建個簡單工程,寫點簡單的代碼,打包成ipa

Paste_Image.png
2.解壓縮

Paste_Image.png
2.2.2 用idaq打開它
什么都不用配置,遇到彈窗都點ok;
界面如下:

Paste_Image.png
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]

Paste_Image.png
如果想對比,某個文件的匯編代碼:

Paste_Image.png
三丶擴(kuò)展
...
四丶總結(jié)
...