丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
政企安全 正文
發(fā)私信給李勤
發(fā)送

0

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

本文作者: 李勤 2017-05-27 11:15 專題:雷峰網(wǎng)公開(kāi)課
導(dǎo)語(yǔ):本期,雷鋒網(wǎng)宅客頻道邀請(qǐng)到閻文斌做一期線上硬創(chuàng)公開(kāi)課,聊聊Android原生保護(hù)殼的原理與實(shí)現(xiàn)、流行趨勢(shì)等。

曾有一個(gè)嚇人的數(shù)據(jù):高達(dá) 99.99 %的安卓手機(jī)存在安全漏洞!

在 2016 年的 XPwn 未來(lái)安全探索盛會(huì)上,一個(gè)黑客團(tuán)隊(duì)對(duì)國(guó)內(nèi) 20 家銀行提供給消費(fèi)者的、基于安卓系統(tǒng)的 20 個(gè)手機(jī)銀行 App 進(jìn)行攻擊,發(fā)現(xiàn) 17 家銀行的 App 存在漏洞,消費(fèi)者的手機(jī)一旦被黑,無(wú)論轉(zhuǎn)賬給“張三”還是“李四”,在輸入正確賬號(hào)與密碼的情況下,錢最終都會(huì)轉(zhuǎn)給“王五”。

只要你敢把自家的 App 拿出來(lái),北京娜迦信息科技發(fā)展有限公司 CTO、國(guó)內(nèi)著名安全論壇“看雪學(xué)院”版主的閻文斌(玩命)就敢試一試,攻下你家看似嚴(yán)絲密合的“堡壘”。

閻文斌太了解 App 的薄弱地帶了,正因?yàn)樘私夤羰侄?,所以他才想要研究如何給 App 穿上鎧甲,走向明槍暗箭的戰(zhàn)場(chǎng) 。

本期,雷鋒網(wǎng)宅客頻道邀請(qǐng)到閻文斌做一期線上硬創(chuàng)公開(kāi)課,聊聊 Android 原生保護(hù)殼的原理與實(shí)現(xiàn)、流行趨勢(shì)等。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

嘉賓介紹

閻文斌,現(xiàn)任北京娜迦信息科技發(fā)展有限公司 CTO,同時(shí)身為國(guó)內(nèi)著名安全論壇“看雪學(xué)院”版主,有深厚的安全領(lǐng)域背景,長(zhǎng)期研究計(jì)算機(jī)病毒與軟件保護(hù)技術(shù),并深耕密碼學(xué)研究領(lǐng)域。曾負(fù)責(zé)國(guó)家信息技術(shù)安全研究中心的多個(gè)網(wǎng)絡(luò)安全相關(guān)項(xiàng)目,參與多家政府網(wǎng)站的風(fēng)險(xiǎn)評(píng)估工作。此外,閻文斌連續(xù)多年在XCon會(huì)議上進(jìn)行安全演講。

以下是公開(kāi)課總結(jié)文實(shí)錄+視頻,在不妨礙原意的表達(dá)上,雷鋒網(wǎng)編輯對(duì)該實(shí)錄略有整理和修訂:

我是北京娜迦信息的閻文斌,由于寫(xiě)保護(hù)殼是個(gè)完整的過(guò)程,首先就是要對(duì)目標(biāo)文件格式的熟悉程度,這次公開(kāi)課只有90分鐘,我將大部分精力放到ELF文件結(jié)構(gòu)科普的方面。其實(shí)只要弄明白文件格式,寫(xiě)保護(hù)殼是自然而然的一個(gè)過(guò)程。在課程中會(huì)講到一些文件結(jié)構(gòu)特性在保護(hù)中的利用。在課程中會(huì)結(jié)合娜迦產(chǎn)品的代碼一同講解。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

本節(jié)課一共有四個(gè)部分,第一,我介紹一下當(dāng)前流行的Android原生程序保護(hù)技術(shù)。第二,精講一下ELF文件,ELF文件和實(shí)現(xiàn)保護(hù)殼有關(guān)。第三,Android系統(tǒng),就是Linux如何加載一個(gè)so的過(guò)程,這個(gè)部分直接放原代碼。第四,如何寫(xiě)一個(gè)軟件保護(hù)殼,以我司產(chǎn)品為例。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

我們當(dāng)前流行的原生保護(hù)的技術(shù)大致有三種:第一種,直接對(duì)SO進(jìn)行一個(gè)加密,第二種,自定義加載器加載,第三種,軟件保護(hù)殼技術(shù)。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

第一種就是直接加密文件的基礎(chǔ)原理。很簡(jiǎn)單,很粗暴,沒(méi)有什么技術(shù)含量,因?yàn)閟o文件是被dex文件通過(guò)load library之類的函數(shù)加載,所以直接對(duì)so文件加密后,把一些解密代碼和密鑰寫(xiě)到dex。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

在這個(gè)地方對(duì)so進(jìn)行解密,或者在其他地方都不限,只要在so加載之前,對(duì)它進(jìn)行解密就行,實(shí)際上手法很多,最粗暴的就是直接寫(xiě)到代理里,這是一種最省事,但是最無(wú)恥的做法。稍微有良心一點(diǎn),也可以hook掉dlopen類型的函數(shù),即加載so類型的函數(shù),在其中做一些解密操作,這是比較有良心的做法。

直接對(duì)so文件進(jìn)行加密,dex代理啟動(dòng)后對(duì)so文件進(jìn)行解密。這是一種粗暴并且?guī)в衅垓_性質(zhì)的保護(hù)方式。這種類型太容易實(shí)現(xiàn),沒(méi)有什么技術(shù)含量,但是現(xiàn)在很多廠商在用。

無(wú)論你是自己模擬一個(gè)加載器,把so加載起來(lái),還是做一個(gè)so保護(hù)殼,這兩種方式都有技術(shù)成本,需要調(diào)試,很麻煩,但是上述那種沒(méi)良心的操作很簡(jiǎn)單,但是它有一個(gè)好處——可以過(guò)檢測(cè)?,F(xiàn)在的檢測(cè)機(jī)構(gòu)對(duì)Android程序進(jìn)行檢測(cè)時(shí),專門(mén)有一項(xiàng)就是對(duì)so進(jìn)行檢測(cè),對(duì)so檢測(cè),其實(shí)很難分辨加了殼還是未加殼,只有一些硬性的標(biāo)準(zhǔn)來(lái)匹配。

比如,一個(gè)ELF文件被加殼后,其實(shí)還是一個(gè)ELF文件,它可以直接被單獨(dú)調(diào)用,但是直接對(duì)文件加密之后,它不再是一個(gè)ELF文件,有一些自動(dòng)保護(hù)系統(tǒng)、檢測(cè)系統(tǒng)會(huì)發(fā)現(xiàn)你是有ELF文件的,然后它就會(huì)報(bào)可以被反匯編程序,所以我覺(jué)得這是帶有欺騙性質(zhì)的。

第二種就是自定義加載器的技術(shù)原理,這是現(xiàn)在幾家做得不錯(cuò)的保護(hù)加工廠商使用的一種通用方式,它比加殼的實(shí)現(xiàn)難度低,這種技術(shù)能達(dá)到一定保護(hù)強(qiáng)度,原理就是模擬ELF文件的格式的加載方式。這種被保護(hù)的so程序,換成自己程序識(shí)別的文件格式,可以把so的符號(hào)表、重定位表等組成so的ELF的自段碼都抽取出來(lái),定義成自己的格式,只保留它的代碼段,保存成一個(gè)文件,也可以把文件加密。隨后hook掉dlopen和dlsym等函數(shù),因?yàn)橐獙?duì)這兩個(gè)函數(shù)做一些hook或者是劫持,無(wú)論是在哪一層做hook操作,做so都是JNI函數(shù),當(dāng)dex調(diào)動(dòng)反調(diào)JNI函數(shù)時(shí),會(huì)調(diào)用java里的load libray,直接調(diào)用C語(yǔ)言的dlopen,然后又把dlopen做了,所以就在這個(gè)hook操作里,你會(huì)實(shí)現(xiàn)自己的加載操作,把自己的格式加載起來(lái)。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

另外,hook dlsym是因?yàn)楫?dāng)dex獲取歷程的,或者是有一些寫(xiě)程序的人直接自己使用dlsym,自己dlopne自己的so,有一些這樣的實(shí)現(xiàn),所以必須hook到dlsym,因?yàn)樗旧硪呀?jīng)不是一個(gè)ELF文件,所以需要實(shí)現(xiàn)一套自己尋找符號(hào)的這么一個(gè)流程,這是基本原理。這種原理實(shí)現(xiàn)起來(lái)簡(jiǎn)單,因?yàn)锳ndroid是開(kāi)源的,直接可以把它的Link扒出來(lái),在上面進(jìn)行修改,修改成什么都可以,然后包含到自己的程序里。

第三種技術(shù)就是軟件保護(hù)殼技術(shù),這種是比較正統(tǒng)的軟件保護(hù)技術(shù),很早就有。它的原理是:殼代碼像病毒一樣附著到文件上,并且加密文件代碼,修訂入口點(diǎn),然后到保護(hù)殼時(shí),優(yōu)先起動(dòng)的就是保護(hù)殼代碼。程序起動(dòng)后,首先跳入到保護(hù)殼程序中,這里你就可以做任何操作了,如:加解密操作,包括一些反調(diào)操作等,最后殼持續(xù)解密目標(biāo)代碼,并且跳入到目標(biāo)代碼中。它的基本原理是這樣,如果只做加解密操作,這種殼的保護(hù)強(qiáng)度還是很低。在Windows保護(hù)時(shí)代,就有很多很多很牛逼的殼,用了很多技術(shù),不光對(duì)殼本身做加解密操作,因?yàn)檫@個(gè)殼的引導(dǎo)段僅起到引導(dǎo)作用,但是其真正的保護(hù)代碼和目標(biāo)代碼是混合到一起的。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

ELF文件是什么?

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

我們寫(xiě)Android程序時(shí),有兩部分,一部分是dex文件,一部分是so文件,dex文件本身就是用java寫(xiě)的,就是把java代碼,編譯成Dalvik虛擬機(jī)的代碼,承載Dalvik虛擬機(jī)本身的這個(gè)東西,就是一個(gè)文件格式,是谷歌自己實(shí)現(xiàn)的,稱為dex。ELF文件就是用C寫(xiě)的這部分,編譯出來(lái)是so文件,這部分遵從一個(gè)開(kāi)放性協(xié)議的標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)就是ELF。它是一個(gè)工業(yè)標(biāo)準(zhǔn),基本在所有poxis標(biāo)準(zhǔn)上都進(jìn)行了實(shí)現(xiàn),只要是覆蓋這個(gè)標(biāo)準(zhǔn)的操作系統(tǒng),都用ELF作為API文件的接口,這就是ELF的介紹,如果你想寫(xiě)一個(gè)軟件保護(hù)殼,必須對(duì)其結(jié)構(gòu)非常了解。

接著講ELF的文件格式。有六個(gè)章節(jié),第一,簡(jiǎn)單介紹ELF,第二,整體結(jié)構(gòu)的介紹,第三,講一下頭,第四,節(jié)表的作用,第五,段表,第六,動(dòng)態(tài)段。

我要用到這三個(gè)工具來(lái)工具來(lái)輔助,readelf的作用是對(duì)ELF文件格式進(jìn)行解析,因?yàn)樗且粋€(gè)格式瀏覽器。objdump對(duì)目標(biāo)進(jìn)行反匯編 操作,hexdump對(duì)目標(biāo)二進(jìn)制代碼進(jìn)行觀察。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

ELF的基本介紹摘自百度百科:在計(jì)算機(jī)科學(xué)中,是一種用于二進(jìn)制文件、可執(zhí)行文件、目標(biāo)代碼、共享庫(kù)和核心轉(zhuǎn)儲(chǔ)格式文件。是UNIX系統(tǒng)實(shí)驗(yàn)室(USL)作為應(yīng)用程序二進(jìn)制接口(Application Binary Interface,ABI)而開(kāi)發(fā)和發(fā)布的,也是Linux的主要可執(zhí)行文件格式。  

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

那我們現(xiàn)在就做一些實(shí)驗(yàn)(雷鋒網(wǎng)編者注:涉及到視頻演示,以下部分不做整理,讀者請(qǐng)結(jié)合PPT自行看視頻)。

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻


Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻


Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

直播視頻

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

分享:
相關(guān)文章

編輯、作者

跟蹤互聯(lián)網(wǎng)安全、黑客、極客。微信:qinqin0511。
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)