iOS逆向基礎(chǔ)篇--匯編

逆向開發(fā)是建立在分析二進(jìn)制指令上面砍艾,二進(jìn)制指令與匯編語言一一對(duì)應(yīng)茧泪。通過分析app二進(jìn)制反匯編的匯編語言來推測邏輯清笨,最后達(dá)到高級(jí)代碼還原业稼。

匯編語言的發(fā)展

機(jī)器語言

由0和1組成的機(jī)器指令.

匯編語言(assembly language)

使用助記符代替機(jī)器語言
如: mov x0,#0xa0
匯編編譯器器將匯編語言轉(zhuǎn)換為機(jī)器碼

高級(jí)語言(High-level programming language)

C\C++\Java\OC\Swift,更加接近人類的自然語言
比如C語言: int a = b;
高級(jí)語言的編譯器將高級(jí)語言轉(zhuǎn)換為匯編語言

我們的代碼在終端設(shè)備上是這樣的過程:


高級(jí)語言--匯編語言--機(jī)器語言
  • 匯編語言機(jī)器語言一一對(duì)應(yīng)伏钠,每一條機(jī)器指令都有與之對(duì)應(yīng)的匯編指令
  • 匯編語言可以通過編譯得到機(jī)器語言横漏,機(jī)器語言可以通過反匯編得到匯編語言
  • 高級(jí)語言可以通過編譯得到匯編語言 \ 機(jī)器語言,但匯編語言\機(jī)器語言幾乎不可能還原成高級(jí)語言

匯編語言的種類

  • 目前討論比較多的匯編語言有

    • 8086匯編(8086處理器是16bit的CPU)
    • ARM匯編(嵌入式熟掂、Mac缎浇、iOS)
    • X86 匯編 (Mac)
    • ......
  • 我們iPhone里面用到的是ARM匯編,但是不同的設(shè)備也有差異.因CPU的架構(gòu)不同.

  • 我們在打包App的時(shí)候,app支持的架構(gòu)指令集是多種的赴肚,一般我們會(huì)選擇armv7, armv7s素跺,arm64三種架構(gòu)通用,將三個(gè)可執(zhí)行文件包成一個(gè)包誉券。
    QQMusice支持arm7和arm64
架構(gòu) 設(shè)備
armv6 iPhone, iPhone2, iPhone3G, 第一代指厌、第二代 iPod Touch
armv7 iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4
armv7s iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 iPhone5S 以后 iPhoneX , iPad Air, iPad mini2以后
  • iphone 5C是最后一個(gè)arm32位版本, 5C之后都是arm64位版本
  • arm32和arm64位指令集會(huì)有些不一樣

幾個(gè)必要的常識(shí)

要想學(xué)好匯編,首先需要了解CPU等硬件結(jié)構(gòu)
APP/程序的執(zhí)行過程

APP/程序的執(zhí)行過程

  • 硬件相關(guān)最為重要是CPU/內(nèi)存
  • 在匯編中,大部分指令都是和CPU與內(nèi)存相關(guān)

總線

  • 每一個(gè)CPU芯片都有許多管腳踊跟,這些管腳和總線相連踩验,CPU通過總線跟外部器件進(jìn)行交互
  • 總線:一根根導(dǎo)線的集合
  • 總線分為數(shù)據(jù)總線、地址總線商玫、控制總線
    • 數(shù)據(jù)總線寬度決定了CPU的單次數(shù)據(jù)傳送量箕憾,也就是數(shù)據(jù)傳送速度。如 8086的數(shù)據(jù)總線寬度是16拳昌,所以單次最大傳遞2個(gè)字節(jié)的數(shù)據(jù)
    • 地址總線寬度決定尋址能力袭异,尋址能力直接影響能夠使用多大的內(nèi)存條。如8086的地址總線寬度是20地回,所以尋址能力是1M( 220 )
    • 控制總線的寬度決定了CPU對(duì)其他器件的控制能力扁远、能有多少種控制

內(nèi)存

各類存儲(chǔ)區(qū)的邏輯連接
各類存儲(chǔ)器的邏輯連接-物理地址對(duì)應(yīng)圖
各類存儲(chǔ)器的物理地址情況
  • 內(nèi)存地址空間的大小受CPU地址總線寬度的限制俊鱼。8086的地址總線寬度為20,可以定位2^20個(gè)不同的內(nèi)存單元(內(nèi)存地址范圍0x00000~0xFFFFF)畅买,所以8086的內(nèi)存空間大小為1MB

  • 0x00000~0x9FFFF:主存儲(chǔ)器并闲。可讀可寫

  • 0xA0000~0xBFFFF:向顯存中寫入數(shù)據(jù)谷羞,這些數(shù)據(jù)會(huì)被顯卡輸出到顯示器帝火。可讀可寫

  • 0xC0000~0xFFFFF:存儲(chǔ)各種硬件\系統(tǒng)信息湃缎。只讀

數(shù)據(jù)的寬度

數(shù)學(xué)上的數(shù)字犀填,是沒有大小限制的,可以無限的大嗓违。但在計(jì)算機(jī)中九巡,由于受硬件的制約,數(shù)據(jù)都是有長度限制的(我們稱為數(shù)據(jù)寬度)蹂季,超過最多寬度的數(shù)據(jù)會(huì)被丟棄冕广。

int a = 0X1ffffffff;
超過最多寬度的數(shù)據(jù)被丟棄
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市偿洁,隨后出現(xiàn)的幾起案子撒汉,更是在濱河造成了極大的恐慌,老刑警劉巖涕滋,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬辐,死亡現(xiàn)場離奇詭異,居然都是意外死亡宾肺,警方通過查閱死者的電腦和手機(jī)溯饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱榕,“玉大人瓣喊,你說我怎么就攤上這事∏郑” “怎么了藻三?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長跪者。 經(jīng)常有香客問我棵帽,道長,這世上最難降的妖魔是什么渣玲? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任逗概,我火速辦了婚禮,結(jié)果婚禮上忘衍,老公的妹妹穿的比我還像新娘逾苫。我一直安慰自己卿城,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布铅搓。 她就那樣靜靜地躺著瑟押,像睡著了一般。 火紅的嫁衣襯著肌膚如雪星掰。 梳的紋絲不亂的頭發(fā)上多望,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音氢烘,去河邊找鬼怀偷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛播玖,可吹牛的內(nèi)容都是我干的椎工。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼黎棠,長吁一口氣:“原來是場噩夢啊……” “哼晋渺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脓斩,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畴栖,沒想到半個(gè)月后随静,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吗讶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年燎猛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片照皆。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡重绷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膜毁,到底是詐尸還是另有隱情昭卓,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布瘟滨,位于F島的核電站候醒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏杂瘸。R本人自食惡果不足惜倒淫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望败玉。 院中可真熱鬧敌土,春花似錦镜硕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犬金,卻和暖如春念恍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晚顷。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工峰伙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人该默。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓瞳氓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栓袖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匣摘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354