反编译apk获得源代码

花点时间折腾了一下,把apk反编译查看源代码

0.将apk拖入AndroidStudio,利用AS自带的APK Analyzer 可直接查看apk内的图片,xml内容,dex结构,文件尺寸

1.把apk文件的后缀改为.zip,用解压软件解压;打开res目录,得到一些图片资源,里边的 xml 都是Binaray XML形式,需要再次转化成 xml 才能查看,Java代码是classes.dex格式,也无法直接查看。

2.准备三个工具

  • apktool:将apk内的资源全部提取出来,可直接查看xml,也可以用于在修改资源后重新打包apk
  • dex2jar:将apk反编译成Java源码(将classes.dex转化为jar文件)
  • jd-gui:查看dex2jar转换后的jar文件,即查看Java源代码文件

3.使用apktool反编译获得图片与XML资源:

  • 打开apktool目录,把apk文件放到当前目录,双击cmd.exe,执行命令apktool.bat d MyFirstApp.apk,结果如下:

  • 分析可以知道是cmd.exe找不到Java运行环境,但是我的Java环境变量是配置好了的,遂改用本地cmd,结果如下:

  • 解决方法:下载新的apktool:下载地址,文件名改为apktool.jar,把原来的apktool.jar删除,再次运行,结果如下:

  • apktool目录下多了一个目录文件,apktool反编译出来只能得到apk的smali文件,即汇编语言版本,并不能得到源代码

  • apktool其他命令:
// 提取资源
apktool d <apk_name>
// 提取资源并指定输出目录
apktool d <apk_name> -o <foleder_name>
// 重新打包apk
apktool b <folder_name>
//重新打包apk并指定输出apk名字
apktool b <folder_name> -o <new_apk_name>

4.使用dex2jar将classes.dex转换成jar文件

  • apk解压后中的classes.dex复制到dex2jar.bat所在的目录下,打开cmd,来到这个目录下,执行命令d2j-dex2jar.bat classes.dex

  • 当前目录下多了一个文件classes-dex2jar.jar

  • dex2jar其他命令:
// 将 dex 文件转成 jar 文件
d2j-dex2jar <dex_name> -o <jar_name>
//将apk文件转成jar文件
sh d2j-dex2jar.sh -f <apk_name>

5.使用jd-gui查看jar包中的Java代码

  • jd-gui 可视化反编译查看 .jar 文件
  • 参考的第二篇文章说jd-gui只能适配java8,否则无法正常打开运行,但我的Java环境是Java10,运行看起来正常

参考文章:

http://www.runoob.com/w3cnote/android-tutorial-decompile-apk-get-code-resources.html

https://www.jianshu.com/p/2bbe7112f940

内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值