要root,root过后进入RE文件管理器,找到system/app把这两个文件考进去,然后长按这两个文件弹出来一个选项栏,点击权限,只把第一竖行的三个和第二竖行的第一个打勾,再保存,然后重启手机,会看到安卓正在升级,然后文件管理器就回来了
编译开源GIT上的build/tools /dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤: 将dexopt-wrapper用RE管理器放到手机的/data/local目录中,并改权限为rwxr-xr-x,在电脑使用adb shell执行linux命令行,使用cd命令进入/data/local目录,命令如下:
adb shell(回车)
su(回车)
cd /data/local(回车)
/dexopt-wrapper apk odex(回车)代表你要做的软件名,前后要绝对一致。
或者手机端用终端(推荐):
su(回车)
cd /data/local(回车)
/dexopt-wrapper apk odex(回车)代表你要做的软件名,前后要绝对一致。
成功之后将apk和odex文件都拷贝到system\app文件夹下替换就可以了。
版权声明:本文为博主原创文章,若转载请注明出处:http://blogcsdnnet/pvlking
首先加壳的方法和代码都是从Jack_Jia的博客学习的。
详见:http://blogcsdnnet/jiazhijun/article/details/8678399
由于本人从c++开发直接跳到Android开发,没有对android进行系统的学习,看上面博客时还是有很多不理解的地方。本文把不理解的地方梳理一下,最后提供个测试源码(加了比较详细的注释)。希望对于跟我一样安卓基础不是太好的人有一定帮助。
正文:
apk加壳的目的(我的用途):增加apk静态分析的难度。(如果反编译的人知道是加壳的,可以在data/包名目录下 找到真正的apk。所以在壳上增加正常的代码的话可以增加迷惑性)
基础知识:ClassLoader:http://wwwiteyecom/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="comApplication"/>
comApplication 是我们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 copy
if (!dexFileexists())
{
dexFilecreateNewFile(); //在payload_odex文件夹内,创建payloadapk
// 读取程序classesdex文件
byte[] dexdata = thisreadDexFileFromApk();
// 分离出解壳后的apk文件已用于动态加载
thissplitPayLoadFromDex(dexdata);
}
demo地址:http://downloadcsdnnet/detail/pvlking/8302249
目前安卓手机主要采用以下几种方式升级:
1、使用手机自带的系统更新功能
在安卓手机的设置--关于手机中,可以看到当前安卓手机的系统版本,另外这里也有自动检测更新系统功能。
安卓手机自带的系统更新功能,其更新主要由手机厂商提供,不过使用该功能升级系统,需要下载不少升级文件,因此建议大家在Wifi环境下进行。
Ps:使用手机自带的系统更新功能仅对部分品牌手机比较实用,通常很多品牌手机的自带的升级功能,可升级的非常慢,并且无法更新到最新的安卓系统版本,因此一般也不建议采用该方式升级。
2、下载手机系统升级包
一般手机厂商官网都会更新一些系统文件包供用户下载升级,我们可以可以进入自己手机品牌官网下载中心,然后根据自己手机品牌型号,下载最新的系统更新升级包,下载存放在手机SD卡当中。
然后再进入手机设置,然后选择“关于手机”最后找到“系统更新”选项,之后在选择“存储卡升级”。如果D中有可用的升级包就会自动开始升级了。如果没有就会弹出以下提示,说明下载的升级包不可用。
Ps:去手机官网下载安卓升级包,对于一些知名手机比较实用,但对于很多一般的手机厂商,通常官网提供的升级版,也只是简答的升级,无法让我们手机升级到最新的安卓版本。
3、通过刷机升级安卓系统
对于安卓手机用户而言,热衷的还是刷机了,刷机是一种时下非常有效的升级安卓系统方法,网上也有很多安卓手机的ROM系统,并且更新很快,大家可以选择采用最新安卓系统内核去刷机,从而实现安卓系统的升级。
通过刷机升级安卓系统
通过刷机升级安卓手机系统,是目前最常见的升级方法,相比前面2种方法都是靠厂商的升级文件,其实并不靠谱,很多厂商一般除了系统有严重Bug外,一般都很少发布升级文件。
通过刷机升级安卓系统很简单,可以根据自己手机的品牌型号,找到适合自己手机的ROM系统,之后下载去刷机升级即可。另外目前也有很多一键刷机工具,如刷机精灵、刷机大师等等都可以一键检测安卓手机品牌型号,然后找到匹配的安卓系统,可以实现一键刷机。
欢迎分享,转载请注明来源:品搜搜测评网