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

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

 

 

 

 

 

安装成功!

posted @ 2015-04-22 04:10  coffeesuke  阅读(928)  评论(0编辑  收藏  举报