排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
【小工具】反编译指南
【小工具】反编译指南
嘎嘎软件测试
2021-12-22
2307
1 什么是编译和反编译
相信在大学学习过编译原理这门课程的小伙伴都看过这段话,“编译的主要的目的是将便于人编写、阅读、维护的高级语言所写作的源代码程序,翻译为计算机能解读、运行的低级语言的程序,也就是可执行文件。
那么反之,我们亦可以通过低级语言进行反向工程,获取其源代码。这个过程,就叫做反编译。
”
简单来说,
编译:人读的 > 机器读的;
反编译:机器读的 > 人读的。
我们说Java编译,一般是将java文件转换成class文件。那么反编译就是值将class文件转换成java文件。
java中的编译器:javac是jdk中的JAVA语言编译器,使用javac命令可以将以.java结尾的源文件编译成以.class结尾的能够由jvm识别的字节码。
那么如何进行反编译呢?这就需要借助工具了,接下来我们就来讲讲几种常用的反编译工具。
2 常用的反编译工具
jd-gui:将打成jar包的class文件转化成的java文件,即源码文件。
dex2jar:将dex文件转换为class文件,然后class文件打成jar包。
apktool:编译或者反编译apk文件。
AXMLPrinter2:反编译apk的xxx.xml文件。
在线反编译工具:decompiler,大一统,支持多种文件反编译。
注:
dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。当java程序编译成class后,还需要使用dex工具将所有的class文件整合到一个dex文件。
1、jd-gui
jd-gui下载:
https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-windows-1.6.6.zip
将zip包解压后双击jd-gui.exe即可打开jd-gui。
可直接将jar包直接拖拽到jd-gui页面,即可查看反编译后的源代码。
2、dex2jar
dex2jar下载
:
https://sourceforge.net/projects/dex2jar/
dex2jar使用:
cmd下进入到d2j-dex2jar.bat目录,
执行:d2j-dex2jar.bat classes.dex,
(将apk后缀名改为zip或者rar再解压即可查看
classes.dex
)
得到classes-dex2jar.jar
强制覆盖:d2j-dex2jar.bat ../classes.dex --force。
将classes-dex2jar.jar拖拽到jd-gui即可查看源码。
3、apktool
apltool.jar下载:
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.6.0.jar
,
将jar包重命名为apktool.jar。
apltool.bat下载:
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat
,
将脚本另存为apktool.bat,和apktool.jar放同一个文件夹下。
apktool是否安装成功:
apktool --version。
apktool的使用:
cmd下进入到apktool目录,
反编译:apktool d xxx.apk;
编译打包apk:apktool b xxx。
设置编译后的文件输出到固定文件夹:
apktool d xxx.apk -o (destination)。
覆盖原文件:apktool d -f
xxx.apk。
如果报错非法Dex,比如有些apk的assets目录下有加密后的Dex文件,添加–only-main-classes参数即可:
apktool d -f xxx.apk -only-main-classes。
用apktool反编译apk之后的目录:
4、AXMLPrinter2
下载静态分析工具之-AXMLPrinter2.jar,进入cmd(AXMLPrinter2.jar所在路径),
AXMLPrinter2的使用:
cmd下进入到AXMLPrinter2.jar目录,
1、执行:java -jar AXMLPrinter2.jar AndroidManifest.xml>AndroidManifest.txt
(注:可将需要解析的xml放到和jar同级目录下)
2、执行:java -jar AXMLPrinter2.jar AndroidManifest.xml
(直接在控制台查看AndroidManifest.xml文件内容)
源AndroidManifest.xml内容
(将apk后缀名改为zip或者rar再解压即可查看AndroidManifest.xml)。
反编译AndroidManifest.xml文件后AndroidManifest.xml内容
5、在线反编译工具
https://www.decompiler.com/
直接将文件上传上去,即可查看反编译后的代码,非常方便。
3 总结
为什么需要反编译呢?假设被人给我们提供一个jar包或者apk包,我们可以通过反编译查看其源代码来分析代码或者定位问题。
感兴趣的小伙伴可以跟着教程实际操作一波,也许哪天就用到了呢,多去了解些基础知识准没错。
我们下期再见~
数据库
文章转载自
嘎嘎软件测试
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨