Android反编译的那些事[工具篇]

  • 内容
  • 评论
  • 相关

前言

在我们使用app的时候总会好奇,我艹,这么炫的动画怎么做的或者觉得E文版看着不舒服想给app换语言甚至看看别人app的实现思路,这个时候我们就可以选择反编译app,抱着学习的心态尝试查看下"源码"。

快速查看apk源码

apk源码主要在classes.dex中,解压apk文件即可得到这个,然后通过jadx即可将dex文件转换为jar文件,从而可以得到源码。这里主要给出一个基于jadx的封装工具.

下载地址:jadx-han_0.6.4

解压后双击\bin\jadx-gui.bat即可。

最新版本可以查看git地址

反编译apk

  • 工具

apktool_2.2.2.jar:下载地址

git地址:https://github.com/iBotPeaches/Apktool

  • 命令格式

反编译apkjava -jar [apktool的绝对地址] d [apk绝对地址] -o [输出目录]

eg:

回编译apk:java -jar apktool.jar b [反编译出来的目录]

eg:

生成的apk文件在此文件夹中的dist文件夹中,中间文件入dex文件等在build文件夹下,本例中为D:\output\dist 以及D:\output\build文件夹。

apk的签名

通过上面的反编译以及回编译,我们只能得到一个未签名的apk文件,未签名的apk在Android系统中是无法安装的,所以这里我们要生成一个签名文件用来给apk签名。查看apk是否签名的方法是用解压软件打开apk文件,里面有/META-INF/文件夹则说明为签名文件。

  • 工具

keytool:获取地址:在jdk安装目录的bin目录下面,比如: \jdk1.7.0_25\bin\

  • 命令格式

生成签名文件:keytool -genkey -alias [签名的用户名-keyalg RSA -validity [签名的有效期]-keystore [签名文件的文件名-outfile [签名文件的存放位置]

eg:

输入此条命令则会继续输入其他需要的信息:

给apk文件签名:

工具: jarsigner

获取地址:在jdk安装目录的bin目录下面,比如: \jdk1.7.0_25\bin\

语法:jarsigner -verbose -keystore [私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [签名的用户名]

验证签名是否正确

命令: jarsigner -verify [待验证的apk]

对apk进行4k对齐优化

关于4K对齐为什么能优化不是本篇博客的重点,所以这里只给出命令,需要了解详情的请自行百度。

4K对齐apk

工具: zipalign 获取地址Android SDK/tools文件夹下 如F:\adt-bundle-windows-x86_64-20131030\sdk\tools\

zipalign -v 4 [旧apk] [新apk]

检测apk是否4K对齐

zipalign -c -v 4 [apk路径]

查看apk的签名信息

有时候我们需要接入三方服务比如百度地图的时候,需要使用包名+签名的sha1值才行,所以这里给出一种方式获取签名详细信息。

用压缩软件解压apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件,然后使用下面的命令就可以得到应用的签名信息了。

keytool -printcert -file  f:/META-INF/CERT.RSA

评论

0条评论

发表评论

邮箱地址不会被公开。