码迷,mamicode.com
首页 > 移动开发 > 详细

Ubuntu下Android APK反编译与重新编译

时间:2015-04-22 07:07:33      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

1.反编译APK文件

反编译APK需要利用ApkTool工具,下载地址

https://bitbucket.org/iBotPeaches/apktool/downloads

http://ibotpeaches.github.io/Apktool/install/

技术分享

 

技术分享

 

 

 

 

 

 

 

 

1,按照安装说明,先右键下载apktool的脚本,再下载最新的apktool

2,先确保你的系统安装了32位平台(依赖)库,如果你ubuntu13.10后版本,可以试试

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

 

3,将下载的apktool_2.0.0.jar改名为apktool.jar

4,将两个文件拷贝到/usr/local/bin目录,这一步相当于配置环境变量了,可以在任意目录运行

sudo cp -i apktool.jar /usr/local/bin
sudo cp -i apktool /usr/local/bin

 

5,添加权限

sudo chmod +x apktool 
sudo chmod +x apktool.jar 

 

上面几步完成后就可以找个APK 反编译下了

 

命令:apktool d (apk路径) -o(输出文件夹)

注意:一定要加 -o这个参数,否则命令报错

 技术分享

反编译成功后就会在outdir目录下生成一系列目录,我们可以通过修改smali文件代码实现apk的修改。

技术分享

通常做法是在res资源目录获取到某资源的索引值,然后在smali目录中搜索含有该索引的.smali文件

grep -r 0x7f0c004e /home/lionel/outdir/smali/*

 

该命令是在指定目录下遍历文件和子文件夹中包含 ‘0x7f0c004e‘的文件

技术分享

 

2.重新打包APK文件
apktool b /home/lionel/outdir

 

编译指定目录下文件,默认生成的apk在同目录的dist文件夹中

技术分享

 

但现在还不能安装在手机里,新生成的apk需要签名

keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000

 

 keytool -genkey -v -keystore (生成的密钥名称) -alias (密钥别名) -keyalg RSA -validity (有效期)

 

技术分享

jarsigner -verbose -keystore android.keystore -signedjar /home/lionel/outdir/MobilesSafe.apk /home/lionel/outdir/dist/MobilesSafe.apk android

 

 jarsigner -verbose -keystore (上面生成的密钥名称) -signedjar (签名后的APK路径)    (签名前的APK路径) (密钥android.keystore的别名)

技术分享

 

签名后发现安装时仍提示INSTALL_PARSE_FAILED_NO_CERTIFICATES

技术分享

 

解决方法:添加参数-digestalg SHA1 -sigalg MD5withRSA

 

jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore android.keystore -signedjar /home/lionel/outdir/MobilesSafe.apk /home/lionel/outdir/dist/MobilesSafe.apk android

 

 

技术分享 

 

 

安装成功!

Ubuntu下Android APK反编译与重新编译

标签:

原文地址:http://www.cnblogs.com/liujingg/p/4446235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!