番茄系統(tǒng)家園 - 免費(fèi)重裝系統(tǒng)!簡(jiǎn)單裝系統(tǒng),人人都是裝機(jī)大師!
當(dāng)前位置:首頁(yè)>電腦故障 > Android原生保護(hù)殼的原理與實(shí)現(xiàn) | 雷鋒網(wǎng)公開(kāi)課總結(jié)文+視頻

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

來(lái)源:番茄系統(tǒng)家園瀏覽:時(shí)間:2022-04-25 08:24:53

曾有一个吓人的数据:高达 99.99 %的安卓手机存在安全漏洞!

在 2016 年的 XPwn 未来安全探索盛会上,一个黑客团队对国内 20 家银行提供给消费者的、基于安卓系统的 20 个手机银行 App 进行攻击,发现17 家银行的 App 存在漏洞,消费者的手机一旦被黑,无论转账给“张三”还是“李四”,在输入正确账号与密码的情况下,钱最终都会转给“王五”。

只要你敢把自家的 App 拿出来,北京娜迦信息科技发展有限公司CTO、国内著名安全论坛“看雪学院”版主的阎文斌(玩命)就敢试一试,攻下你家看似严丝密合的“堡垒”。

阎文斌太了解 App 的薄弱地带了,正因为太了解攻击手段,所以他才想要研究如何给 App 穿上铠甲,走向明枪暗箭的战场 。

本期,宅客频道邀请到阎文斌做一期线上硬创公开课,聊聊 Android 原生保护壳的原理与实现、流行趋势等。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

嘉宾介绍

阎文斌,现任北京娜迦信息科技发展有限公司CTO,同时身为国内著名安全论坛“看雪学院”版主,有深厚的安全领域背景,长期研究计算机病毒与软件保护技术,并深耕密码学研究领域。曾负责国家信息技术安全研究中心的多个网络安全相关项目,参与多家政府网站的风险评估工作。此外,阎文斌连续多年在XCon会议上进行安全演讲。

我是北京娜迦信息的阎文斌,由于写保护壳是个完整的过程,首先就是要对目标文件格式的熟悉程度,这次公开课只有90分钟,我将大部分精力放到ELF文件结构科普的方面。其实只要弄明白文件格式,写保护壳是自然而然的一个过程。在课程中会讲到一些文件结构特性在保护中的利用。在课程中会结合娜迦产品的代码一同讲解。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

本节课一共有四个部分,第一,我介绍一下当前流行的Android原生程序保护技术。第二,精讲一下ELF文件,ELF文件和实现保护壳有关。第三,Android系统,就是Linux如何加载一个so的过程,这个部分直接放原代码。第四,如何写一个软件保护壳,以我司产品为例。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

我们当前流行的原生保护的技术大致有三种:第一种,直接对SO进行一个加密,第二种,自定义加载器加载,第三种,软件保护壳技术。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

第一种就是直接加密文件的基础原理。很简单,很粗暴,没有什么技术含量,因为so文件是被dex文件通过loadlibrary之类的函数加载,所以直接对so文件加密后,把一些解密代码和密钥写到dex。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

在这个地方对so进行解密,或者在其他地方都不限,只要在so加载之前,对它进行解密就行,实际上手法很多,最粗暴的就是直接写到代理里,这是一种最省事,但是最无耻的做法。稍微有良心一点,也可以hook掉dlopen类型的函数,即加载so类型的函数,在其中做一些解密操作,这是比较有良心的做法。

直接对so文件进行加密,dex代理启动后对so文件进行解密。这是一种粗暴并且带有欺骗性质的保护方式。这种类型太容易实现,没有什么技术含量,但是现在很多厂商在用。

无论你是自己模拟一个加载器,把so加载起来,还是做一个so保护壳,这两种方式都有技术成本,需要调试,很麻烦,但是上述那种没良心的操作很简单,但是它有一个好处——可以过检测。现在的检测机构对Android程序进行检测时,专门有一项就是对so进行检测,对so检测,其实很难分辨加了壳还是未加壳,只有一些硬性的标准来匹配。

比如,一个ELF文件被加壳后,其实还是一个ELF文件,它可以直接被单独调用,但是直接对文件加密之后,它不再是一个ELF文件,有一些自动保护系统、检测系统会发现你是有ELF文件的,然后它就会报可以被反汇编程序,所以我觉得这是带有欺骗性质的。

第二种就是自定义加载器的技术原理,这是现在几家做得不错的保护加工厂商使用的一种通用方式,它比加壳的实现难度低,这种技术能达到一定保护强度,原理就是模拟ELF文件的格式的加载方式。这种被保护的so程序,换成自己程序识别的文件格式,可以把so的符号表、重定位表等组成so的ELF的自段码都抽取出来,定义成自己的格式,只保留它的代码段,保存成一个文件,也可以把文件加密。随后hook掉dlopen和dlsym等函数,因为要对这两个函数做一些hook或者是劫持,无论是在哪一层做hook操作,做so都是JNI函数,当dex调动反调JNI函数时,会调用java里的loadlibray,直接调用C语言的dlopen,然后又把dlopen做了,所以就在这个hook操作里,你会实现自己的加载操作,把自己的格式加载起来。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

另外,hookdlsym是因为当dex获取历程的,或者是有一些写程序的人直接自己使用dlsym,自己dlopne自己的so,有一些这样的实现,所以必须hook到dlsym,因为它本身已经不是一个ELF文件,所以需要实现一套自己寻找符号的这么一个流程,这是基本原理。这种原理实现起来简单,因为Android是开源的,直接可以把它的Link扒出来,在上面进行修改,修改成什么都可以,然后包含到自己的程序里。

第三种技术就是软件保护壳技术,这种是比较正统的软件保护技术,很早就有。它的原理是:壳代码像病毒一样附着到文件上,并且加密文件代码,修订入口点,然后到保护壳时,优先起动的就是保护壳代码。程序起动后,首先跳入到保护壳程序中,这里你就可以做任何操作了,如:加解密操作,包括一些反调操作等,最后壳持续解密目标代码,并且跳入到目标代码中。它的基本原理是这样,如果只做加解密操作,这种壳的保护强度还是很低。在Windows保护时代,就有很多很多很牛逼的壳,用了很多技术,不光对壳本身做加解密操作,因为这个壳的引导段仅起到引导作用,但是其真正的保护代码和目标代码是混合到一起的。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

ELF文件是什么?

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

我们写Android程序时,有两部分,一部分是dex文件,一部分是so文件,dex文件本身就是用java写的,就是把java代码,编译成Dalvik虚拟机的代码,承载Dalvik虚拟机本身的这个东西,就是一个文件格式,是谷歌自己实现的,称为dex。ELF文件就是用C写的这部分,编译出来是so文件,这部分遵从一个开放性协议的标准,这个标准就是ELF。它是一个工业标准,基本在所有poxis标准上都进行了实现,只要是覆盖这个标准的操作系统,都用ELF作为API文件的接口,这就是ELF的介绍,如果你想写一个软件保护壳,必须对其结构非常了解。

接着讲ELF的文件格式。有六个章节,第一,简单介绍ELF,第二,整体结构的介绍,第三,讲一下头,第四,节表的作用,第五,段表,第六,动态段。

我要用到这三个工具来工具来辅助,readelf的作用是对ELF文件格式进行解析,因为它是一个格式浏览器。objdump对目标进行反汇编操作,hexdump对目标二进制代码进行观察。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

ELF的基本介绍摘自百度百科:在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。是UNIX系统实验室(USL)作为应用程序二进制接口(ApplicationBinary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

那我们现在就做一些实验(编者注:涉及到视频演示,以下部分不做整理,读者请结合PPT自行看视频)。

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

Android原生保护壳的原理与实现 | 雷锋网公开课总结文+视频

直播视频

推薦系統(tǒng)

  • 雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載

    雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載64位
    系統(tǒng)大?。?/em>0MB系統(tǒng)類型:WinXP

    雨林木風(fēng)在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)知名品牌,雨林木風(fēng)WindowsXP其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,是一款穩(wěn)定流暢的系統(tǒng),雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載,有需要的朋友速度下載吧。

    系統(tǒng)等級(jí):
    進(jìn)入下載 >
  • 蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用

    蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用64位
    系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win7

    蘿卜家園win7純凈版是款非常純凈的win7系統(tǒng),此版本優(yōu)化更新了大量的驅(qū)動(dòng),幫助用戶們進(jìn)行舒適的使用,更加的適合家庭辦公的使用,方便用戶,有需要的用戶們快來(lái)下載安裝吧。

    系統(tǒng)等級(jí):
    進(jìn)入下載 >
  • 雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載

    雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載64位
    系統(tǒng)大?。?/em>1.01GB系統(tǒng)類型:WinXP

    雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載,雨林木風(fēng)WinXP系統(tǒng)技術(shù)積累雄厚深耕多年,采用了新的系統(tǒng)功能和硬件驅(qū)動(dòng),可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對(duì)硬件的加速,加固了系統(tǒng)安全策略,運(yùn)行環(huán)境安全可靠穩(wěn)定。

    系統(tǒng)等級(jí):
    進(jìn)入下載 >
  • 蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載

    蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載64位
    系統(tǒng)大小:0MB系統(tǒng)類型:Win10

    蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,(win10企業(yè)版,win10 ghost,win10鏡像),蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 ghost鏡像 X64位系統(tǒng)下載,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來(lái)都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園

    系統(tǒng)等級(jí):
    進(jìn)入下載 >
  • 蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載

    蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載64位
    系統(tǒng)大小:0MB系統(tǒng)類型:Win10

    蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 ghost X64位 系統(tǒng)下載,蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來(lái)都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園win10國(guó)內(nèi)鏡像版,基于國(guó)內(nèi)用戶的習(xí)慣,做

    系統(tǒng)等級(jí):
    進(jìn)入下載 >
  • windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載

    windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載64位
    系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win11

    蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,windows11下載 蘿卜家園win11專業(yè)版 X64位 官網(wǎng)正式版可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對(duì)硬件的加速,使得軟件在WINDOWS11系統(tǒng)中運(yùn)行得更加流暢,加固了系統(tǒng)安全策略,WINDOWS11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運(yùn)行環(huán)境安全可靠穩(wěn)定。

    系統(tǒng)等級(jí):
    進(jìn)入下載 >

熱門系統(tǒng)