反编译一款APP然后重新打包(Windows环境)

最近有小伙伴私信我,怎么把一款APP改成自己的信息呀,咳咳,这又来送题材了,今天水一把APP反编译+回编译,文中会针对一款APP进行简单的修改信息,问问题的小伙伴还不火速右上角支持一下。

MacOS跟Windows我是分开写的,怕你说平台不一致就打退堂鼓了。

MacOS:https://www.cnblogs.com/niceyoo/p/13296260.html

Windows:https://www.cnblogs.com/niceyoo/p/13303136.html

一、下载jadx

下载地址:https://github.com/skylot/jadx/archive/master.zip

下载后进入该文件根目录执行 ./gradlew.bat dist文件

通过如上指令,可以帮我们打包出 build 目录,接下来就全靠这个build目录干 ”大事“ 了,我们来看看这个目录下的文件:

二、安装apktool

接下来安装今天的第二个工具——apktool

下载链接:https://ibotpeaches.github.io/Apktool/install/

1、下载apktool文件

打开网址后找到windows节点,对着 wrapper script 右键:

弹窗保存时一定要使用bat格式,默认就是bat格式。

2、下载apktool.jar

点击windows节点上的 (find newest here)

进入该界面后,查看右侧jar下载列表,当然下载最新文件:

3、配置apktool执行权限

至此,我们下载了两个文件,我们把这两个文件放到 C://Windows 目录下,这个过程等价于在系统环境变量Path中配置。

4、测试apktool权限

随便找个命令行执行如下指令:apktool,只要打印内容说明没问题

三、开始反编译APP

我们找个简单点的APP,有人提议用我的涂涂影院,出门右拐,请私下自己尝试,我怎么会公开处刑自家孩子。

某视频APP:https://niceyoo.lanzous.com/iCi92eksqjc

1、反编译

反编译用到的是第二个下载的工具—apktool,我们先下载上方链接中的app,然后在该文件目录的控制台下执行如下指令:apktool d 名称.apk

apktool d 一个TV.apk

d,代表反编译,b代表回编译,不要记混。

执行后我们得到了一个文件夹《一个TV》,我们简单看一下这个目录:

如图,其中,res文件夹下存放的是反编译出来的所有资源,smali文件夹下存放的是反编译出来的所有代码,AndroidManifest.xml则是经过反编译还原后的manifest文件。

smali文件夹下的文件smali文件使用的是Android虚拟机所使用的寄存器语言,如果看的懂smail文件的话,就可以修改源代码的逻辑了,比如增加一个图片、增加一行文字等等都是修改的smail文件;

在这之前我们得看到代码才行,不然都不知道在哪改,改到哪,那么接下来就是去看APP的源码了,所以这就用到第一个安装的软件了—jadx

2、查看源码数据

接下来我们复制一份 《一个TV.apk》,然后将复制的apk后缀改成zip,得到如下:

进入 《一个TV的副本》,这一步主要是想得到 classes.dex 文件,该文件是获取源码的重点。

然后需要用到第一个工具—jadx,进入 buil/jadx/bin 目录。双击执行 jadx-gui.bat 文件:
i
在弹出的窗口选择 《一个TV-副本》 中的 classes.dex 文件:

然后就可以看到如下的源码视图了,具体代码细节就不带大家一块看了

为了方便直接在控制台使用,大家可以将 jadx 的目录配置到系统环境变量中:

可能有小伙伴会好奇,怎么没看到实质性的源码呀,别着急,进入《一个TV-副本》文件夹控制台执行:

jadx -d out classes.dex

执行该命令,反编译后会把源码放入out文件夹下(如果out不存在它会自动创建)

补充:这一小节的目的就是为了使用jadx-gui可视化界面查看app的源码,小伙伴千万不要混了,主要的、以及接下来要操作的还是在第一小节反编译出来的代码。

3、魔改数据

代码也看到了,本来计划这篇就带大家修改源码数据,但是为了照顾大部分小伙伴,接下来就只修改一下APP名称,然后重新打包APP,下一篇补充:修改布局 + 修改smali代码

我们再回到第一节使用apktool反编译出来的代码,找到根目录的AndroidManifest.xml,修改文件中的label标签对应的string.xml文件中的值,这次我们简单粗暴点,直接修改内容吧:

修改完记得保存,然后我们就开始回编译了。

4、回编译APP

退回到 《一个TV》 文件夹目录,执行如下指令apktool b 文件夹名称

apktool b 一个TV


执行完该命令后,会在 《一个TV》 文件夹下生成一个 dist 目录,目录下有个app… 咳咳别激动,还有最后一步:

5、应用签名

关于应用签名,说麻烦也不麻烦,稍微懂点Android的小伙伴,①可以通过Android Studio或者直接命令行生成签名文件;②将apk和签名文件放在同一个目录,然后再终端执行 jarsigner 代码;

详细的我就不啰嗦了,今天为照顾大多数小伙伴,介绍一个工具 Android Crack Tool

下载链接:https://niceyoo.lanzous.com/iWKoBem1atg

下载解压后,执行ApkToolkit.exe文件,点击按钮签名.apk,选择上方回编译生成的APPs:

签名完成后,会在根目录生成dist一个TV.S.apk文件:

我们将它装到手机上,安装试一下:

其实成功了,就是名称太长 「niceyoo博客」 没显示出来,ok,下一篇带大家深一步魔改APP。

小伙伴们不要慌,你慌我也慌,来都来了,关注一下,交个朋友。

本文首发于博客园:https://www.cnblogs.com/niceyoo/p/13303136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vmware下CentOs7 桥接模式下配置固定IP

1.安装完CentOS7后 修改虚拟机网络适配器配置:改成桥接模式 2.设置Vmware的 编辑->虚拟网络编辑器 3.重启CentOs7 , 查看网络 # ip addr interface是: ens33 4.查看本地真实机ip,然后配置虚拟机固定ip windows 进入命令行模式cmd&#xf…

MacOS svn:E230001 Can‘t use Subversion command line client: svn The path to the Subversion executabl

注意:本文仅针对于 MacOS 系统。 错误信息如下: Cant use Subversion command line client: svn The path to the Subversion executable is probably wrong. Fix it.好家伙,今天发现 IDEA 中的 SVN 突然不能用了… 因为之前的 SVN 是使用 …

创建线程都有哪些方式?— Callable篇

今天我们来看一道面试题引发的思考 问: 创建线程都有哪些方式? 答: 我了解的有四种创建方式: 继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程通过线程池创建 相信大家回答这个问题没什么难度吧…

ASP.NET Core 网站发布到Linux服务器

长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台,这就使得.NET空有一身绝技但无法得到广大的施展空间,.NET平台被认为只适合开发企业内…

如何暂停一个正在运行的线程?

今天把小伙伴问懵了,小刚,你知道怎么停止一个线程吗? 这…,这…,stop? 原来平时小刚这小子只知道创建线程,不知道怎么暂停线程呀~[狗头] 停止线程是在多线程开发中很重要的技术点,…

Docker中搭建FastDFS文件系统(多图)

关于FastDFS FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务…

SpringBoot集成FastDFS依赖实现文件上传

前言 对FastDFS文件系统安装后的使用。 FastDFS的安装请参考这篇&#xff1a;https://www.cnblogs.com/niceyoo/p/13511082.html 本文环境&#xff1a;IDEA JDK1.8 Maven 1、引入依赖 简单说一下这个依赖部分&#xff0c;目前大部分都是采用的如下依赖&#xff1a; <…

SQL取最大值编码(自动编码)

SQL取最大值编码(自动编码) 用途 : 使用SQL语法做出自动编码效果&#xff0c;例如将单号自动1后&#xff0c;产生该笔单号 Table说明 SQL语法 SELECT AREPLICATE(0,7-len(convert(varchar,((MAX(right(ae002,7)))1))))(convert(varchar,((MAX(right(ae002,7)))1))) from ygmae …

微信小程序里如何使用npm?小程序集成友盟举例

1、执行npm初始化指令 小程序根目录&#xff0c;命令执行如下指令&#xff1a; npm init执行后会让加载项目初始信息&#xff0c;具体截图如下&#xff1a; 2、执行安装npm包指令 在这我们举个例子&#xff0c;以接入友盟统计SDK为例&#xff0c;执行命令如下&#xff1a;…

Spring MVC 5 + Thymeleaf 基于Java配置和注解配置

Spring MVC 5 Thymeleaf 注解配置 Spring的配置方式一般为两种&#xff1a;XML配置和注解配置 Spring从3.0开始以后&#xff0c;推荐使用注解配置&#xff0c;这两种配置的优缺点说的人很多&#xff0c;我就不说了&#xff0c;自行体会&#xff0c;下面就用注解配置实现一个Sp…

docker镜像无法删除 Error:No such image:xxxxxx

1、前言 docker镜像无法删除&#xff0c;通过 docker images 查看镜像明明存在就是删除不了。 删除提示&#xff1a;Error&#xff1a;No such image&#xff1a;xxxxxxx 具体截图内容如下&#xff1a; 2、解决方法 进入目录&#xff1a; cd /var/lib/docker/image/over…

python中集合set,字典dict和列表list的区别以及用法

python中set代表集合&#xff0c;list代表列表,dict代表字典 set和dict的区别在于&#xff0c;dict是存储key-value&#xff0c;每一个key都是唯一的&#xff0c;set相对于dict存储的是key&#xff0c;且key是唯一的,list除了变量外都可以存储 dict{"a":1,"b&qu…

第6课 仿Siri机器人-语音朗读和语音识别

一、功能设计输入文本&#xff0c;单击“朗读”按钮&#xff0c;由手机读出该文本&#xff08;如果没有输入文本&#xff0c;则弹出消息框警告“请输入文本&#xff09;&#xff1b;单击“识别”按钮&#xff0c;读入语音&#xff0c;从文本框中输出文字。&#xff08;另&#…

口述完SpringMVC执行流程,面试官就让同事回家等消息了

Srping MVC 执行流程真的是老生常谈的话题了&#xff0c;最近同事小刚出去面试&#xff0c;前面面试官相继问了几个 Spring 相关的问题&#xff0c;但当面试官问他&#xff0c;你知道 Srping MVC 的执行流程吗&#xff1f;小刚娴熟的巴拉巴拉回答完后&#xff0c;面试官就让他回…

C++ 判断系统大小字节序

bool IsLitterEndian() {union UTest{std::uint16_t t;std::uint8_t c;} endianTest{ 0x01 };return (endianTest.c 0x01); } 转载于:https://www.cnblogs.com/fluteary/p/9178627.html

macos brew zookeeper,安装后zookeeper启动失败?

一、Zookeeper安装流程 执行如下安装命令&#xff1a; brew install zookeeper执行截图如下&#xff1a; 安装后查看 zookeeper 安装信息&#xff08;默认拉取最新版本&#xff09; brew info zookeeper执行截图如下&#xff1a; 二、Zookeeper启动、状态查询、及关闭 启…

为什么SimpleDateFormat不是线程安全的?

一、前言 日期的转换与格式化在项目中应该是比较常用的了&#xff0c;最近同事小刚出去面试实在是没想到被 SimpleDateFormat 给摆了一道… 面试官&#xff1a;项目中的日期转换怎么用的&#xff1f;SimpleDateFormat 用过吗&#xff1f;能说一下 SimpleDateFormat 线程安全问…

【Python 学习_第2周_程序代码】金角大王培训第二周练习_购物车代码,将写的代码和老师代码比较,记录下收获...

培训第二周&#xff0c;课堂练习为编写一段购物车代码&#xff0c;需求描述如下&#xff1a; 1.提示用户输入薪水 2.用户输入薪水后&#xff0c;打印商品编号、内容及价格 3.提醒用户输入商品代码&#xff0c;若余额大于等于商品价格&#xff0c;可购买&#xff1b;若小于&…

ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161

仅针对如下错误内容&#xff1a; Cannot send, channel has already failed: tcp://127.0.0.1:8161一种尝试解决&#xff0c;修改连接端口为 61616&#xff1a; tcp://127.0.0.1:61616在没有修改过 ActiveMQ 配置文件情况下&#xff0c;默认 tcp 端口为 61616&#xff0c;htt…

pip安装报错处理+PyPi源切换教程

一、pip安装出错类型 1.1 pip版本过旧导致不能安装 报错提示&#xff1a; You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgrading via the python -m pip install --upgrade pip comm and. 可通过以下命令升级pip python -m p…