1. 程式人生 > >Android中的Apk的加固 加殼 原理解析和實現

Android中的Apk的加固 加殼 原理解析和實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

一、前言

今天又到週末了,憋了好久又要出部落格了,今天來介紹一下Android中的如何對Apk進行加固的原理。現階段。我們知道Android中的反編譯工作越來越讓人操作熟練,我們辛苦的開發出一個apk,結果被人反編譯了,那心情真心不舒服。雖然我們混淆,做到native層,但是這都是治標不治本。反編譯的技術在更新,那麼保護Apk的技術就不能停止。現在網上有很多Apk加固的第三方平臺,最有名的應當屬於:愛加密和梆梆加固了。其實加固有些人認為很高深的技術,其實不然,說的簡單點就是對源Apk進行加密,然後在套上一層殼即可,當然這裡還有一些細節需要處理,這就是本文需要介紹的內容了。


二、原理解析

下面就來看一下Android中加殼的原理:


我們在加固的過程中需要三個物件:

1、需要加密的Apk(源Apk)

2、殼程式Apk(負責解密Apk工作)

3、加密工具(將源Apk進行加密和殼Dex合併成新的Dex)


主要步驟:

我們拿到需要加密的Apk和自己的殼程式Apk,然後用加密演算法對源Apk進行加密在將殼Apk進行合併得到新的Dex檔案,最後替換殼程式中的dex檔案即可,得到新的Apk,那麼這個新的Apk我們也叫作脫殼程式Apk.他已經不是一個完整意義上的Apk程式了,他的主要工作是:負責解密源Apk.然後載入Apk,讓其正常執行起來。


在這個過程中我們可能需要了解的一個知識是:如何將源Apk和殼Apk進行合併成新的Dex

這裡就需要了解Dex檔案的格式了。下面就來簡單介紹一下Dex檔案的格式

具體Dex檔案格式的詳細介紹可以檢視這個檔案:http://download.csdn.net/detail/jiangwei0910410003/9102599

主要來看一下Dex檔案的頭部資訊,其實Dex檔案和Class檔案的格式分析原理都是一樣的,他們都是有固定的格式,我們知道現在反編譯的一些工具:

1、jd-gui:可以檢視jar中的類,其實他就是解析class檔案,只要瞭解class檔案的格式就可以

2、dex2jar:將dex檔案轉化成jar,原理也是一樣的,只要知道Dex檔案的格式,能夠解析出dex檔案中的類資訊就可以了

當然我們在分析這個檔案的時候,最重要的還是頭部資訊,應該他是一個檔案的開始部分,也是索引部分,內部資訊很重要。