一、apktools进行反编译1.首先安装需要JAVA环境(JDK和JRE) 设置JAVA环境变量 CLASSPATH %JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar JAVA_HOME C:Program FilesJavajdk1.8.0_ Path %JAVA_HOME%bin;C:Program FilesJavajre1.8.0_bin2.下载apktools并解压(1)下载apktool_2.0.0rc4.jar和apktool-install-windows-r-brut1.tar.bz2 地址: 反编译命令:usage: apktool d[ecode] [options] <file_apk> -f,--force Force delete destination directory. -o,--output <dir> The name of folder that gets written. Default is apk.ou t -p,--frame-path <dir> Uses framework files located in <dir>. -r,--no-res Do not decode resources. -s,--no-src Do not decode sources. -t,--frame-tag <tag> Uses framework files tagged by <tag>. 打包命令:usage: apktool b[uild] [options] <app_path> -f,--force-all Skip changes detection and build all files. -o,--output <dir> The name of apk that gets written. Default is dist/name .apk(2)将apk应用存放到当前目录(这里假设为D盘根目录),反编译然后,在当前目录看到反编译的文件夹""二、apktools进行重新打包 当我们对破解后的apk修改后,可以重新打包回APK文件,执行命令:apktool b <decode_dir>,然后我们在当前目录下看到打包好的APK。由于apk还没有签名,一般是无法安装的。此时,可以通过keytool工具生成证书(.keystore文件),最后使用jarsigner工具对apk应用进行签名即可。具体步骤如下:1.使用apktool重写打包成apk 将破解后修改的应用源码重写打包回apk,主要使用aapt.exe 、apktool.jar 两个工具。需要注意的是,最好是从谷歌官方网站下载最新版的aapt.exe(也可从Android SDK的build-tools目录下拷贝)和apktool工具。2.使用keytool工具生成签名证书 keytool -genkey -v -keystore .keystore-alias .keystore -keyalg RSA -validity 说明: 1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中; 2)-keystore .keystore 表示生成的数字证书的文件名为“.keystore”; 3)-alias .keystore 表示证书的别名为“.keystore”,当然可以不和上面的文件名一样; 4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA; 5)-validity 表示该数字证书的有效期为天,意味着天之后该证书将失效在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下: 注:执行命令成功,系统会在当前目录(C:Usersjiangdongguo)生成一个".keystore"的证书。3.使用jarsigner工具为Android应用程序签名 jarsigner -verbose -keystore .keystore -signedjar_signed.apk .apk .keystore说明: 1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中; 2)-keystore .keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下; 3)-signedjar _signed.apk .apk 表示给notepad.apk文件签名,签名后的文件名称为_signed.apk; 4)最后面的.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称注释:keytool工具:该工具位于jdk安装路径的bin目录下;jarsigner工具:该工具位于jdk安装路径的bin目录下;
推荐整理分享Android应用程序破解(反编译)(Android应用程序可以直接在ios中安装运行吗),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:Android应用程序开发,android应用程序包下载安装,Android应用程序可以直接在ios中安装运行吗,Android应用程序包是什么,android应用程序的后缀名,android应用程序的主要语言是,android应用程序的四大组件是什么,android应用程序的四大组件是什么,内容如对您有帮助,希望把文章链接给更多的朋友!
三、常见问题
1.关于安装和管理framework文件
1. $ apktool d HtcContacts.apk 2. I: Loading resource table... 3. I: Decoding resources... 4. I: Loading resource table from file: /home/brutall/apktool/framework/1.apk 5. W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x 6. ... 7. W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x 8. Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info..........W: Could not decode attr value, using undecoded value instead: ns=android, name=hardwareAccelerated, value=0xffffffff...
原因:C:Usersjiangdongguoapktoolframework1.apk版本过低。在使用apktool进行反编译前不需要做其他的事情,然而由于有的厂商,如HTC,三星等,他们定制了framework文件并且在他们的系统应用中使用了这些文件,为了能正常的反编译这些apk文件,你就必须从你的设备中拷贝出framework文件并且安装到apktool中。
解决方案:
这里假设framwork-res.apk文件都放在d盘根目录
2.出现public.xml资源没有定义错误

原因:
其实在编译过程中会遇到很多其他的问题,大多数是由于删除、修改、添加了资源后,没有对应的修改resvaluespublic.xml文件而造成的。
解决方案
(1)public.xml文件中的资源不能重复定义。
(2)public.xml文件中的任意两个资源的ID不能一样
(3)public.xml文件中定义的资源必须能找到该文件(如果你删除了一些文件,必须要对应的删除public.xml中的该行)
(4)public.xml文件中尽可能全面(如果你添加了某资源,最好确保在public.xml中也添加)
(5)public.xml文件中的资源的ID尽可能连续(当你为添加的文件添加声明时,赋予的ID尽可能是连续的)
总结:很多时候都是因为apktool版本过低导致的错误,为此我们需要去谷歌官网下载最新版的apktool和aapt.exe工具,然后直接放在系统盘(C)的Windows目录下即可。
参考:
与AndroidStudio的第一次接触 自从学习Android以来,一直使用的都是Eclipse。突然google不再对Eclipse进行升级了,最高支持到Android5.1,对于5.1以上的Eclipse就无能为力了。就只能使用Androi
Android进阶(十二)Fragment VS Activity FragmentVSActivityAndroid是在Android3.0(APIlevel)开始引入Fragment的。可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自
Android布局的优化 mAndroid常用布局样式使用量从高到低:RelativeLayout(相对布局)LinearLayout(线性布局)FrameLayout(帧布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)布局原则:尽量多