APK的反编译与回编译

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

APK的反编译和回编译过程相对比较多,而网上的资源没有那么全面,大都是拿某一个具体的过程进行讲述,如果想要大致学习,可以多看一些博客或者在GPT上搜索相关的步骤,再进行效率学习。
以下是我通过GPT搜索的相关步骤:
在这里插入图片描述

一、反编译APK文件

第一步:需要下载一个apktool.jar包
在这里插入图片描述
第二步:找到apktool.jar的路径,然后输入cmd,打开命令行工具
第三步:在命令行输入反编译命令

apktool d D:\AZ\test01\Test_Process01\app\release\app-release.apk

d 是反编译标识
D:\AZ\test01\Test_Process01\app\release\app-release.apk(是需要进行反编译的apk包)
第四步:得到对应的反编译内容(在apktool.jar的目录下可以看到)
在这里插入图片描述

二、回编译:

apktool b D:\AZ\apk_tools\app-release

b 回编译标识
D:\AZ\apk_tools\app-release(需要回编译文件目录 < 就是我们刚刚上面进行反编译成功后 生成的目录 >)
在这里插入图片描述

三、手动编译APK

android整体的编译打包流程图

图片来源
在这里插入图片描述

第一步:使用AS创建一个空项目(为了方便测试,才创建的空项目),或者是直接搬目标项目的Java,res和AndroidManifest.xml
在这里插入图片描述
第二步:我们使用aapt2命令行工具来编译项目的资源文件。打开终端,进入到项目的app/src/main/目录下,执行以下命令:

aapt2 compile -o ../res.zip --dir .

或者在该目录下创建一个文件夹:build(把生成的文件全部存储在里面)

aapt2 compile -o build/res.zip --dir res
  • aapt2: 这是 Android App Bundle Tool 的命令行工具,用于处理 Android 应用的资源和清单文件。
  • compile: 这是 aapt2 的一个子命令,用于编译资源文件。
  • o …/res.zip:
    这个选项指定了输出文件的路径和名称。-o 是 --output 的简写,它后面跟着的是生成的 ZIP 文件的路径。在这个例子中,…/res.zip 表示 ZIP 文件将被创建在当前目录的上一级目录中,并命名为 res.zip。
  • dir .
    这个选项指定了要编译的资源文件所在的目录。. 表示当前目录,所以这个命令将编译当前目录下的所有资源文件。

    在这里插入图片描述
    文件夹打开都是.flat格式文件
    在这里插入图片描述
    第三步:对资源进行链接
aapt2 link build/res.zip -I D:\software\Android\AndroidSdk\platforms\android-28\android.jar --java build --manifest AndroidManifest.xml -o build\app-debug.apk
  • build/res.zip: 这是将要生成的APK文件的名称。res是资源目录的缩写,zip表示将资源文件打包成一个zip文件。

  • I D:\software\Android\AndroidSdk\platforms\android-28\android.jar: 这个选项告诉aapt2使用android.jar文件作为Java类路径的入口点。这意味着aapt2会使用这个jar文件中定义的类来处理资源文件。

  • java build: 这个选项指定了要处理的资源文件的类型。在这个例子中,它指的是Java资源文件(.java文件)。

  • manifest AndroidManifest.xml: 这个选项指定了AndroidManifest.xml文件的路径。这个文件包含了应用的配置信息,如应用的名称、版本号、权限等。

  • o build\app-debug.apk: 这个选项指定了输出的APK文件的路径。在这个例子中,它将生成的APK文件放在build目录下,并命名为app-debug.apk。
    在这里插入图片描述
    第四步:把生成的R.java文件拷贝到项目代码下
    在这里插入图片描述
    第五步:编译java文件(要引入libs下对应的依赖)

javac -d build -cp "D:\software\Android\AndroidSdk\platforms\android-28\android.jar;D:\AZ\AggregationsSDK\sswlUnifySdk\SswlUnifySdkDemo\libs\android-support-v4.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\xxx-obuscate-v2.0.65.jar;D:\AZ\xxx\xxx\xxx\libs\test-sdk-v1.0.65.aar;" -encoding UTF-8 java/com/xxx/demo/*.java

在这里插入图片描述
得到对应.class文件
![(https://img-blog.csdnimg.cn/direct/143f80c2362446bb828cbdcc75c2d8c7.png)
第六步:生成Dex文件

d8 --output build --lib D:\software\Android\AndroidSdk\platforms\android-28\android.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\android-support-v4.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\xxx-obuscate-v2.0.65.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\test-sdk-v1.0.65.aar build/com/xxx/demo/*.class

在这里插入图片描述
第七步:将dex文件放入apk文件中
我们要调用zip命令,这里的zip也就是我们常用的解压缩软件,
apk文件实质上就是个压缩文件。
配置到环境变量中。
下载zip,并配置环境变量
执行命令行:

zip -j build/app-debug.apk build/classes.dex

在这里插入图片描述
第八步:生成签名
这个时候,apk文件中的内容还少META-INF,也就是签名信息。

apksigner sign -ks D:\AZ\test_key\android_keystore.jks app-debug.apk

在这里插入图片描述
第九步:安装apk

adb install xxx.apk

在这里插入图片描述

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值