Mac下反编译和重新编译打包APK

本文详细介绍使用dex2jar、apktool及jd-gui等工具反编译APK的方法,包括解码dex文件生成jar、还原资源文件及重新打包未签名的APK。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反编译APK需要的工具如下:
- dex2jar 这个工具用于将dex文件转换成jar文件
下载地址:http://sourceforge.net/projects/dex2jar/files/
- apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。
下载地址:http://ibotpeaches.github.io/Apktool/install/
- jd-gui 这个工具用于将jar文件转换成java代码
下载地址:http://jd.benow.ca/
在上面的网址中可以下载最新版本的工具。有些工具旧了,反编译过程可能会失败,所以建议保持最新的工具版本。
其中apktool和jd-gui有点和谐,所以我将它们打包放到了优快云服务器。点击下载

反编译代码

  1. 解压dex2jar压缩包。
  2. 终端中cd命令到dex2jar目录。
  3. 将apk文件改后缀apk为zip,将其中的classes.dex文件拷贝到dex2jar目录
  4. 在终端运行./d2j-dex2jar.sh classes.dex (出现Permission Denied异常,是哪个文件报的就改哪个文件的权限。比如我这里出现的是d2j_invoke.sh,修改权限即可:chmod 777 d2j_invoke.sh)
  5. 这样反编译代码成功,目录中会生成一个classes-dex2jar.jar文件,将这个文件用jd-gui打开,即可看到源码(可能给是混淆过的)。
    dex2jar

反编译资源

  1. 下载好apktool和apktool.jar(最新2.1.0)之后,将其拷贝到/usr/local/bin目录(如果有root权限)。
  2. chmod 保证apktool命令不会出现Permission Denied
  3. apktool d /xx/xx.apk
    apktool
    完成!这样阅读Manifest.xml以及drawable或anim中的xml文件不会是混淆的乱码了。

上图反编译过程中,会在/Users/dengpan/Library/apktool/framework/ 目录中生成一个1.apk的缓存文件,有时反编译失败,删除它再试试。

注意:当前terminal终端在哪个目录,那么apktool反编译的资源目录就在哪个目录下。

其中d是decode的意思,表示我们要对xx.apk这个文件进行解码。那除了这个基本用法之外,我们还可以再加上一些附加参数来控制decode的更多行为
- -f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
- -o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
- -s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
- -r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

重新打包

  1. 在刚反编译的目录,运行命令apktool b app-release -o app-release1.apk 即将反编译出来的文件重新在当前目录打包成了新的apk,这apk是未签名的,不能安装到机器上(提示解析包错误)。
    apktool-b
  2. 使用命令jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名 给apk签名。
    jarsigner
  3. 对齐APK。Android官方建议打包签名后apk进行一个对齐操作。将export PATH=${PATH}:/xxx/build-tools/23.0.2 添加到自己用户目录的.bash_profile中。然后执行zipalign 4 app-release1.apk app-release-align.apk

参考文章:http://blog.youkuaiyun.com/guolin_blog/article/details/49738023

### IntelliJ IDEA 中通义 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义 AI 相关的功能。这些功能可以帮助开发者更高效地编写代并提高生产力。 #### 安装通义插件 为了使用通义的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义服务 成功安装插件之后,还需要配置通义的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义辅助编程 一旦完成上述准备工作,就可以利用通义来进行智能编支持了。具体操作如下所示: ##### 自动补全代片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义解析这段代的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值