反编译,改应用名,再打包、签名。原来是这样

1,255 阅读3分钟

转载请注明出处:juejin.cn/post/684490…

写在开头

三月份的事情比较多,导致都没有写出自认为还算优质的博文。

其实Amigo学习第三篇都列好大纲了,但希望能分享得更详细一些,学得也更深入一些,加上公司的任务重了...

幸得今天有点时间,接的活也快收尾了。分享一下在项目中遇到的反编译工具的使用。
反编译大家应该都不陌生,刚好最近对一个安卓包进行了反编译-改应用名-再打包-再签名-发布,这样一系列的操作。于是决定记录下来,(技术含量不大)主要作学习、总结及备忘之用。

反编译资源文件

  • apktool 获得程序的源代码、图片、XML配置、语言资源等文件。
  • dex2jar 将 classes.dex 转为 jar文件。
  • jd-gui 查看 jar 文件。

以上工具都是可以搜索并下载得到的。

下载后,解压到本地磁盘中,
在 Windows 系统中,按下 “Windows + R” 组合键,
输入 “cmd” 确定,
打开命令行程序默认路径应该是在 C 盘,如果你的反编译工具,解压后的路径在其他盘符,如 D 盘,可输入 “D:回车”,可以跳转到 D 盘 的根目录下。
再输入 "cd D:\download\apktool" 定位到 apktool 文件夹下,

apktool文件夹

将需要反编译的 apk 文件拷贝到 apktool 文件夹路径下。

输入指令:apktool d -f [带反编译的 apk 文件] -o [反编译后存放的文件夹]

如:apktool d -f abc.apk -o abc

如果你只需要改应用名或其他资源文件,那么你可以去查看 [反编译后存放的文件夹]。

反编译后存放的文件夹

如果你想看到应用的源代码,继续...

反编译源代码

下载后,解压到本地磁盘中,
再输入 "cd D:\download\dex2jar" 定位到 dex2jar 文件夹下,

和上一步的操作类似。

解压 abc.apk ,将 classes.dex 拷贝到 dex2jar 文件夹下。

classes.dex

CMD 中输入 dex2jar.bat classes.dex

一顿输出后...在 dex2jar 文件夹下会看到 classes_dex2jar.jar 文件
用 jd-gui 工具可以打开查看,放在 Android Studio 中也可查看。

classes_dex2jar

这样就可以看到安卓应用的源代码了,但大部分应用都会混淆代码,所看到的变量名、类名等都是用 a-z 的字母表示。不过到了这一步,你就可以做很多事情了。比如可以结合 Fiddler 做一些事情;可以看到大致的工程结构;可以看到核心代码的大致实现思路等...

再打包

修改了应用名之后,重新打包,如下操作。

定位到 apktool

输入 apktool b abc

abc 是反编译后的存放文件夹

dist

重新打包后生成的 apk 文件在 abc\dist 中。

再签名

反编译 - 修改应用名 - 再打包,然后是签名

这里就不是 apktool 工具了,而是用的 jdk\bin 下的工具 jarsinger.exe

cd 到 你的 jdk\bin 下,输入:

jarsigner -verbose -keystore [签名文件地址] -signedjar [签名后 apk文件地址] [待签名 apk文件地址] [keystore 的 Alias]

如:jarsigner -verbose -keystore D:\abc.keystore -signedjar D:\abc_signed.apk D:\abc.apk abcAlias

一顿疯狂输出后...

jarsigner

这里没有写明有效期限,所以是默认时间。

写在后头

想了解 apktool 更多其他内容
定位到 apktool 文件夹,在 cmd 中输入 apktool
以获取帮助

最后附上 apktool.jar 的下载地址 点击打开

这是国外的网站,打开很慢。
如果不能下载,试试用梯子。
如果梯子还不能下载,文章尾部有群号,可以 直接找我要~

推荐阅读:Android 热修复 - 各框架原理学习及对比
Android 热修复 - Tinker 实现及踩过的坑

记录在此,仅为学习!
感谢您的阅读!欢迎指正!