在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。相关的知识,希望对你有一定的参考价值。

本来想修改下官方ROM的com.resources.apk,想知道怎么才能不破坏签名。

参考技术A ApkDec-Release-0.1 试试这个工具 参考技术B 我来做下任务的 , 借个位子。 参考技术C 什么样什么样 v什么样什么样

android反编译系统应用

因为工作需要,需要看看某个系统apk是怎么实现特定的功能的。 看看有没有可以利用的地方

  1. 获取到应用的包名

    • 打开应用的某个页面
    • 进入adb shell
    • shell里面 dumpsys activity|grep ACTIVITY 获取到包名
  2. 根据包名查看应用的信息

    • 获取apk的路径 adb shell pm path 包名
  3. 把apk拉到本地

    • adb pull remote path local path
  4. 一键查看应用

    • 下载jadx ,通过这个应用打开.apk

正常的应用到这里就结束了。

但是 What The Fuck !!! apk里面classes.dex没有,是空的,并没有任何的class 文件

  1. 再次获取应用的信息信息

    • adb shell dumpsys package 包名,可以看到codePath
  2. dump所有的code到本地

    • adb pull remote code path local path
  3. emm… 可以看到有个arm的文件夹,里面有个xxx.odex
    在有的系统,提取做了优化,把里面.dex转换成了.odex提前进行存储

  4. 把xx.odex转换为 dex

    • 准备工作 下载baksmali, smali, oat3dex.jar
    • 把系统的framework拉到本地来 adb pull /system/framework .
    • 从framework中找到 boot.oat, 我试验的机器是在framework/arm的目录下
    • 执行java -jar oat2dex.jar boot boot.oat ,这里会在boot.oat的同级目录下生产dex odex两个子目录
    • 执行 java -jar oat2dex.jar xxx.odex /framework/arm/dex/ (后面的目录是上一步生产的文件夹)
    • 执行java -jar baksmali.jar -a 22 -b -s xxx.dex -o test; (22代表着系统api等级)
    • 执行 java -jar smali.jar -a 22 -j 1 -o classes.dex test;
    • 如果不出意外的话,这里就有一个classes.dex
  5. 再次通过jadx打开classes.dex文件

  6. 完美收工

以上是关于在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。的主要内容,如果未能解决你的问题,请参考以下文章

Android APK 反编译

android app怎么防止反编译

反编译Android APK的具体步骤是怎样的

android反编译系统应用

android反编译系统应用

如何在 Android 中以编程方式反编译 dex 文件?