有关于apktool的使用的一些心得

本文详细介绍了如何配置Java环境,包括JAVA_HOME、CLASSPATH和PATH的设置。此外,还提供了下载apktool工具的方法,并指导了如何使用该工具对APK文件进行解压、反编译及重新编译。特别提到了反编译过程中可能出现的错误及解决办法。

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

<span style="font-family: Arial, Helvetica, sans-serif;">1.配置Java的环境</span>

1)JAVA_HOME配置:

2)C:\Program Files\Java\jdk1.7.0_51;CLATHPATH配置:C:\Program Files\Java\jdk1.7.0_51\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_51\lib\tools.jar;.注意:最后有“.”

3)path配置:C:\Program Files\Java\jre7\bin;C:\Program Files\Java\jdk1.7.0_51\bin;

可以就个人情况而言。

2.下载apktool工具:http://www.cngr.cn/dir/209/sjrj/2012121291256.html (只供参考)

3.解压apktool包,将apktool.jar、aapt.exe、apktool.bat拷贝到根目录的apktool文件中(本人是在E盘中创建了一个apktool文件夹),如果要进行签名则需要使用signapk.jar、testkey.pk8、testkey.x509.pem来进行签名。

4.将您想要反编译的apk文件拷贝到apktool文件夹中,使用命令行进行反编译。


如果再次进行反编译则会出现:


则需要使用:apktool d -f framebyframe.apk进行覆盖反编译


5.将反编译的文件重新回编译成apk文件,则需要:


6.进行签名则需要:


7.遇到的问题:

E:\apktool>apktool d framebyframe.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Administrator\apktool\framework\1.
apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec:
0x01030119
        at brut.androlib.res.data.ResPackage.getResSpec(ResPackage.java:61)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:58)
        at brut.androlib.res.data.ResTable.getResSpec(ResTable.java:54)
        at brut.androlib.res.data.value.ResReferenceValue.getReferent(ResReferen
ceValue.java:62)
        at brut.androlib.res.data.value.ResReferenceValue.encodeAsResXml(ResRefe
renceValue.java:46)
        at brut.androlib.res.data.value.ResScalarValue.encodeAsResXmlAttr(ResSca
larValue.java:44)
        at brut.androlib.res.data.value.ResStyleValue.serializeToResValuesXml(Re
sStyleValue.java:48)
        at brut.androlib.res.data.value.ResBagValue.serializeToResValuesXml(ResB
agValue.java:40)
        at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResour
ces.java:440)
        at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:243
)
        at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:115)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
        at brut.apktool.Main.cmdDecode(Main.java:146)
        at brut.apktool.Main.main(Main.java:77)
将C:\Users\Administrator中apktool文件删除即可解决。

未完待续。。。。。。。。。

使用 Apktool 进行 APK 的反编译和构建是一种常见的 Android 逆向工程方法,适用于查看和分析 APK 的资源文件、清单文件(AndroidManifest.xml)以及 Smali 代码。以下是详细的使用教程: ### 反编译 APK 1. **准备工具** - 下载 Apktool,建议使用最新版本(如 apktool_2.4.1.jar),并将其重命名为 `apktool.jar`。 - 将 `apktool.jar` 与 `dex2jar` 和 `JD-GUI` 工具放在同一个文件夹中,例如 `D:/apkDecompile`,以便后续操作[^1]。 2. **测试 Apktool 环境** - 打开命令行工具(Win + R -> `cmd` -> Enter),并通过 `cd` 命令定位到 `apktool.jar` 所在的文件夹。 - 输入以下命令测试 Apktool 是否安装成功: ```bash java -jar apktool.jar ``` 如果出现 Apktool 的帮助信息,则表示配置成功。 3. **反编译 APK** - 使用以下命令对 APK 进行反编译: ```bash java -jar apktool.jar d -f com.uustock.dayi.apk -o app ``` 其中 `d` 表示反编译模式,`-f` 表示强制覆盖输出目录,`com.uustock.dayi.apk` 是目标 APK 文件名,`-o app` 表示输出目录为 `app`[^1]。 4. **查看反编译结果** - 反编译完成后,会在 `app` 文件夹中生成多个文件和目录,包括 `res`(资源文件)、`AndroidManifest.xml`(清单文件)以及 `smali` 文件夹(包含 Smali 代码)[^3]。 ### 构建 APK 1. **修改资源或代码** - 在反编译后的 `app` 文件夹中,可以对资源文件(如图片、XML 配置等)或 `smali` 文件进行修改。 2. **重新构建 APK** - 使用以下命令重新构建 APK: ```bash java -jar apktool.jar b app -o new_app.apk ``` 其中 `b` 表示构建模式,`app` 是修改后的文件夹,`-o new_app.apk` 表示输出的 APK 文件名[^1]。 3. **签名 APK** - 构建完成的 APK 需要进行签名后才能安装到设备上。可以使用 `jarsigner` 或其他 APK 签名工具对 APK 进行签名。 ### 注意事项 - **清单文件问题** 在某些情况下,使用 Apktool 反编译 APK 后,可能会出现 `AndroidManifest.xml` 文件丢失部分信息的问题,例如渠道号(channel)、版本号(versionCode)和版本名(versionName)等信息可能无法正确还原[^2]。 - **代码查看与反混淆** 如果需要查看 APK 中的 Java 源代码,可以通过 `dex2jar` 将 `classes.dex` 文件转换为 `.jar` 格式,再使用 `JD-GUI` 工具打开查看源码。如果 APK 经过混淆,看到的类名和方法名可能是 `a`、`b` 等形式[^3]。 - **重签名问题** 反编译并重新构建后的 APK 需要进行重签名才能在设备上正常运行,否则会提示“未安装”或“签名冲突”等错误[^2]。 ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值