首页 > 其他分享 >反编译APK获取代码&资源

反编译APK获取代码&资源

时间:2024-05-15 11:52:52浏览次数:25  
标签:dex 反编译 dex2jar 文件 代码 jar APK

反编译APK获取代码&资源

"反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压: 笔者随便解压了一个APK:

我们可以打开res目录,获取里面的图片素材

但是,这种方法,获得的只会是一些.png,或者.jpg这样的位图文件资源,如果是xml类的资源,打开我们会发现是乱码,并且假如我们想看APK程序的Java代码,也是行不通的,因为他们都打被打包到classes.dex文件中! 但是反编译可以解决你的需要~另外,切勿拿反编译来做违法的事,比如把人家的APK重新打包后使用自己的签名然后发布到相关市场...另外,我们是参考别人的代码,而不是完全拷贝!!!切记!!

1.要准备的三个工具

  1. apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
  2. dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
  3. jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载: 反编译相关的三个工具.zip

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

把下载好的apktool解压后,我们可以看到下述文件(忽略那两个csdn,一个是反编译的apk,一个是反编译后文件):

 接下来,双击cmd.exe,来到命令行,键入: apktool.bat d csdn.apk 即可,Enter回车:

然后就可以看到生成的csdn文件夹,里面就有我们想要资源  好的,就是XML资源到手了是吧!图片素材也到手了!


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

把下载好的dex2jar文件夹解压,apk解压后中的classes.dex复制到dex2jar.bat所在的目录下:

打开cmd,来到这个目录下:键入:d2j-dex2jar.bat classes.dex

接着我们可以看到,生成了一个jar包:

 好的,转换完成!


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

好的,打开jd-gui的文件夹

打开后,打开我们3中转换后的jar包,我们可以看见里面的代码:

标签:dex,反编译,dex2jar,文件,代码,jar,APK
From: https://www.cnblogs.com/bluestorm/p/18193565

相关文章

  • RSA加解密懒得写了,记录一下代码
    packagecom.hoyo.common.core.utils;importcom.hoyo.common.core.utils.uuid.UUID;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjavax.crypto.Cipher;importjava.io.ByteArrayOutputStream;importjava.nio.charset.StandardCharsets;importjava......
  • 代码随想录算法训练营第第七天 | 454.四数相加II 、383. 赎金信 、15. 三数之和 、18
    454.四数相加II建议:本题是使用map巧妙解决的问题,好好体会一下哈希法如何提高程序执行效率,降低时间复杂度,当然使用哈希法会提高空间复杂度,但一般来说我们都是舍空间换时间,工业开发也是这样。题目链接/文章讲解/视频讲解:https://programmercarl.com/0454.四数相加II.html......
  • 代码随想录算法训练营第七天 | 454.四数相加II 383.赎金信 15.三数和
    四数相加II题目链接文章讲解视频讲解时间复杂度o(n2)空间复杂度o(n)classSolution{public:intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,vector<int>&nums4){unordered_map<int,int>tw......
  • java代码开发规范
    1、工程结构 工程分为三个module:sdk、biz、api,api依赖bizbiz依赖sdk 1.1、apiapi功能主要是与外部的交互部分,包括向前端提供的接口,向外部提供的RPC服务的实现等。包分类;主要包括的package包括但不限于包名功能描述规范备注api向外部提供的RPC接口实现......
  • 探究——C# .net 代码混淆/加壳
    背景:保密。过程:先查询一下常见的加壳工具:DotFuscator,官方自带,据说免费版混淆程度不高ConfuserEx,只支持.NETFramework2.0/3.0/3.5/4.0/4.5/4.6/4.7/4.8,不支持.NETCoreVirboxProtector,很好很优秀,但是收费NETReactor,最新6.9版收费,PJ版到4.9不支持.NETCoreObfu......
  • 实现Python日志点击跳转到代码位置的方法
    前言在软件开发过程中,日志是一种非常重要的工具,用于记录程序运行时的状态、错误信息以及调试信息。当程序出现问题时,定位到具体的代码位置对于排查问题至关重要。本文将介绍如何在Python日志中实现点击跳转到代码位置的功能,以提高调试效率。为什么需要点击跳转功能?通常情况下,......
  • git 查看当前代码是在哪个 tag 上
    在Git中,查看当前代码所在的tag可以使用以下命令:###查看当前提交所对应的所有tag如果你想查看当前HEAD或者某个特定的commit对应的所有tag,可以使用下面的命令:gittag--containsHEAD这个命令会列出包含当前HEAD的所有tag。如果你想查看某个特定commit的......
  • 使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 这里做AE(AdobeAfterEffact)里的脚本规则,把英文替换成中文,如下swap=thisComp.layer(“Segmentsettings”).effect("%")(“Checkbox”);if(swap==true){s=thisComp.layer(“Segmentsettings”).effect(“S......
  • EAV模型(实体-属性-值)的设计和低代码的处理方案(1)
    一般我们在开发的时候,习惯上使用常规的关系型数据库来设计数据库表,对于一些业务表的字段比较固定的场景,是一种非常不错的选择,而且查询的时候,由于是基于固定的表字段进行查询,性能基本上是最优的。不过有一些场景下,业务信息的经常变化,使用常规的关系型数据库来创建表字段、删除字段......
  • 华为云引领首个代码大模型国际标准立项
    本文分享自华为云社区《华为云引领首个代码大模型国际标准立项》,作者:华为云头条。近日,国际电信联盟电信标准分局第十六研究组(ITU-TSG16)于法国雷恩召开全体会议,《基于人工智能的代码生成技术要求和评估方法》国际标准项目成功获得立项通过。据了解,该项目由中国信通院牵头,联合华......