androidapk加殼
❶ 怎麼給手機上的apk軟體加殼安裝
版權聲明:本文為博主原創文章,若轉載請註明出處:http://blog.csdn.net/pvlking
首先加殼的方法和代碼都是從Jack_Jia的博客學習的。
詳見:http://blog.csdn.net/jiajun/article/details/8678399
由於本人從c++開發直接跳到Android開發,沒有對android進行系統的學習,看上面博客時還是有很多不理解的地方。本文把不理解的地方梳理一下,最後提供個測試源碼(加了比較詳細的注釋)。希望對於跟我一樣安卓基礎不是太好的人有一定幫助。
正文:
apk加殼的目的(我的用途):增加apk靜態分析的難度。(如果反編譯的人知道是加殼的,可以在data/包名目錄下 找到真正的apk。所以在殼上增加正常的代碼的話可以增加迷惑性)
基礎知識:ClassLoader:http://www.iteye.com/topic/83978 這個寫的不錯想了解的可以去看看。
整個加殼的過程涉及到三個程序:要加殼的apk,加殼程序(demo中的apkjm),解殼程序(demo中的myunshell)。
其中加殼程序就是把要加殼的apk放入解殼程序的dex文件中。
解殼程序是最後替代我們apk安裝到手機中運行的程序。它在執行中從自己的dex中釋放出我們apk程序。
步驟:
1.實現加殼程序。
2.實現解殼程序:按博客創建個解殼的Application。如果我們的apk中用到了 Application,需要在解殼程序的xml文件中添加:
<meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.***.Application"/>
com.***.Application 是我們apk的Application類名 加上我們apk的包名
註:1.我們apk用到的許可權和組件都需要添加到解殼程序的xml中,組件都需要加上完整的包名路徑。
2.我們apk內用到的資源也就是res文件內的東西,需要拷貝到解殼程序的res中。
3.如果我們apk靜態注冊了廣播接收器,那廣播接收器類需要在解殼程序中實現。
3.解殼程序完成後,把bin文件夾內的dex文件拷出來,用加密程序把我們的apk添加到該dex文件中。
4.把新生成的dex文件覆蓋bin文件夾中原來的dex文件,並把apk文件也刪掉,重新運行解殼程序生成新的解殼apk。 這個apk就是我們需要的最後的apk文件了。加殼就完成了。
另外:1.在解殼程序中對我們apk文件進行解密函數調用的地方不對。 在demo中做了修改和說明。
2.我在釋放apk的時候加了個判斷,如果文件存在就不再釋放了,如果是在測試的時候,可以先屏蔽掉,免的每次運行調試前要先刪掉原來的程序。
[java] view plain
if (!dexFile.exists())
{
dexFile.createNewFile(); //在payload_odex文件夾內,創建payload.apk
// 讀取程序classes.dex文件
byte[] dexdata = this.readDexFileFromApk();
// 分離出解殼後的apk文件已用於動態載入
this.splitPayLoadFromDex(dexdata);
}
demo地址:http://download.csdn.net/detail/pvlking/8302249
❷ 怎麼給android apk做加殼保護防止apk被反編譯,求詳細資料或工具。
詳細資料的話許多論壇都有的,看雪、csdn、apkbus......都有可以自己去找一下。工具的話類似proguard工具有很多,不過安全性不高。建議使用第三方之類的加密平台我在論壇活動中了解過愛加密 防護不錯,我是破不了。
❸ 什麼是android apk加固
加固的過程中需要三個對象:1、需要加密的Apk(源Apk)2、殼程序Apk(負責解密Apk工作)3、加密工具(將源Apk進行加密和殼Dex合並成新的Dex)主要步驟:我們拿到需要加密的Apk和自己的殼程序Apk,然後用加密演算法對源Apk進行加密在將殼Apk進行合並得到新的Dex文件,最後替換殼程序中的dex文件即可,得到新的Apk,那麼這個新的Apk我們也叫作脫殼程序Apk.他已經不是一個完整意義上的Apk程序了,他的主要工作是:負責解密源Apk.然後載入Apk,讓其正常運行起來。
❹ android apk加殼保護這塊DEX文件與資源文件的保護要怎麼做
APK加密技術還沒有對DEX和RES保護方法的開放,但是愛加密的APP保護平台是免費向開發者提供技術支持的!
希望能幫到你~~~
❺ 如何加密android apk
代碼混淆:其實不能算是加密apk,因為它並不能防止反編譯,僅僅只是讓你的代碼可讀性降低。(即使別人反編譯了,也是一堆命名是A,B,C的東西,根本沒法看)
加殼:就是對你的apk裡面的源代碼加密,一般都會注入他們自己的一部分代碼(為了做到加密)。這種方式也有風險,有可能會被注入惡意代碼比如廣告什麼的。
一般應用來說,如果是上架正規應用市場,只需要代碼混淆就行了。
❻ 怎麼加固安卓軟體
加固安卓軟體一般要達到以下效果:
1、防逆向:通過DEX 文件加殼以及DEX 虛擬化等技術,防止代碼被反編譯和逆向分析。
2、防篡改:通過校驗 APK 開發者簽名,防止被二次打包,植入廣告或惡意代碼。
3、防調試:防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
VirboxProtector安卓加固的核心技術一般有:
DEX 文件加密隱藏
對 DEX 文件加殼保護,防止代碼被竊取和反編譯。
SO 區段壓縮加密
對 SO 庫中的代碼段和數據段壓縮並加密,防止被 IDA 等工具反編譯。
單步斷點檢測
在混淆的指令中插入軟斷點檢測暗樁,防止native層run trace和單步調試。
防動態調試
防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
開發者簽名校驗
對 APK 中的開發者簽名做啟動時校驗,防止被第三方破解和二次打包。
SO 內存完整性校驗
在 SO 庫載入時校驗內存完整性,防止第三方對 SO 庫打補丁。
SO 代碼混淆
對 SO 庫中指定的函數混淆,通過指令切片、控制流扁平化、立即加密等技術手段,將 native 指令轉換為難以理解的復雜指令,無法被 IDA 反編譯,並且無法被還原。
SO 代碼虛擬化
對 SO 庫中指定的函數虛擬化,可以將 x86、x64、arm32、arm64 架構的機器指令轉換為隨機自定義的虛擬機指令,安全強度極高,可通過工具自定義配置,調整性能與安全性。
DEX 虛擬機保護
對 DEX 中的 dalvik 位元組碼進行虛擬化,轉換為自定義的虛擬機指令,最後由 native 層虛擬機解釋執行,防止逆向分析。
❼ android apk可以加殼嗎
愛加密 可以給apk文件加殼,保護安卓應用源碼的安全,你可以看一看:http://www.ijiami.cn/
❽ android apk打包容易被破解嗎
一般是容易破解的,編程與逆向本身就是對立統一的,因此才有各式加密殼、演算法等等。
❾ APK加固原理是什麼如何進行android apk加固
APK加固是對APK代碼邏輯的一種保護,原理是將APK文件進行某種形式的轉換,包括不限於隱藏、混淆、加等操作,進一步保護軟體的利益不受損壞。
常見APK應用加固主要有DEX文件、SDK文件、SO文件加固這三類。DEX加固技術包括混淆代碼、整體DEX加固、拆分DEX加固、虛擬機加固、Java2C加固,當前性能最強的加固方案是Java2c,將java指令轉成c/c++指令,並做虛假控制流、字元串加密等處理,逆向難度最高。SO庫文件一般存放著核心演算法、重要協議等重要信息。SO加固大概可以分為有源保護和無源保護,有源保護分為自解密、混淆、源碼VMP等,無源保護分為加殼、VMP保護。
APK加固後,可以降低被逆向破解風險,目前有些雲安全平台提供系統的APP加固服務,如網易易盾、360加固、阿里雲等,想要系統提升APK安全等級可以了解下。
❿ apk加殼是怎麼實現的
apk加殼其實就是加一段代碼在apk文件里,優先運行這段代碼,很多病毒就是通過這個方式來實現的,現在也被用作apk的保護,防止apk反編譯,保護APP。