光明开业
首页 >手机网站 > 新闻 > 深圳嘉华学校安卓开发教...

深圳嘉华学校安卓开发教程之加壳技术

这里北大青鸟深圳嘉华老师将分享一些关于安卓开发教程中的加壳技术。希望能对想学安卓开发、或者是安卓开发工程师们有所帮助。
一、加壳技术原理
所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想做的工作。
PC exe的加壳过程如下:
深圳嘉华学校安卓开发教程之加壳技术
二、android apk加壳实现
要想实现加壳需要解决的技术点如下:
(1)怎么第一时间执行我们的加壳程序?
首先根据上面的原理我们在apk中要想优先取得程序的控制权作为android apk的开发人员都知道Application会被系统第一时间调用而我们的程序也会放在这里执行。
(2)怎么将我们的加壳程序和原有的android apk文件合并到一起?
我们知道android apk最终会打包生成dex文件,我们可以将我们的程序生成dex文件后,将我们要进行加壳的apk和我们dex文件合并成一个文件,然后修改dex文件头中的checksum、signature 和file_size的信息,并且要附加加壳的apk的长度信息在dex文件中,以便我们进行解壳保证原来apk的正常运行。加完壳后整个文件的结构如下:
深圳嘉华学校安卓开发教程之加壳技术
(3)怎么将原来的apk正常的运行起来?
按照(2)中的合并方式在当我们的程序首先运行起来后,逆向读取dex文件获取原来的apk文件通过DexClassLoader动态加载。
具体实现如下:
(1)修改原来apk的AndroidMainfest.xml文件,假如原来apk的AndroidMainfest.xml文件内容如下:
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>
修改后的内容如下:
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这个就是我们的程序的的application的名称,而
7.<meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.android.MyApplication"/>
是原来的apk的application名称。
(2)合并文件代码实现如下:
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
  1. 在我们的程序中加载运行原来的apk文件,代码如下:
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
深圳嘉华学校安卓开发教程之加壳技术
 
 
2016-08-31 16:20:14
相关热词搜索: 深圳安卓培训费用多少

其他资讯

又是一年高考毕业季,有人欢喜有人愁。考上憧憬的大学自然是好事...
2018-08-28
嘉华培训机构怎么样?嘉华培训学校地址在哪里?对于选择北大青鸟...
2018-09-07
4月22日下午,嘉华中心第五教室举行了招聘会,参加招聘会的企业...
2014-04-24
4月21日,北大青鸟深圳嘉华学校网络工程师专业第一季度月考表彰...
2017-04-22
7月13日,作为北大青鸟资深合作伙伴,嘉华教育集团总经理、总校...
2017-07-13
请大家将手机调成静音或者震动,我们的校友会历时大概两个小时,...
2018-10-16
申请嘉华免费学习机会
姓名:
电话:
我适合学IT技术吗?测一测揭晓答案