在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。相关的知识,希望对你有一定的参考价值。
本来想修改下官方ROM的com.resources.apk,想知道怎么才能不破坏签名。
参考技术A ApkDec-Release-0.1 试试这个工具 参考技术B 我来做下任务的 , 借个位子。 参考技术C 什么样什么样 v什么样什么样android反编译系统应用
因为工作需要,需要看看某个系统apk是怎么实现特定的功能的。 看看有没有可以利用的地方
-
获取到应用的包名
- 打开应用的某个页面
- 进入adb shell
- shell里面 dumpsys activity|grep ACTIVITY 获取到包名
-
根据包名查看应用的信息
- 获取apk的路径 adb shell pm path 包名
-
把apk拉到本地
- adb pull remote path local path
-
一键查看应用
- 下载jadx ,通过这个应用打开.apk
正常的应用到这里就结束了。
但是 What The Fuck !!! apk里面classes.dex没有,是空的,并没有任何的class 文件
-
再次获取应用的信息信息
- adb shell dumpsys package 包名,可以看到codePath
-
dump所有的code到本地
- adb pull remote code path local path
-
emm… 可以看到有个arm的文件夹,里面有个xxx.odex
在有的系统,提取做了优化,把里面.dex转换成了.odex提前进行存储 -
把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
-
再次通过jadx打开classes.dex文件
-
完美收工
以上是关于在android系统中,怎么反编译系统APK文件而不破坏以前的签名?就是不需要在重新编译后签名。的主要内容,如果未能解决你的问题,请参考以下文章