android加殼
❶ android怎樣破解已使用加殼技術的APP
破解加了dex殼的app,關鍵是要獲得解密後的源dex,現在Android加殼技術大多都是通過DexClassLoader或者隱藏的函數openDexFile來將源dex載入進來,然後動態替換Application來啟動源程序,跟Windows上傳統的PE文件加殼有一定區別。
要破解傳統的殼,需要跟蹤控制流找到OEP,然後把源程序從內存中mp下來,重建輸入表,最困難的就是要跟著外殼的控制流走,安全工程師為了加大破解難度,使用了很多技術來讓破解者走得更艱難。安全工程師與破解者對抗的關鍵點就在尋找OEP的困難性上。
在Android平台上,正因為新興的dex加殼技術不成熟,導致有些另類的脫殼方法可以繞過分析演算法,直接將源程序mp下來。
舉個例子,安卓在4.0版本以後提供openDexFile這個函數來從內存中載入dex,所需要提供的參數是源dex在內存中的地址,所以只要對這個函數下斷,然後從寄存器里找到內存地址,就能將解密後的源dex從內存中mp下來,直接對其反編譯就能獲得源代碼了。
更進一步,關於openDexFile這個函數,其實它與libdvm.so這個庫有密不可分的關系,這個庫里提供大量操作dex文件的函數,如果對這個庫里的相關函數下斷,然後從內存中暴力mp一大塊內存區域,經常能直接將內存中的源dex給抓下來。
❷ 拿到一個apk包後,怎麼判斷其是否加殼了是否做了代碼混淆
混淆是不會導致反編譯失敗的,只是說,代碼變得難以讀懂,而不會導致反編譯失敗! 混淆和反編譯是兩個互不相乾的概念。 反編譯失敗和JDK,APKTOOL等各種工具的版本有密切關系! 專業無源代碼的 安卓 APK 反編譯、修改,只有你想不到
❸ 怎麼給手機上的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
❹ apk加殼 為什麼會影響app的兼容性
目前出名的加固不會影響兼容,只是會降低效率與穩定性
❺ 怎麼給android apk做加殼保護防止apk被反編譯,求詳細資料或工具。
詳細資料的話許多論壇都有的,看雪、csdn、apkbus......都有可以自己去找一下。工具的話類似proguard工具有很多,不過安全性不高。建議使用第三方之類的加密平台我在論壇活動中了解過愛加密 防護不錯,我是破不了。
❻ android dex文件保護怎麼做對dex加殼隱藏怎麼樣如何實現呢
愛加密提出的源碼隱藏加密保護技術是對dex進行隱藏,然後生成的一個殼文件,類似於虛像,如果有黑客想要盜取源碼的話是看不到實質性的源碼。這樣保護還是很有效果的。
❼ apk加殼和apk加固到底有啥關系
apk加殼只是apk加固的一部分工作而已
❽ android apk可以加殼嗎
愛加密 可以給apk文件加殼,保護安卓應用源碼的安全,你可以看一看:http://www.ijiami.cn/
❾ apk加殼是怎麼實現的
apk加殼其實就是加一段代碼在apk文件里,優先運行這段代碼,很多病毒就是通過這個方式來實現的,現在也被用作apk的保護,防止apk反編譯,保護APP。