加固的過程中需要三個對象:1、需要加密的Apk(源Apk)2、殼程序Apk(負(fù)責(zé)解密Apk工作)3、加密工具(將源Apk進(jìn)行加密和殼Dex合并成新的Dex)主要步驟:我們拿到需要加密的Apk和自己的殼程序Apk,然后用加密算法對源Apk進(jìn)行加密在將殼Apk進(jìn)行合并得到新的Dex文件,最后替換殼程序中的dex文件即可,得到新的Apk,那么這個新的Apk我們也叫作脫殼程序Apk.他已經(jīng)不是一個完整意義上的Apk程序了,他的主要工作是:負(fù)責(zé)解密源Apk.然后加載Apk,讓其正常運(yùn)行起來。
成都創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)站營銷推廣,域名注冊,虛擬主機(jī),網(wǎng)站托管運(yùn)營有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)公司。
APK加固是對APK代碼邏輯的一種保護(hù),原理是將APK文件進(jìn)行某種形式的轉(zhuǎn)換,包括不限于隱藏、混淆、加等操作,進(jìn)一步保護(hù)軟件的利益不受損壞。
常見APK應(yīng)用加固主要有DEX文件、SDK文件、SO文件加固這三類。DEX加固技術(shù)包括混淆代碼、整體DEX加固、拆分DEX加固、虛擬機(jī)加固、Java2C加固,當(dāng)前性能最強(qiáng)的加固方案是Java2c,將java指令轉(zhuǎn)成c/c++指令,并做虛假控制流、字符串加密等處理,逆向難度最高。SO庫文件一般存放著核心算法、重要協(xié)議等重要信息。SO加固大概可以分為有源保護(hù)和無源保護(hù),有源保護(hù)分為自解密、混淆、源碼VMP等,無源保護(hù)分為加殼、VMP保護(hù)。
APK加固后,可以降低被逆向破解風(fēng)險,目前有些云安全平臺提供系統(tǒng)的APP加固服務(wù),如網(wǎng)易易盾、360加固、阿里云等,想要系統(tǒng)提升APK安全等級可以了解下。
上個月公司一個項(xiàng)目突然要找第三方進(jìn)行安全漏洞的檢測,于是打包了一個apk文件,發(fā)到第三方結(jié)構(gòu)進(jìn)行了安全檢測,這項(xiàng)目我入職前就已經(jīng)快完成的階段,我后面基本是維護(hù)和小更新.比較坑的是之前的哥們連混淆都沒有,更不要說加固了,最后掃出了30多個漏洞,看到檢測報(bào)告都懵逼了.
自己對混淆和加固之前也只是知道皮毛沒有深究,這次修復(fù)漏洞踩了不少坑,都是邊上網(wǎng)搜資料邊踩坑,總算搞定了,寫出來防止后人踩坑 ,這里主要講加固簽名的坑,混淆這里不說了(自己對混淆還不熟)
很容易理解,ture是已簽名,false是未簽名,都為true的話說明v1,v2都成功簽名了.
然后把兩個md5的值進(jìn)行比對,如果一致說明你的簽名沒用錯秘鑰 - -||
4.手動進(jìn)行簽名操作:
java -jar apksigner.jar sign --ks /Users/xxxx/Desktop/key.jks --ks-key-alias test --ks-pass pass: 123456 --key-pass pass: 123456 --out /Users/xxxx/Desktop/簽名后的安裝包.apk /Users/xxxx/Desktop/需要進(jìn)行簽名的安裝包.apk
上面的命令會執(zhí)行同時執(zhí)行v1,v2簽名
注意仔細(xì)看上的命令行:進(jìn)了黑色加粗的文字需要替換成實(shí)際的信息
說個小插曲,我們的項(xiàng)目找的是一個規(guī)模很大的公司進(jìn)行檢測,開始用了網(wǎng)上的免費(fèi)的加固工具加固拿去檢測,別人拿去測試之后全部都脫殼了,說這種免費(fèi)的加固安全沒有保障,要用他們的加固服務(wù)可以解決,要收費(fèi)..呵呵,因?yàn)轫?xiàng)目比較特殊只能答應(yīng)了,打包簽名了apk,發(fā)到他們那邊進(jìn)行了加固后他們把a(bǔ)pk發(fā)回來讓我重新簽名,簽名后apk用不了,閃退....老板說別人大公司應(yīng)該不會出現(xiàn)這種小問題,是我的問題.恩,自己也懷疑是我的錯. 當(dāng)天折騰到凌晨才下班,經(jīng)歷了上面的一頓折騰后發(fā)現(xiàn)v1,v2都簽名了,并且md5值也沒問題. 這時就有底氣的去質(zhì)問那家公司,最后發(fā)現(xiàn)是他們的加固出問題.
一般來說進(jìn)行了上面的方法重新簽名并且檢查md5值沒錯,應(yīng)該不會出問題了這時候可以去質(zhì)疑一下加固方的問題.
github參考鏈接1
github參考鏈接2
先寫這些記錄一下,后面有需要再更新,有什么問題可以在下面留言討論.
Gradle自定義插件
我們新建一個名為JiaguPlugin的Module
調(diào)整build.gradle為如下所示(這里我使用Kotlin開發(fā))
創(chuàng)建一個JiaguPlugin類
然后創(chuàng)建resources目錄并創(chuàng)建插件的配置文件
配置文件的內(nèi)容如下:
1)創(chuàng)建一個擴(kuò)展
這里我們創(chuàng)建的擴(kuò)展名為jiagu,這個就好像app下build.gradle中的android擴(kuò)展一樣
我們擴(kuò)展中的參數(shù)是JiaguParams中的參數(shù)
2)添加監(jiān)聽
添加一個讀取完配置信息后的回調(diào)
然后我們先將我們的插件上傳到Maven倉庫,也就是執(zhí)行插件build.gradle的這個Task,這里我上傳到了項(xiàng)目下的Plugins文件夾下
然后我們在項(xiàng)目的build.gradle文件里引入
加固的任務(wù)類JiaguTask如下,這里的命令是參照文章開頭360加固的help文件:
4)配置加固信息
我們在build.gradle文件中配置好我們的加固信息
5)進(jìn)行加固
首先我們先make一下項(xiàng)目,生成apk文件
網(wǎng)頁標(biāo)題:android加固,android加固和混淆2021
網(wǎng)頁URL:http://aaarwkj.com/article44/dsspoee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司、電子商務(wù)、微信小程序、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)