Android 反编译Apk,修改资源,重新打包,签名发布

2023-11-17

本文简单介绍apk是如何修改logo(ic_launcher),类似的资源文件修改也可以通过此方式。不过要修改class的话就要涉及到smali的学习了,这里就暂且不谈,后续有需要再做更新。

一、工具介绍:

在这里插入图片描述

  • apktool:用来反编译apk,apk重新打包
  • autosign:自动签名工具,将重新打包的apk进行签名,如果不签名,无法安装使用
  • jadx-0.6.1-dev-build226:查看源码及目录结构,相当于dex2jar + jd-gui
    这些工具在网上都可以下载的到,如果需要的话留下邮箱即可

二、工具使用

1. jadx-0.6.1-dev-build226

双击jadx-0.6.1-dev-build226\bin目录下jadx-gui.bat,选择test.apk即可看到源码及目录结构,如下在这里插入图片描述
这只是用于查看源码,并起不到修改作用,不过可以查看要修改的东西在哪个位置,真正修改要通过apktool反编译apk的源码才可以修改。

2. apktool

该目录下有三个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,如图:
在这里插入图片描述
在该目录下,按住Shift,然后右键选择“在此处打开命令窗口”,输入一下命令:

apktool.bat d -f test.apk -o test

apktool -f [待反编译的apk] -o [反编译之后存放文件夹]
在这里插入图片描述
如果反编译过程中遇到Exception in thread “main” 错误,可能是apktool.jar的版本太低,使用高版本不会出现异常。

请往https://ibotpeaches.github.io/Apktool/重新下载,下载到的apktool_xxx.jar文件改名为apktool.jar,然后替换掉老版本的apktool.jar,重新执行命令应该就正常了。

反编译之后会得到test 文件夹,打开test文件夹,里边就是反编译出来的各种资源文件
在这里插入图片描述
然后进行test\res目录去修改ic_launcher,这里所有的ic_launcher都要做替换。

修改成功,保存,重新打包,执行打包命令

apktool.bat b test

在test文件内会多出两个文件如下图所示:
在这里插入图片描述
dist文件内就是我们需要的apk。

3. autosign

签名apk,重新发布

接下来就要用到签名工具了,如果不经过签名是不能正确运行的。工具: auto-sign.zip

将打包好的test.apk 拷贝到解压好的auto-sign文件夹下,执行命令:

java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk

test_signed.apk就是签名后的apk

到此修改资源文件就大功告成了,也是很简单的

参考:https://blog.csdn.net/sxk874890728/article/details/80486223

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 反编译Apk,修改资源,重新打包,签名发布 的相关文章

  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • 在名称中使用时间戳时,Android Studio 在构建后无法启动应用程序

    我遇到了 gradle 和 Android Studio 的问题 该问题仅在 Android Studio 中构建时出现 BuildServer 和 Commandline 工作正常 applicationVariants all vari
  • 如何使用retrofit2进行GET请求?

    我有一个在本地主机上运行的安静的 Web 服务 我想在该剩余 URL 上发出 Retrofit2 GET 请求 MainActivity java private void requestData public static final S
  • OPENGL ES 不工作:无当前上下文

    我尝试了 OpenGL ES2 for Android 一书中所示的程序 但它不起作用 我已经在Odroid E 三星s3 三星y 三星star上进行了测试 the gl version suported returns 2 but i g
  • 添加动态数据时 footable 出现问题

    我需要 jQuery Mobile 方面的一些帮助富表 http css tricks com footable a jquery plugin for responsive data tables 我正在表中动态添加数据 HTML tab
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • 如何忽略 LeakCanary 中的某些类?

    有人能给我一个如何忽略 LeakCanary 中的某些类的有效示例吗 我正在查看这个示例 以忽略 LeakCanary 中第三方库中的某些类 但我不知道将其放在应用程序中的何处 我把它放在我的应用程序类中 但这些变量和方法有错误 isInA
  • 在 Android 中始终以横向模式打开相机

    在我的 Android 应用程序中 单击按钮后我希望相机以横向模式打开 即使我将手机旋转为纵向模式 相机也应始终处于横向模式或纵向模式 使用此代码在横向模式下打开相机 Intent cameraIntent new Intent Media
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • 如何更改对话框片段内的片段

    我想做一个空的DialogFragment with a LinearLayout然后更改里面的片段LinearLayout 例如 第一个片段是 3 个按钮 facebook google 电子邮件登录 的登录 当有人按下电子邮件时 第 2
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • Android 消费品:“已经拥有该商品”,但 inventory.hasPurchase() 为 false

    我被 Google In App v3 困住了 我测试了一次没有消费的购买 例如 当应用程序在购买和消费之间崩溃时 现在我找不到出路 如果我尝试再次购买 它会显示 您已经拥有该商品 但是当我测试所有权时 它说我不拥有它 Inventory
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 有没有办法在多个嵌套的 RecyclerView 之间共享同一个 LayoutManager

    我正在开发一个显示游戏列表的应用程序 在每个游戏的 itemView 内 我还有一个要显示的视频列表 预览和结构如下 我部署了一个RecyclerView作为窗口根视图 然后对于视频 我使用网格样式的RecyclerView来显示 所以这里
  • 如何在 kotlin 中检查 lambda 空值

    在 Kotlin 中如何检查 lambda 是否为空 例如 我有这样的签名 onError Throwable gt Unit 我如何区分它的默认值是应用于主体还是应用于此函数的值 您无法测试 lambda 的主体是否为空 因此它不包含源代
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports

随机推荐

  • 剑指Offer【37】数字在排序数组中出现的次数(JavaScript版本)

    题目描述 统计一个数字在排序数组中出现的次数 function GetNumberOfK data k write code here var start data indexOf k count 0 i start while i lt
  • uni-app原生子窗体(app端)

    在uni app中video是原生组件 层级最高 全屏后普通前端组件无法覆盖 如果想要在视频自行绘制界面 1 app端vue页面可以用 cover view cover image 但是cover view cover image中不支持嵌
  • OPENCV C++ 找到最大内接矩形(正方形)

    OPENCV C 找到最大内接矩形 正方形 这源代码本来是检测最大内接圆形的 本人想要矩形 所以变成了正方形 谨慎使用 不是严格意义上的最大内接矩形 cv Mat map one label cv imread src png cv2 IM
  • 程序员,不止干到35岁

    程序员 不止干到35岁 在中国 程序员不能超过35岁 似乎已经是不争的事实 软件开发工作就是青春饭 顶多靠毕业这十年的时间 超过这个年龄 要不成功跃身成为管理者 要不转行进入其他领域 好像再没有更好的选择 即使偶有继续坚持作开发的 也被看成
  • Mybatis简单的增删改查和mybatis配置文件的详解

    MyBatis 1 什么是Mybatis MyBatis是一款优秀的持久层框架 MyBatis避免了几乎所有的JADBC代码和手动设置参数以及获取结果集 MyBatis可以使用简单的XML或注解来配置和映射原生类型 接口和Java的POJO
  • 使用Jest测试接口时间

    引言 在开发和测试过程中 我们经常需要对接口的性能进行评估和优化 一个重要的指标是接口的执行时间 本文将介绍如何使用Jest来测试接口的执行时间 并提供示例代码 Jest简介 Jest 是一个流行的JavaScript测试框架 广泛应用于前
  • 整理了60个 Python 实战例子,拿来即用

    大家好 最近有一些朋友问我有没有一些 Python 实战小案例 今天我整理排版了一遍 给大家分享一下 喜欢记得点赞 收藏 关注 整理了60个Python小例子 拿来即用 一 数字 1 求绝对值 绝对值或复数的模 公众号 快学Python I
  • python与pyqt5把列表中的数据写入到一个新的excel表中,并选择保存路径

    您可以使用 Python 的 openpyxl 库来实现这个功能 首先 您需要通过在命令行中运行 pip install openpyxl 来安装 openpyxl 库 然后 您可以使用以下代码来将列表中的数据写入新的 Excel 表中 f
  • mysql中drop语法错误,mysql 中drop 库的问题

    最近drop database pai 报错 ERROR 1010 HY000 Error dropping database can t rmdir pai errno 39 我就想把库文件直接删除试试 于是 rm rf usr loca
  • 区块链的基本概念

    区块链是分布式数据存储 点对点传输 共识机制 加密算法等计算机技术的新型应用模式 所谓共识机制是区块链系统中实现不同节点之间建立信任 获取权益的数学算法 区块链技术的内涵可概括为 在缺少可信任的中央节点和可信任的通道的情况下 分布在网络中的
  • All O`one Data Structure

    学习地址 双向链表 key为count数 value为存入的字符串 增加一个字符串 先判断其Node位置 再在双向链表中插入 删除也是 最大最小的字符串数在双向链表的表尾和表头 记录学习一下 class AllOne Node root M
  • STM32的介绍及MDK

    文章目录 STM32介绍 单片机 STM32命名 armV7的三个系列 STM32系统结构 CMSIS标准 STM32F4方包绍官方库包 STM32F103 STM32F103资源 STM32F103总线架构 STM32F103引脚 STM
  • 基于keras的图像分类CNN模型的搭建以及可视化(附详细代码)

    基于keras的图像分类CNN模型的搭建以及可视化 本文借助keras实现了热图像的分类模型的搭建 以及可视化的工作 本文主要由以下内容组成 Keras模型介绍 CNN模型搭建 模型可视化 Keras模型介绍 简介 Keras 是 Goog
  • Canvas实例之鼠标移动特效(彩色小球)

    实现鼠标移动跟随着绽放的彩色小球 完整代码在文档末尾 图示 思路 获取画布 获取画布 var canvas document getElementById mycanvas 获取上下文 var ctx canvas getContext 2
  • 嵌入式毕业设计 树莓派实现口罩佩戴检测识别 - 单片机 物联网 机器视觉

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 树莓派4B 5 软件说明 Debian Pi Aarch64 树莓派操作系统 vnc 远程连接树莓派 opencv 摄像头人脸数据采集 人脸数据显示等 6 部分核心代码
  • 顺序表、链表元素的就地逆置。

    目录 一 顺序表元素的就地逆置 1 完整代码 2 解题思路流程 二 链表元素的就地逆置 1 完整代码 2 解题思路流程 一 顺序表元素的就地逆置 1 完整代码 include
  • Vue的生命周期

    一 初始化阶段 1 new Vue Vue实例化 组件也是一个小的Vue实例 2 Init Events Lifecycle 初始化事件和生命周期函数 3 beforeCreate 生命周期钩子函数被执行 4 Init injections
  • 战争科学论——认识和理解战争的科学基础和思维方法

    胡晓峰 1973年中学毕业赴湖南农村插队当过三年知青 1976年回城后当过工人 1977年考入国防科技大学系统工程与数学系信息系统工程专业学习 1981年底毕业后留校任教 后又攻读了研究生 1987年在读信息系统工程研究生期间 曾赴美国加州
  • GDAL-2.4.0 获取Hadoop-3.1.2 hdfs tif文件信息

    GDAL 2 4 0 获取Hadoop 3 1 2 hdfs tif文件信息 GDAL 2 4 0增加了以下功能 Add vsihdfs virtual file system handler for Hadoop File System
  • Android 反编译Apk,修改资源,重新打包,签名发布

    本文简单介绍apk是如何修改logo ic launcher 类似的资源文件修改也可以通过此方式 不过要修改class的话就要涉及到smali的学习了 这里就暂且不谈 后续有需要再做更新 一 工具介绍 apktool 用来反编译apk ap