android 加壳 方案,android加壳思路
8種機械鍵盤軸體對比
本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?
對java及dex代碼保護的技術發展:第一代
dex文件加密,打包。在運作時通過一個自定義的類加載器進行解密。
第二代
類級別的dex保護。把需要保護的核心函數抽離出來生成另外一個文件。利用虛擬機類加載機制,在運行時調用修復函數進行修復。
第三代
將dex的核心函數抽離出來,翻譯為自定義指令,運行時通過自寫的解釋器解釋指令。
第四代
java2c,通過將核心函數轉為c代碼,編譯為so文件。
dex文件加殼
類PE殼
dex作為android程序運行的主要文件,加殼尤為重要。從dex文件結構來看,它和windows的pe文件有許多相似之處,而且更為簡單,所需數據的索引很方便。
類比PE文件,將原始數據加密后存放在文件內部,可以是尾部,也可以是頭部(header結構之下)。
使程序能夠正常執行,首先是用殼來解密原始數據,恢復原始程序。
放于文件尾部:
加殼程序工作流程:1.加密源程序APK文件得到加密的數據
2.把解加密的數據寫在解殼程序Dex文件末尾,并在文件尾部添加解殼數據的大小。
3.修改解殼程序DEX頭中checksum.signature 和file_size頭信息。
4.修改源程序AndroidMainfest.xml文件并覆蓋解殼程序AndroidMainfest.xml文件。
解殼DEX程序工作流程:1.讀取DEX文件末尾數據獲取加密數據長度。
2.從DEX文件讀取加密數據,將數據解密。以文件形式保存解密數據到a.APK文件
3.通過DexClassLoader動態加載a.apk。
放于文件頭部:
加殼程序工作流程:1.加密源程序APK文件為解殼數據
2.計算解殼數據長度,并添加該長度到解殼DEX文件頭末尾,并繼續解殼數據到文件頭末尾。(插入數據的位置為0x70處)
3.修改解殼程序DEX頭中checksumsignaturefile_sizeheader_sizestring_ids_offtype_ids_offproto_ids_offfield_ids_offmethod_ids_offclass_defs_off和data_off相關項。 分析map_off 數據,修改相關的數據偏移量。
4.修改源程序AndroidMainfest.xml文件并覆蓋解殼程序AndroidMainfest.xml文件。
解殼DEX程序工作流程:1.從0x70處讀取解殼數據長度。
2.從DEX文件讀取解殼數據,解密解殼數據。以文件形式保存解密數據到a.APK
3.通過DexClassLoader動態加載a.APK。
動態加載
主要方式:1.將核心代碼編譯成dex文件的Jar包
2.對jar包進行加密處理
3.在程序主入口利用NDK進行解密
4.再利用ClassLoader將jar包進行動態加載
5.利用反射技術將ClassLoader 設置成系統的ClassLoader
總結
以上是生活随笔為你收集整理的android 加壳 方案,android加壳思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android自定义弹窗模仿微信,And
- 下一篇: android 骨架屏刷新动画,ios