招生熱線
0755-86191118 0755-86191118
我的位置: 首頁(yè) > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > 深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)

深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)

2016-08-31 16:14:15
來(lái)源:北大青鳥(niǎo)深圳嘉華學(xué)校
[導(dǎo)讀] 這里北大青鳥(niǎo)深圳嘉華老師將分享一些關(guān)于安卓開(kāi)發(fā)教程中的加殼技術(shù)。希望能對(duì)想學(xué)安卓開(kāi)發(fā)、或者是安卓開(kāi)發(fā)工程師們有所幫助。一、加殼技術(shù)原理所謂apk的加殼技術(shù)和pc exe的加殼原理一樣,就是在程序的外面再包裹上另外一段代碼,保護(hù)里面的代碼不被非法修改或反編譯,在程序運(yùn)行的
這里北大青鳥(niǎo)深圳嘉華老師將分享一些關(guān)于安卓開(kāi)發(fā)教程中的加殼技術(shù)。希望能對(duì)想學(xué)安卓開(kāi)發(fā)、或者是安卓開(kāi)發(fā)工程師們有所幫助。
一、加殼技術(shù)原理
所謂apk的加殼技術(shù)和pc exe的加殼原理一樣,就是在程序的外面再包裹上另外一段代碼,保護(hù)里面的代碼不被非法修改或反編譯,在程序運(yùn)行的時(shí)候優(yōu)先取得程序的控制權(quán)做一些我們自己想做的工作。
PC exe的加殼過(guò)程如下:
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
二、android apk加殼實(shí)現(xiàn)
要想實(shí)現(xiàn)加殼需要解決的技術(shù)點(diǎn)如下:
(1)怎么第一時(shí)間執(zhí)行我們的加殼程序?
首先根據(jù)上面的原理我們?cè)赼pk中要想優(yōu)先取得程序的控制權(quán)作為android apk的開(kāi)發(fā)人員都知道Application會(huì)被系統(tǒng)第一時(shí)間調(diào)用而我們的程序也會(huì)放在這里執(zhí)行。
(2)怎么將我們的加殼程序和原有的android apk文件合并到一起?
我們知道android apk最終會(huì)打包生成dex文件,我們可以將我們的程序生成dex文件后,將我們要進(jìn)行加殼的apk和我們dex文件合并成一個(gè)文件,然后修改dex文件頭中的checksum、signature 和file_size的信息,并且要附加加殼的apk的長(zhǎng)度信息在dex文件中,以便我們進(jìn)行解殼保證原來(lái)apk的正常運(yùn)行。加完殼后整個(gè)文件的結(jié)構(gòu)如下:
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
(3)怎么將原來(lái)的apk正常的運(yùn)行起來(lái)?
按照(2)中的合并方式在當(dāng)我們的程序首先運(yùn)行起來(lái)后,逆向讀取dex文件獲取原來(lái)的apk文件通過(guò)DexClassLoader動(dòng)態(tài)加載。
具體實(shí)現(xiàn)如下:
(1)修改原來(lái)apk的AndroidMainfest.xml文件,假如原來(lái)apk的AndroidMainfest.xml文件內(nèi)容如下:
1.  <application  
2. android:icon="@drawable/ic_launcher"  
3. android:label="@string/app_name"  
4. android:theme="@style/AppTheme" android:name="com.android.MyApplication" >  
5. </application>
修改后的內(nèi)容如下:
1. <application  
2.android:icon="@drawable/ic_launcher"  
3. android:label="@string/app_name"  
4. android:theme="@style/AppTheme" android:name="com.android.shellApplication" >  
5.<meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.android.MyApplication"/>
6. </application>
com.android.shellApplication這個(gè)就是我們的程序的的application的名稱,而
7.<meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.android.MyApplication"/>
是原來(lái)的apk的application名稱。
(2)合并文件代碼實(shí)現(xiàn)如下:
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
  1. 在我們的程序中加載運(yùn)行原來(lái)的apk文件,代碼如下:
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
深圳嘉華學(xué)校安卓開(kāi)發(fā)教程之加殼技術(shù)
 
 
評(píng)論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲精品亚洲人成在线观看麻豆 | 亚洲女性性爱视频在线观看 | 一级少妇全黄性色生活片 | 色婷婷亚洲一区二区三区 | 制服丝袜中文字幕有码中出 | 中文字幕乱码亚洲无线码按摩 |