app反编译

在进行安卓开发或者爬虫开发过程中,偶尔会遇到需要将app进行反编译分析参考源码的需求,接下来,笔者将自己实践过程记录下来,給需要的朋友一个参考。仅供学习之用,勿做坏事儿,哈哈哈!

准备工作:确保电脑已经配置好了java环境,最好是jdk1.8以上

使用工具:

apktool (作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看)  下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/

dex2jar(作用:将apk反编译成java源码(classes.dex转化成jar文件)) 下载地址:https://sourceforge.net/projects/dex2jar/files/

jd-gui  (作用:查看APK中classes.dex转化成出的jar文件,即源码文件) 下载地址: http://java-decompiler.github.io/

百度云盘下载地址:https://pan.baidu.com/s/1u7h1VT8WCW4vhQXpzq6png

将下载好的工具放在指定目录,解压,如下图所示:

1.用apktool反编译apk得到图片、XML配置、语言资源等文件

1.1 使用cmd命令cd到工具所在的目录,例如

cd C:\Users\lyl\Desktop\app反编译相关

1.2 使用 apktool 反编译得到 图片、XML等静态资源

java -jar [apktool_2.4.0.jar] d -f [apk地址] -o [输出的目录名称]

例如下图所示,我这里需要反编译的app为非常准的app,名字为:feichangzhun_142.apk:

执行成功之后,将会在指定的 fcz 目下生成如下图类似的文件,资源都在这里面:

如果你想将反编译完的文件重新打包成apk,那你可以:

java -jar [apktool_2.4.0.jar] b fcz (你编译出来文件夹)

例如:

java -jar apktool_2.4.0.jar b fcz

之后在之前的fcz文件下便可以发现多了2个文件夹:

build

dist(里面存放着打包出来的APK文件)

2.Apk反编译得到Java源代码

将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的 classes.dex放到之前解压出来的工具 dex2jar-0.0.9.13文件夹内,例如下图

2.1 在命令行下定位到 dex2jar.bat所在目录,输入

dex2jar.bat  classes.dex

如图:

在该目录下会生成一个 classes_dex2jar.jar 的文件,然后打开工具 jd-gui 文件夹里的 jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了,效果如下:

备注:如果要反编译的app是加了壳的话,需要脱壳,这里推荐有个大佬的文章地址可以参考一下:http://www.52bug.cn/cracktool/4794.html

作者我这里这个app也是使用的360加壳过的,所以也需要进行脱壳处理,具体脱壳步骤将在下一篇文章进行记录

3.签名

在从新打包之后,需要进行重新签名,这样才能在手机上成功安装,这里需要下载 Auto-sign.zip 工具,我这里有整理一份以上传百度云盘,下载地址:https://pan.baidu.com/s/1JeA4MkS7BWdeQkSHLvUs1w

将 Auto-sign.zip 解压,然后通过命令行 cd 到路径下,并且把要签名的app拷贝进去,例如我这里要签名的app为 飞常准.apk ,拷贝进去之后,目录结构如下图:

在命令行使用此命令进行签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 飞常准.apk fcz.apk

注意:这里的 fcz.apk 是指的签名成功之后,要生成的新的app名称

执行成功之后,将会在当前目录生成已经签名好的新文件,如下图

我这里遇到一个问题,就是我已经从新签名之后,并且把安装包发到手机上也成功安装了,但是打开运行app之后,会闪退,不不知道是否是我修改源码之后,修改出了问题,如有遇到同样问题的朋友,可以留言互相交流下喔!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

这些旅行必备APP,你知道几个?

虽说疫情还在继续,但是有时候我们仍然会控制不住自己想要旅游想要呼吸其他地方空气的心情。在了解知悉目的地的防疫政策并做好充足的防疫准备后,我们不妨来一场告别已久的旅行。但在旅行前,请先马住这些旅游必备app。 1.穷游行程助手 行程攻…

APP启动流程解析

前言 当我们点击手机屏幕上的软件图标时,就可以打开这个软件,看似很简单的过程其实包含了许多的底层交互,看了还不明白,欢迎来打我。 一 . 启动流程简介 首先要知道的是,手机屏幕其实就是一个Activity,我…

uniapp实现app跳转app

需要H5唤醒App看这篇文章:H5唤醒App 需求:公司的app跳转公司的另一个app 注意看注释!!! 注意看注释!!! 注意看注释!!! 如何实现呢,…

【Spring】— 动态SQL :<if>元素

动态SQL &#xff1a;元素 在MyBatis中&#xff0c;<if>元素是常用的判断语句&#xff0c;主要用于实现某些简单的条件选择。在实际应用中&#xff0c;我们可能会通过多个条件来精确地查询某个数据。 【示例8-1】下面通过一个具体的案例来演示元素的使用。 &#xff0…

数组及详解冒泡排序

数组及详解冒泡排序 一维数组的创建和初始化一维数组的创建一维数组的初始化一维数组的应用一维数组在内存中的存储 二维数组的创建和初始化二维数组的创建二维数组的初始化二维数组的应用二维数组在内存中的存储 数组越界问题数组作为函数参数数组名的含义及特殊两个例子 冒泡…

chatgpt赋能python:Python中累乘的作用和用法

Python中累乘的作用和用法 在Python编程语言中&#xff0c;累乘指的是连续乘法&#xff0c;或者说是一系列数字的乘积。累乘的概念非常简单&#xff0c;但是实际上它在编程中有着广泛的应用。 累乘在Python中的实现方式 Python中&#xff0c;累乘可以通过多种方式来实现&…

25条关于人生感悟的经典句子

1.活得糊涂的人&#xff0c;容易幸福&#xff1b;活得清醒的人&#xff0c;容易烦恼。这是因为&#xff0c;清醒的人看得太真切&#xff0c;一较真&#xff0c;生活中便烦恼遍地&#xff1b;而糊涂的人&#xff0c;计较得少&#xff0c;虽然活得简单粗糙&#xff0c;却因此觅得…

佛家经典禅语语录句子

【1】&#xff1a;在天地之间觅得一方安详&#xff0c;听风雨&#xff0c;听山语&#xff0c;听禅语。 【2】&#xff1a;心是一方砚&#xff0c;不空亦不满。眼是一片天&#xff0c;不奢亦不贪。字是一盘餐&#xff0c;不腻亦不淡。深邃梅婷花向晚&#xff0c;零落幻影墨里寒。…

知足常乐--每日十问

如果你想走出常规&#xff0c;放松心情&#xff0c;以积极的的心态开始新的一天&#xff0c;那就很有必要以自问的方式开始一天&#xff0c;这些问题会给我们带来力量和好心情. 1、我拥有什么&#xff1f; 通常我们会为自己没有的东西而苦恼&#xff0c;却看不到自己拥有的&…

chatgpt赋能python:Python中的“5“+“5“:了解运算符重载和字符串拼接

Python中的 “5”“5”: 了解运算符重载和字符串拼接 Python中的运算符重载允许我们自定义类型的操作符行为。当我们使用加号运算符将两个对象相加时&#xff0c;Python会动态地确定该使用哪种类型的操作符行为。在使用字符串时&#xff0c;加号可以用于字符串的连接&#xff…

chatgpt赋能python:Python中的提取函数——数据清洗中必不可少的利器

Python中的提取函数——数据清洗中必不可少的利器 数据清洗是数据分析过程中不可或缺的一步&#xff0c;而Python中的提取函数则是数据清洗中必不可少的利器。本文将重点介绍一些Python中常用的提取函数&#xff0c;以帮助数据分析师更好地应对实际问题。 什么是提取函数&…

chatgpt赋能python:Python中的“或”语句:使用方法和示例

Python中的“或”语句&#xff1a;使用方法和示例 在Python编程中&#xff0c;“或"语句表示为"or”&#xff0c;它是逻辑运算符的一种形式。"或"语句可以用于组合两个或多个条件&#xff0c;只要其中一个条件成立&#xff0c;整个语句就会返回True。在本…

css3和h5的新特性

H5的新特性 1. 用于绘画 canvas 元素。 2. 用于媒介回放的 video 和 audio 元素。 3. 本地离线存储 localStorage 长期存储数据&#xff0c;浏览器关闭后数据不丢失&#xff1b; sessionStorage 的数据在浏览器关闭后自动删除。 4. 语意化更好的内容元素&#xf…

六、H5新特性

文章目录 一、H5的兼容二、H5新增特性2.1 语义化标签2.2 增强表单2.3 音频、视频 一、H5的兼容 支持 HTML5的浏览器包括Firefox(火狐浏览器)&#xff0c;IE9及其更高版本&#xff0c;Chrome(谷歌浏览器)&#xff0c;Safari,Opera等&#xff0c;国内的遨游浏览器&#xff0c;以…

h5简介和新特性

h5简介和新特性 语义化标签表单新增的type属性表单元素的其他属性新增的表单元素&#xff0c;datalisth5新增表单事件meter标签fieldset标签和legend标签自定义属性规范全屏接口上传图片实时预览进度条参考手册 学习资源推荐 https://blog.csdn.net/qq_42813491/article/detai…

最详细H5新特性

1. 语义化标签 &#xff08;1&#xff09;比如&#xff1a;header、conent、footer、aside、nav、section、article等语义化标签。 &#xff08;2&#xff09;语义化标签的好处&#xff1a;结构清楚&#xff0c;易于阅读&#xff0c;可维护性更高&#xff0c;有利于SEO的优化…

H5新增了哪些新特性

目录 前言 1.语义化标签 2.form表单增强 3.视频和音频 4.Canvas绘图 5.SVG绘图 6.地理位置定位&#xff08;Geolocation API &#xff09; 7.拖放API 8.Web Worker 9.Web Storage 10.Web Socket 总结 前言 本期为大家总结面试时常被问到的一个问题&#xff0c;那就…

HTML 5 的十大新特性

HTML5 十大新特性总结 一、语义标签 二、增强型表单 三、视频和音频 四、Canvas绘图 五、SVG绘图 六、拖拉API 七、WebWorker 八、WebStorage 九、WebSocket 十、地理定位 一、语义化标签 1.1 什么是语义化标签? 语义化标签既是使标签有自己的含义 1.2 语义化标签…

【靶场实战】Vulnhub - JANGOW: 1.0.1 靶标实战

靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/ 靶场IP&#xff1a;192.168.160.215 信息收集 使用Nmap对目标进行扫描 Nmap -sV -O -p- 192.168.160.215 经过漫长的等待扫描完成&#xff0c;该靶标开启了21、80两个端口&#xff0c;21端口运行服务为f…

什么样的打码网站算正规的打码网站

自动打码平台是通过计算机语言对图片图片验证码的一种识别&#xff0c;将图片验证码通过系统自动的识别出来&#xff0c;并且通过一定的途径自动输入需要填写图片验证码的框。这样的平台就成为打码平台平台。实际上就是对于图片验证码的识别破解。答题吧打码平台平台就是利用的…