iOS逆向001--初識匯編<三>指令和寄存器

一:ARM寄存器

ARM指令主要是對寄存器她奥,棧瓮增、內(nèi)存的操作。寄存器位于CPU中哩俭,個數(shù)少速度快绷跑,ARM指令集中大部分指令都是對寄存器操作,但有些指令是對棧和內(nèi)存的操作凡资。下方會對操作棧砸捏、寄存器以及內(nèi)存的指令進行介紹。

指令占4個字節(jié)
command shfit m:放入地址隙赁,查看指令

共31個寄存器:X0~X30垦藏,分別如下
X0~X28、fp鸳谜、Ir
  0~28膝藕、29、30
cpsr:  標記寄存器
ldr:       加載寄存器(load register)
stur: 這個指令

bl指令 跳轉(zhuǎn)咐扭,將下一條執(zhí)行的指令放入lr(X30)寄存器
ret 返回到lr寄存器所保存的地址 執(zhí)行代碼
lr 寄存器
pc 寄存器 指向馬上要執(zhí)行的代碼地址

sp 指向了我們棧
    棧平衡(每個函數(shù)調(diào)用完畢之后芭挽,將拉伸的棧空間平衡(將sp加回去))

函數(shù)調(diào)用會開辟一段空間(椈确荆空間)
    函數(shù)的局部變量袜爪、參數(shù)、寄存器的保護

參數(shù):x0 -- x7(個數(shù)有關(guān)系薛闪、數(shù)據(jù)類型也有關(guān))
    多余的就會入棧

函數(shù)嵌套調(diào)用:
    | - A(開辟) --> B(開辟) --> A(開辟)
    | -  A<-->A 死的遞歸(內(nèi)存溢出)

內(nèi)存分區(qū)域
代碼區(qū) 特點: 可讀可寫可執(zhí)行
棧區(qū)域 放參數(shù)和局部變量
堆區(qū)域 動態(tài)申請 可讀可寫
全局: 可讀可寫
常量區(qū): 只讀!

adrp   x0, 1
1. 將1的值,左移12位 1 0000 0000 0000 == 0x1000
2.將PC寄存器的低12位清零 0x1002e6874  ==> 0x1002e6000
3.將將1 和 2 的結(jié)果相加  給 X0 寄存器!!

adrp 是計算指定的數(shù)據(jù)地址 到當(dāng)前PC值的相對偏移
由于得到的結(jié)果是低12bit為0
10 1024
12  == 4KB

1002e7f28
1.棧操作---- push 與pop

先簡單的聊一下棧的概念辛馆,“棧”說白了就是數(shù)據(jù)結(jié)構(gòu)的一種豁延,棧的數(shù)據(jù)結(jié)構(gòu)具有LIFO(last in first out) ---- 后進先出的特點昙篙。棧在ARM中所指的其實是一塊具有棧數(shù)據(jù)結(jié)構(gòu)特點內(nèi)存區(qū)。棧中主要用來暫存寄存器中的值得诱咏,比如R0寄存器正在使呢苔可,可是現(xiàn)在有一個優(yōu)先級比較高的函數(shù)要使用R0, 那么就先把R0的值Push到棧中暫存,然后等R0被優(yōu)先級更高的函數(shù)使用完畢后在從棧中Pop出之前的值袋狞。在函數(shù)調(diào)用時一般會對棧進行操作焚辅。

對棧操作的命令就是push和pop了映屋,一般會成對出現(xiàn),在函數(shù)開始時將該函數(shù)執(zhí)行時要使用的寄存器中的值push入棧同蜻,然后在函數(shù)結(jié)束時將之前push到棧中的值在pop到相應(yīng)的寄存器中棚点。

下方就是push和pop的用法的一個實例。在下方函數(shù)開始執(zhí)行前湾蔓,將該函數(shù)要使用的寄存器r4, r5, r7, lr使用push進行入棧操作瘫析,lr是該函數(shù)執(zhí)行后要返回的地址。在函數(shù)執(zhí)行完畢后卵蛉,使用pop命令將函數(shù)執(zhí)行前入棧的值在pop到相應(yīng)的寄存器中颁股。有一點需要注意的是將lr寄存器中的值在函數(shù)結(jié)束后pop到pc (Program Counter)寄存器中么库,pc寄存器中存儲的是將要執(zhí)行的命令的地址傻丝。這樣一來,函數(shù)執(zhí)行后就會返回到之前執(zhí)行的地址上繼續(xù)執(zhí)行诉儒。

2. pc寄存器中的中的標志位

此處我們以32位指令為例葡缰,pc寄存器中的后四位是標志位,第28 - 31位分別對應(yīng)著V (oVerflow)忱反,C (Carry)泛释,Z (Zero),N (Negative)温算。下面分別來介紹一下這四種符號所表示的狀態(tài)怜校。

N (Negative): 如果結(jié)果是負數(shù)則置位。
Z (Zero): 如果結(jié)果是零則置位注竿。
C (Carry): 如果有進位則置位茄茁。
V (Overflow): 在發(fā)生溢出的時候置位。


二:Xcode指令

當(dāng)你新建一個類的時候巩割, Xcode 會自動給你寫上以下代碼裙顽。

#import <Foundation/Foundation.h>
@interface Car : NSObject
@end

#import "Car.h"
@implementation Car
@end

Objective-C 編譯器指令是以 @ 打頭,它通常用來描述文件中的內(nèi)容宣谈。.h 文件中 @interface 指令用來標識文件的接口代碼的起始位置愈犹,而 @end 指令標示該段的結(jié)束位置。在 .m 文件中闻丑,@implementation 指令用來標識實現(xiàn)的起始位置漩怎,@end 標識結(jié)束位置

@interface 用于定義類的公共接口,通常嗦嗡,接口被稱為 API(application programming interface)而真正使對象能夠運行的代碼勋锤,位于 @implementation 中。

引用:
屬性聲明在@implementation里與extension里的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酸钦,一起剝皮案震驚了整個濱河市怪得,隨后出現(xiàn)的幾起案子咱枉,更是在濱河造成了極大的恐慌,老刑警劉巖徒恋,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚕断,死亡現(xiàn)場離奇詭異,居然都是意外死亡入挣,警方通過查閱死者的電腦和手機亿乳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來径筏,“玉大人葛假,你說我怎么就攤上這事∽烫瘢” “怎么了聊训?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恢氯。 經(jīng)常有香客問我带斑,道長,這世上最難降的妖魔是什么勋拟? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任勋磕,我火速辦了婚禮,結(jié)果婚禮上敢靡,老公的妹妹穿的比我還像新娘挂滓。我一直安慰自己,他們只是感情好啸胧,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布赶站。 她就那樣靜靜地躺著,像睡著了一般吓揪。 火紅的嫁衣襯著肌膚如雪亲怠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天柠辞,我揣著相機與錄音团秽,去河邊找鬼。 笑死叭首,一個胖子當(dāng)著我的面吹牛习勤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焙格,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼图毕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了眷唉?” 一聲冷哼從身側(cè)響起予颤,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤囤官,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛤虐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體党饮,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年驳庭,在試婚紗的時候發(fā)現(xiàn)自己被綠了刑顺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡饲常,死狀恐怖蹲堂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贝淤,我是刑警寧澤柒竞,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站霹娄,受9級特大地震影響能犯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犬耻,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贯溅。 院中可真熱鬧句狼,春花似錦篡腌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽排苍。三九已至沦寂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淘衙,已是汗流浹背传藏。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彤守,地道東北人毯侦。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像具垫,于是被迫代替她去往敵國和親侈离。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容