Apk反编译再打包

article/2025/11/7 5:47:17

Apk反编译再打包

近期研究了一下Apk反编译技术,在网上找了很多资料,进行了实践,成功完成了apk反编译,修改代码,再打包编译的过程。这个过程耗费了我3天的时间,踩了很多坑。记录下来,便于我以后忘记,也便于其他程序猿/媛们重现这个过程,节约大家的时间。

1.准备阶段

(1)系统信息

  macOS Sierra 10.12.5 

  $ java -version

  java version "1.8.0_151"

  Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

  Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

  windows系统和linux系统也可以的,需要安装jdk1.8,这个过程不在本文章范围内。

(2)下载工具

  apktool,jd-gui,dex2jar,auto-sign

  百度可以搜到,有些工具需要访问外网才可以下载到。

  如果闲麻烦的话我这里准备了下载包(csdn 2积分):

  压缩包中的jd-gui是mac版的,其他版本在官网下载http://jd.benow.ca/

  zip:https://download.csdn.net/download/moluth/10779181

  tar:https://download.csdn.net/download/moluth/10779172

(3)工具简介

  apktool:用于编译,反编译apk包

  auto-sign:给apk包签名

  dex2jar:把dex文件还原成jar包

  jd-gui:反编译jar包,查看jar源码。

(4)工具解压

  如果你下载了(2)中的压缩包解压,先解压,然把里面的dex2jar-2.0.zip也解压,如下图,共4个工具:


2.查看源代码

(1)解压apk包

apk包是一个zip格式的压缩包,把扩展名改成zip,然后解压。解压后可以看到这个apk包中的文件,不同apk包中有所区别。

assets:放的是各种app会用到原始文件,如html,css,json等

kotlin:kotlin是安卓开发新一代编程语言,有些apk使用kotlin语言,这个文件夹下放的是kotlin编译后文件。

lib:存放的是c/c++生成的.so动态链接库文件。

res:各种布局文件,动画,图片,资源文件,xml文件,这个不太好解释,做过安卓开发的应该都可以意会。

okhttp3:是一个第三方网络请求包。

*.dex:java代码编译成jar包后,合并成dex包,安卓系统可以识别dex包。

AndroidManifest.xml:里面写着Activity,Application,app权限等信息。

resources.arsc:资源文件索引文件,这个比较复杂,但是对我们来说没有什么用处,不必理会

其他:忽略

(2)将dex还原成jar包

先把dex文件拷贝到dex2jar的文件夹下,执行命令:

类linux系统:

$chmod 777 d2j-dex2jar.sh

$./d2j-dex2jar.sh *.dex

windows系统:

$d2j-dex2jar.bat *.dex

执行后会生成一些jar包,然后用jd-gui打开这些jar包,就可以看到java源代码了,如下图所示。


3.反编译apk

先把apk包放到apktool_2.3.4.jar所在目录,然后执行命令:

$java -jar apktool_2.3.4.jar d xxx.apk -o xxx

如果不需要修改资源文件(修改资源文件有坑,再次编译过程中有可能会报错),使用下面命令:

$java -jar apktool_2.3.4.jar -r d xxx.apk -o xxx

做完上面操作,会产生一个xxx文件夹,文件夹内容如下:

这时可以修改上面圈出的文件,要保持文件名称不变。

smali:看这里https://blog.csdn.net/yuanguozhengjust/article/details/80493963

可以对比着jd-gui中的源码修改smali文件。


4.再编译apk

在第3步,修改smali,资源文件,和AndroidManifest.xml文件后就可以再把这个打包成apk了

(1)打包

执行下面命令:

$java -jar apktool_2.3.4.jar b xxx

执行后xxx文件夹下回产生build和dist文件夹,dist文件夹下就是apk文件了。这时的apk文件还不能安装,需要签名。

(2)签名

至于为什么要签名,建议去搜一下,找几篇文章看看,这里不再赘述。

把xxx/dist文件夹下的xxx.apk拷贝到Auto-Sign(签名工具,1中有介绍)文件夹下,然后执行下面命令:

$java -jar signapk.jar testkey.x509.pem testkey.pk8 xxx.apk xxx_signed.apk

就可以再这个文件夹下生成xxx_signed.apk,大功告成!!!

 


http://chatgpt.dhexx.cn/article/NuEseAqa.shtml

相关文章

apk 反编译及重新打包签名

apk 反编译及重新打包签名 1. 需要的工具 apktool,apk 编译及反编译工具keytool,用于管理密钥和证书的工具jarsigner,签名工具apksigner,签名工具 2. apk 反编译 首先需要对 apk 进行反编译,假设 apk 名为 name.ap…

APK反编译(2)

前提说明: 今天在反编译某个apk解压出来的dex文件时,会出现编译失败,生成classes-dex2jar.jar和classes-error.zip,这是反编译失败的结果.查找资料说是老版本的dex2jar已经不能反编译最新的dex文件了,需要用新版本的. 再一个,部分class文件,用jd-gui.exe打开,会出现internalEr…

【Apk反编译】如何反编译Apk得到Java源代码

Android Apk反编译得到Java源代码 大家做Android开发,看到别人应用里一些好的功能,是不是很想得到源码,借鉴一下?既然Android是用JAVA开发的,那么我们就能很容易的通过反编译的到应用的源代码。下面我简单介绍下应该怎…

【反编译】安卓APK反编译为java文件

【反编译】安卓APK反编译为java文件 准备工具 要反编译的apk文件, 以微信8.0.apk为例子 dex2jar 下载地址 dex2jar-2.0反编译.zip-Android文档类资源-CSDN文库 https://sourceforge.net/projects/dex2jar/ jd-gui java反编译工具 .class --> .java D…

apk反编译-源码阅读

文章目录 一、准备工具(1) 使用工具介绍:(2) 使用工具下载与安装: 二、Apk 反编译步骤三、出错提示: 一、准备工具 提示:这些工具在官网都不好下载,偶也是废了好大力气呢,建议直接下载我提供的网盘链接 (…

APK反编译以及提取有用信息

目录 一、反编译工具的介绍 apktool dex2jar jd-gui 二、apk反编译 三、提取有用信息 信息收集的内容 apk开发者id和apk签名证书查找 三、一键式反编译进行信息收集工具介绍 现学现卖,有些地方有错误还请包含,也十分欢迎指教补充。 一、反编译工具…

如何对apk文件进行反编译

1.下载反编译三件套(2022.9.5更新) 点我直达 提取码:cbjw 2.压缩包解压 这里以解压到D:\decompile为例 3. 使用apktool反编译apk(此处以wat.apk处于D:\decompile文件夹为例) //进入dos窗口:winR->输入cmd->回车cd D: 回车cd decompi…

APK反编译

本文首发于:行者AI 当我们想要了解一款APP时,最好的学习方式就是将其APK文件进行反编译。将APK进行反编译之后,我们就可以看到开发这个应用使用的资源文件(图片)、layout、样式、相关的实现代码等,学习这些…

apk反编译教程(2022win11亲测)

捣鼓apk反编译,想做一些羞羞的事情,网上的教程大多都比较旧,这里更新一篇比较新且详细的反编译教程。 目录 软件准备 apktool安装和使用 dex2jar安装和使用 jd-gui使用 软件准备 首先我们想要比较完整的解析一个apk需要三个工具&#…

Android apk反编译

学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装。正常情况下&…

AVD创建与使用

一、创建虚拟设备(AVD) AVD链接地址>>手机安卓自动化环境配置 操作程序: D:\tool\adt4_2_32bit\eclipse-eclipse.exe(双击启动)–开发工具 创建AVD(虚拟设备): 1)点击Window…

关于AVOD, 你需要知道的事

翻译、编辑:Alex 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中__二维码了解音视频技术大会更多信息▲ Easy-Tech #026# AVOD(Advertising-based Video On Demand)是一种视频点播商业模式:通过在视频…

AVOD:Aggregate View Object Detection跑通(官方README小补充)

本地环境 Ubuntu20.04 anaconda tensorflow-gpu1.3.0 cudatookit8.0 cudnn6.0 protobuf3.14.0(protobuf用3.2.0会报错) 1. protobuf文件解释 protobuf是google的一个开源的用来做数据通信的库,在avod/protos文件中有很多.proto文件,这些文件定义了…

AVA

声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 论文链接:arXiv:1705.08421 [cs.CV] 《AVA: A Video Dataset of Spatio-temporally Localized Atomic Visual Actions》论文翻译 摘要介绍相关工作数据收…

avod论文理解与代码解读

AVOD 论文理解与代码解读 论文简析概述网络结构BEV map特征提取rpn 网络特征融合 第二阶段检测网络box 编码方向确定 代码解读anchor 的产生mini batch的产生与作用rpn modelavod modelloss不足 论文简析 参考文章: csdn 代码: 代码 文献: …

AVOD、SVOD、TVOD、PVOD:视频点播商业模式

翻译、编辑:Alex 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码了解音视频技术大会更多信息▲ Easy-Tech #025# 什么是视频点播(VOD)? 当我向流媒体业内人士问到,视频点播&#x…

【综述】MV3D-Net、AVOD-Net 用于自动驾驶的多视图3D目标检测网络

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 前言 MV3D-Net 融合了视觉图像和激光雷达点云信息;输入数据有三种,分别是点云俯视图、点云前视图和RGB图像。通过特征提取、特征整合和特征融合,最终得到类别标签、3D边界框…

AVOD、SVOD、TVOD、PVOD:揭秘视频点播商业模式

点击上方“LiveVideoStack”关注我们 翻译、编辑:Alex 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 商业模式 Easy-Tech #025# 什么是视频点播(VOD)&#xf…

AVOD:点云数据与BEV图的处理及可视化

文章目录 前言1. 点云数据可视化2. 点云数据校准3. 转为BEV图4. 补充:点云坐标系与相机坐标系结束语 前言 本篇主要记录对AVOD代码的学习与理解,主要是KITTI数据集中3D Object Detection任务中的点云数据和BEV图的处理,为方面理解其中的操作&…

视觉与激光雷达融合3D检测(一)AVOD

1.概述 AVOD(Aggregate View Object Detection)和MV3D类似,是一种融合3维点云和相机RGB图像的三维目标检测算法. 不同的是: MV3D中融合了相机RGB图像,点云BEV映射和FrontView映射,而AVOD则只融合相机RGB图像和点云BEV映射. 从网络结果来看,AVOD采用了基…