關於AES:加密方式,讓你的APK無懈可擊

曾經在阿里碰到一道面試題
面試官問: APK打包流程是什麼

(更多完整項目下載。未完待續。源碼。圖文知識後續上傳github。)
(能夠聯繫我VX:mm14525201314)git

今天本文主要講解:

APK文件反編譯程序員

  • 什麼是反編譯
  • 如何防止反編譯
  • APK文件的基本構造

APK加固的方案原理github

  • APK加固整體架構
  • APK打包基本流程
  • Dex文件的意義

AES加密項目實戰面試

  • APK加固項目實戰
  • APK脫殼技術實戰

一.APK文件反編譯

1.什麼是反編譯
  • 定義:

利用編譯程序從源語言編寫的源程序產生目標程序的過程架構

2.怎麼進行反編譯?

先了解apk的文件構造結構
框架

二.加固方案思想

一個程序員的故事:學習

辛辛苦苦找到一個對象,結婚後發現是個母夜叉。不給管錢就鬧,晚上睡覺她趴着睡,致使這程序員沒法去洗腳了。然而這個程序員很努力,平時除了上班,還可以作點外包,賺點外快。因此他就想到了把工資卡上交,而把賺到的外快放到了本身的小金庫。今後過上了性福生活

一個加密的故事:加密

經過將非核心的dex文件進行暴露來達到保護核心dex文件的目的。

三.基本原理

3.1Apk打包流程

加殼是在原來apk的基礎上加一層保護殼,dex文件修改了就須要從新打包,不然apk安裝不了。這就須要咱們詳細學習apk如何打包的spa

3.2Dex文件是什麼

加固的目的是保護dex,直接而言就是對dex文件進行操做,對dex文件動刀子,必須知道dex文件是什麼,可否直接動刀子3d

3.3Dex文件加載流程

加殼後的文件是不能直接用的,dex文件是加密的,因此咱們須要對他進行解密,解密後的dex文件如何加載?

3.4APK文件是怎麼生產的

image.png

四.加固整體框架


那麼問題來了:

  • 如何達到加密效果?
  • 爲何是兩個系列的dex?
  • 殼dex 怎麼來的
  • 殼dex如何保護源dex?
  • 如何簽名?
  • 如何運行新dex(如何脫殼)?
4.1加密過程

4.2APK文件如何簽名


4.3APK文件如何運行(脫殼)

4.4如何制定某些類在 main dex中
  • multiDexKeepFile:手動加入要放到Main.dex中的類
com.umeng.analytics.Abb.class
  • multiDexKeepProguard:以Proguard的方式手動加入要放到的Main.dex中的類
-keep public class com.tencent.bugly.**{*;}

總結

完成APL加固,咱們須要具有的知識體系有哪些

(更多完整項目下載。未完待續。源碼。圖文知識後續上傳github。)
(能夠聯繫我VX:mm14525201314)

相關文章
相關標籤/搜索