使用apktool_2.3.4.jar进行apk的反编译、smali代码修改、重新打包及签名

一、反编译

1.将apktool_2.3.4.jar与要反编译的apk放在同一文件夹内

(apktool官网下载地址:iBotPeaches / Apktool / Downloads — Bitbuckethttps://bitbucket.org/iBotPeaches/apktool/downloads/

2.启动cmd并将目录切换至当前目录中

3.使用反编译命令:java -jar apktool_2.3.4.jar(即你的apktool的名称) d -f zdt.apk(即你的apk名称) -o source(存放反编译后代码的文件夹名称,没有会在当前目录自动生成)

 

红框部分虽不影响操作,但是最好将其目录建立出来

 

如果报出以上错误,请更换2.4.1及以上版本的apktool,并使用下面的命令重新反编译:

java -jar apktool_2.3.4.jar d -f com.ys.swty.apk –only-main-classes -o source

4.根据自身需求修改source/smali中的代码(如何阅读smali中的代码及修改自行百度)

二、生成未签名包

1.重新打包生成未签名的包,使用命令:java -jar apktool_2.3.4.jar b source(存放反编译代码的文件名称) -o zdt_unsign.apk(打包生成apk的名称)

 上面为经典报错,我是被它gank了一波,问题分享及解决方案:
   这些error信息告诉我们/res/values/public.xml文件中第“数字”行出错,里面指定的对象在res目录下不存在。
   这是精简或图片资源引用错误引起的,比如某张图片在其他dpi里定义了,在当前保留的dpi里却用不到,当我们把它删除后,并没有删除它在public.xml文件中的定义,程序回编译的时候按照public.xml去找它却已经找不到了,于是就报错了。
   解决的方法就是打开public.xml文件,删除相应的行即可

删除后重新允许打包命令,运行结果如下:

zdt_unsign.apk成功打包生成了

三、给未签名包签名

1.生成签名证书,使用命令:keytool -genkeypair -alias zdtkeyalias(签名证书别名) -keyalg RSA -validity 100 -keystore zdtsigned.jks(签名整数文件名称)

部分命令参数如下截图:

 命令执行结果如下:

红框部分必须要有,后面给之前生成的未签名包签名时会用到 

2. 给zdt_unsign.apk签名,使用命令:jarsigner -verbose -keystore zdtsigned.jks(签名证书文件名称) -signedjar zdt_signed.apk(要生成的签名包名称) zdt_unsign.apk(待签名的包名称) zdtkeyalias(签名证书的别名,之前生成签名证书时提到的)

得到如上结果,即说明你已成功反编译目标apk、修改其代码、并打包签名生成了新的可安装的apk文件了! 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: apktool是一个用于反编译重新编译Android应用程序的工具。它帮助开发人员了解和修改应用程序的内部结构。apktool_2.6.1.jarapktool的一个特定版本。 使用apktool_2.6.1.jar的一般步骤如下: 1. 下载apktool_2.6.1.jar文件和与之兼容的Java运行环境(JRE)。 2. 打开终端或命令行窗口,并导航到包含apktool_2.6.1.jar文件的目录。 3. 接下来,你可以使用以下命令行选项之一来使用apktool_2.6.1.jar: - "apktool d <apk路径>":这个命令用于反编译指定的APK文件。APK文件将被解压缩到当前目录的子目录中。你可以在这个子目录中找到应用程序的资源、XML文件、源代码等。 - "apktool b <反编译目录>":这个命令用于重新编译先前反编译的应用程序。指定的反编译目录将被重新打包成一个新的APK文件。 4. 根据你的需求,你可以在反编译期间使用其他选项,如"--no-src"(不反编译代码)和"--force"(强制覆盖目标文件)。 总而言之,apktool_2.6.1.jar是一个功能强大的工具,它允许你反编译重新编译Android应用程序。它提供了命令行界面,使你能够轻松地修改应用程序的资源、XML文件和源代码。通过使用适当的命令行选项,你可以定制反编译重新编译过程,以满足你的具体需求。 ### 回答2: apktool_2.6.1.jar 是一个用于反编译和编译Android APK文件的工具。以下是它的一些用法: 1. 反编译APK文件:通过运行以下命令,可以将APK文件解析为其源代码和资源文件: java -jar apktool_2.6.1.jar d filename.apk 这将在当前目录下创建一个新的文件夹,其中包含解析出的源代码和资源文件。 2. 编辑应用程序代码:在反编译APK文件后,可以编辑解析出的源代码。你可以使用任何文本编辑器进行修改,以实现对应用程序的必要更改。 3. 重新编译APK文件:在完成对源代码修改后,可以重新编译APK文件,使用以下命令: java -jar apktool_2.6.1.jar b foldername "foldername" 是解析出的源代码文件夹的名称。这将重新打包和编译应用程序,并在当前目录中生成一个新的APK文件。 4. 安装APK文件:你可以使用adb工具或将生成的APK文件传输到你的Android设备上,并通过点击进行安装。 需要注意的是,使用apktool_2.6.1.jar 时需要先安装Java运行环境。此外,apktool还具有其他选项和功能,可以通过运行"java -jar apktool_2.6.1.jar"命令查看帮助文档以获取更多信息和用法示例。 总之,apktool_2.6.1.jar 是一个方便的工具,可以帮助开发人员进行Android APK文件的反编译和编译,以便进行应用程序的修改和定制。 ### 回答3: apktool_2.6.1.jar 是一种用于反编译和编译APK文件的工具。下面是一些关于使用 apktool_2.6.1.jar 的常见用法说明: 1. 反编译使用以下命令将 APK 文件反编译为其包含的资源文件和 Smali 代码java -jar apktool_2.6.1.jar d <apk文件路径> -o <输出目录> 例如:java -jar apktool_2.6.1.jar d app.apk -o output/ 反编译后的资源文件将会存储在 output/ 目录中,可以在这里查看和修改应用程序的资源。 2. 编译:使用以下命令将修改后的资源文件和 Smali 代码编译回 APK 文件: java -jar apktool_2.6.1.jar b <输入目录> -o <输出APK文件路径> 例如:java -jar apktool_2.6.1.jar b output/ -o modified_app.apk 编译过程会将修改后的资源文件和 Smali 代码重新打包为一个 APK 文件,保存到指定的输出路径中。 3. 重新签名:由于反编译和编译过程会破坏应用程序的签名,所以需要重新APK 文件进行签名。可以使用 Android SDK 中的工具进行签名,例如 jarsigner。 例如:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <你的密钥库文件路径> -storepass <密钥库密码> modified_app.apk <密钥库别名> 这样,重新签名后的 APK 文件就可以安装在 Android 设备上了。 这些是 apktool_2.6.1.jar 常见的用法。通过反编译和编译 APK 文件,可以查看和修改应用程序的源码、资源和配置文件等内容,帮助开发人员进行应用程序的逆向工程或定制化开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值