师兄最近交给了我一任务,就是将Android的APK文件反编译成Java文件,并且还要用python命令给写出来。之前一直卡在了Python命令行这一步了,后来得到一高人指点才爬出了坑。为了整理知识点,故将这些步骤给分享出来,希望对大家也有所帮助!将APK文件反编译成Java文件

Android的APK文件其实就相当于是一个zip类型的压缩包,我们一般是先将它解压,然后只需提取出其中的classes.dex即可,其余的一大堆文件我们不管。对了,说到这儿有一点要着重吐槽:网上基本上没有现成的APK文件供你下载。我当时是在手机浏览器里才找到一些APK文件的,我把其中两个APK文件的百度云盘链接也贴出来,大家可以自取。

提取码:jv27

下图就是其中一个APK文件解压缩后的内部文件示意图:

按照步骤,我们要做的有两步。先将classes.dex文件编译成classes.jar文件,再将classes.jar文件反编译成classes.javasrc,zip文件,即相应java文件的压缩包。这两步手动编译均对应着两个工具包,第一步是需要dex2jar,第二步是需要jd-gui。这两个工具网上好像也挺难找到免费的,我当时也是花钱在CSDN上面下载的,谁让我这人老实心好呢,免费的送给大家。

提取码:ozjt

这儿还有一点需要提醒大家:就是我上传的是dex2jar-2.0.zip压缩包文件,大家下载之后记得将dex2jar-2.0.zip改成dex2jar.zip文件然后解压。请不要问:为什么我不直接上传dex2jar.zip文件?我记性这么好肯定是不会说我忘了改这种话的。

解压完之后的dex2jar文件示意图大致如下:

这个工具包里面发挥作用的就是我圈住的d2j-dex2jar.bat文件,正如图所示:我们得先将上面提到的APK压缩包里面的classes.dex文件放到dex2jar文件里面中来,然后就是在DOS命令窗口下用cmd命令编译了。步骤很简单,就两步,我直接上图:

编译速度也很快,最终将会得到classes-dex2jar.jar文件。

接下来就是要将这个classes-dex2jar.jar文件反编译成java文件了。此时就该轮到我们的jd-gui(俗称:京东贵)登场了,该工具包内部文件如下图所示:

我打红圈的就是我们要用到的工具,其实就是运行这个exe文件,然后就可以很easy的将classes-dex2jar.jar反编译了。

如图就是在"File"里打开“open file”,勾选classes-dex2jar.jar即可,得到的java文件的内部类如下图所示:

当然了你也可以保存成新文件,到这儿就大功告成了。

接下来要解决的就是如何用python语句将这些手动操作给编译出来了。目前解决的是第一步,即:将APK压缩包里面的classes.dex文件提取至dex2jar-2.0目录下面,然后用d2j-dex2jar.bat编译。具体的python语句如下:

import zipfile, os

new_dir_path = "F:\dex2jar-2.0"

# 读取压缩文件

azip = zipfile.ZipFile("G:/xinge.zip")

# 返回所有文件夹和文件

zip_list = azip.namelist()

# 新dex文件添加的后缀

suffix = 1

for item in zip_list:

# 获取当前item文件的前缀名。如aa.txt的前缀名为aa,后缀名为.txt

item_name = os.path.splitext(item)[0]

# 获取当前item文件的后缀名

item_suffix = os.path.splitext(item)[1]

if item_suffix == ".dex":

# 将当前文件复制粘贴至new_dir_path目录下面

azip.extract(item, path=new_dir_path)

# 如果是要批量处理classes.dex文件,那么下面的os.rename()就有意义了

# 因为每个APK压缩包里面的dex文件均是classes.dex文件

old_file_path = os.path.join(new_dir_path, item)

new_item = item_name + "_"+str(suffix)+item_suffix

new_file_path = os.path.join(new_dir_path, new_item)

os.renames(old_file_path, new_file_path)

# 用python语句执行cmd命令

command = r"F:\Android反编译\dex2jar-2.0\d2j-jar2dex.bat -f F:\Android反编译\dex2jar-2.0\classes.dex"

os.system(command)

在这儿有一点需要提醒大家。使用下列cmd命令执行后得到的jar文件的位置不是和手动在DOS窗口编译得到的jar文件的位置一样的。

command = r"F:\Android反编译\dex2jar-2.0\d2j-jar2dex.bat -f F:\Android反编译\dex2jar-2.0\classes.dex"

os.system(command)

我当时就是在这儿陷住了,当时问了一圈人,终于是知道了,用python语句执行cmd命令后得到的jar文件是存放在该py文件的目录那儿,真的是吐血了,希望大家要是碰到此类情况就注意了。

apk反编译java_Android的APK文件如何反编译成Java文件相关推荐

  1. Android逆向工程--将Apk转成Java文件

    本文记录将Apk转成Java文件的方法. Apk转成Jar 将Apk转换成Jar,我们可以使用开源工具enjarify.具体使用方式为: 下载开源框架enjarify的代码: 在下载的开源框架enja ...

  2. Java的class文件批量反编译成Java文件

    Java的class文件批量反编译成java文件 Class文件是java文件编译后产生的一个文件,class文件便于在软件上运行,但是我们无法阅读中间的程序,所以我们需要将class文件转换成jav ...

  3. JAD反编译class文件成java文件

    class文件是字节码文件,打开谁也看不懂,但是如果需要用里面代码的时候怎么办呢?其实通过JAD就可以进行反编译class文件成java文件 1.下载JAD JAD官网:https://varanec ...

  4. 使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行

    标题使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行 1.在电脑桌面使用快捷键win+r打开 2.打开cmd命令界面之后使用md d ...

  5. JSP文件如何转换成Java文件?

    文章目录 jsp 文件如何转换成 java 文件 jsp 何时开始编译 jsp 编译后的文件存储目录 jsp 文件如何转换成 java 文件 html                         ...

  6. html文件批量快速转换成JSP文件

    html文件批量快速转换成JSP文件 一.新建一个Web项目,把准备好的xxx.html(1个或多个)粘贴到项目的WebRoot文件夹或WebContent\WEB-INF\jsps文件夹(jsps这 ...

  7. Python文件用pyinstaller打包成.exe文件后如何获取Python源码(Python文件反编译)

    此文章自己做个学习记录,也希望对跟我有一样困扰的同学一些帮助! 使用到的工具下载链接我都已经附上,点击下面蓝色字体可直接下载: 1.pyinstxtractor.py 2.wxMEDIT 3.在线编译 ...

  8. Java反编译jar成Java文件

    Luyten简介 Luyten Mac版是Mac平台上的一款Java反编译工具,Luyten Mac版是一款很强大的反编译工具包,是一款github的开源工具,它的功能非常强大,界面简洁明晰.操作方便 ...

  9. cmd编译整个java项目_cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?...

    展开全部 JAVAC 命令62616964757a686964616fe59b9ee7ad9431333335306262详解 结构 javac [ options ] [ sourcefiles ] ...

  10. 把java的class文件转成java文件

    一:下载一个反编译工具,本人在网上下载工具如下: 下载地址:http://varaneckas.com/jad/  我下载的是第一个 放到任意目录解压. 二:打开命令窗口,进入到解压的工具的目录 我的 ...

最新文章

  1. nfs服务器安装与客户端安装
  2. ue如何使用php文件,UltraEdit使用设置
  3. 未处理sqlexception中value_plsql异常处理
  4. C#LeetCode刷题之#581-最短无序连续子数组( Shortest Unsorted Continuous Subarray)
  5. ios如何看idfv_ios获取手机状态 idfa   idfv   网络类型   分辨率   获取运营商
  6. object对象进行深拷贝
  7. OpenGL ES2 学习教程5——顶点属性
  8. 小游戏策划案例精选_小游戏活动策划方案
  9. 一张图读懂中国产业链的变化与机会
  10. 手机用计算机怎么求最高分,计算机中求最高分怎么算【excel 如何去掉一个最高分和一个最低分求平均数】...
  11. 第一款在太空中使用的芯片
  12. ffmepg处理10bit 和8bit yuv总结
  13. 贪心算法Greedy
  14. Helio P10 (MT6755)
  15. obs多推流地址_手把手教你-OBS录屏使用
  16. 基于ppg和fft神经网络的光学血压估计【翻译】
  17. 计网 | PGP协议实验(邮件加密解密)
  18. -1. HTMLCSS 基础总结
  19. 小白安装linux系统-u盘安装lubuntu
  20. CloudCompare源码分析:读取ply文件

热门文章

  1. Windows自带硬盘测试工具使用教程
  2. DBC连接数据库经验技巧
  3. 17-基于51单片机的银行排队叫号系统设计
  4. eclipse做html登录界面代码,在eclipse中怎麽编写一个登陆界面的代码,如新浪邮箱的登陆的? 爱问知识人...
  5. 深入浅出Python——Python高级语法之函数
  6. 小米路由器r3gv2/r4a Lean的OpenWrt固件
  7. 中国工业企业数据库stata处理
  8. 离散数学之主析取范式,主合取范式
  9. AI智能电话机器人源码搭建的原理与功能
  10. Echarts 3D饼图开发