惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 聂微东
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
云风的 BLOG
云风的 BLOG
量子位
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
博客园 - 司徒正美
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods
简单的反编译 apk
ATP · 2020-06-03 · via atpX

通过反编译 apk,获取一些好看的素材,并有可能学习到大佬们优秀的代码🐶

准备工作

  1. Java 环境
  2. 反编译工具
  • Apktool:获取资源文件,提取图片文件,布局文件,还有一些 XML 的资源文件
  • dex2jar:将 APK 反编译成 Java 源码(将 classes.dex 转化为 jar 文件)
  • jd-gui:查看转换后的 jar 文件

反编译

将需要反编译的 apk 与需要的反编译工具放到同一个文件目录下,cmd 中输入:

apktool.bat d -f [apk文件] [输出文件夹]
  • -f,如果目标文件夹已存在,则强制删除现有文件夹
  • -o,指定解码目标文件夹的名称(默认使用 APK 文件的名字来命名目标文件夹)
  • -s,不反编译 dex 文件,也就是说 classes.dex 文件会被保留(默认会将 dex 文件解码成 smali 文件)。
  • -r,不反编译资源文件,也就是说 resources.arsc 文件会被保留

之后打开相应文件夹,即可看到 apk 的资源文件。

apk 解压后中的 classes.dex 复制到 dex2jar.bat 所在的目录下,cmd 中输入:

d2j-dex2jar.bat classes.dex

会生成一个 jar 包,之后用 jd-gui.exe 打开即可看见里面的代码,一般没有混淆代码的都可以看到所有参数命名,如果要修改代码的话比较麻烦,这里不再讨论。

重新打包

在 apktool 所在目录下,cmd 中输入:

apktool.bat b [文件夹名]

之后文件目中会新增 build 和 dist 文件夹,新打包的 apk 会保存在 dist 中

签名

管理员模式运行 cmd 进入 java 目录下的 bin 文件夹 (C:\Program Files\Java\jdk1.8.0_251),输入以下命令生成 keystore 文件

keytool -genkey -alias bdk.keystore -keyalg RSA -validity 20000 -keystore bdk.keystore
  • genkey,产生证书文件
  • alias,产生别名
  • keystore,指定密钥库的 .keystore 文件中
  • keyalg,指定密钥的算法,这里指定为 RSA (非对称密钥算法)
  • validity,为证书有效天数

按提示随便输入相关信息后按 Y 确定。 将生成的 keystore 文件放到 apk 文件同一目录下输入:

jarsigner -verbose -keystore bdk.keystore [apk文件] bdk.keystore

这样 apk 就重新打包好了。