apk反编译方式

一、Apk反编译得到Java源代码

  下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。

  apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件

  源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码

 

  dex2jar 和 jdgui 最新版本下载,分别见google code:

  dex2jar(google code)

  jdgui(google code),最新版本请见 官方

 

  具体步骤:

  首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。

  在命令行下定位到dex2jar.bat所在目录,运行

  dex2jar.bat classes.dex

  生成

  classes_dex2jar.jar

 

  然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:


  

  HelloAndroid源码在反编译前后的对照如下:

   

 

二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件

  如果是汉化软件,这将特别有用

  首先还是要下载上述反编译工具包,其中最新的apktool,请到google code下载apktool(google code)

 

  具体步骤:

  下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exeapktool.batapktool.jar

注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar

 

  在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat d -f abc123.apk abc123,如下图:

  

  上图中,apktool.bat 命令行解释:apktool.bat d -f [apk文件 ] [输出文件夹]

 

  反编译的文件如下(AndroidManifest.xml为例):

   

  将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123(你编译出来文件夹)即可,命令如下:

  

  打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:

  build

  dist

  其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok

 

 

三、 图形化反编译apk

  上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby

  首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk

  

转载于:https://www.cnblogs.com/YaoJianXun/p/5274920.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ADF声明性组件示例

在我以前的文章中,我答应展示如何为智能值列表创建ADF声明性组件。 因此,我将创建一个包含三个元素的组件:标签,输入文本和值的组合框列表。 那很容易。 我在工作空间中创建了一个单独的ADF ViewController项目: 在此项…

Solr集群更新配置的方式

solr集群中配置文件是经常更新的,频率最高的也就是schema.xml和solrconfig.xml这两个配置文件了,对于更新配置文件之前,我们先了解一下集群项目结构 由于在集群模式下,solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理…

java文本框双击可编辑_java swing 文本域双击变为可编辑

java swing如何实现文本域双击变为可编辑呢?给文本域添加鼠标事件监听程序即可:resultTA1new AssistPopupTextArea();resultTA1.setEditable(false);resultTA1.setLineWrap(true);resultTA1.setWrapStyleWord(true);resultTA1.addMouseListener(new MouseAdapter() {Overridep…

OSGi简介–模块化Java

OSGi联盟是这一搁浅的管理机构,它始于1999年。其最初目标是为网络设备创建开放搁浅。 基于此思想,此规范也针对Java引入。 Eclipse在Java中是第一个。 他们于2004年6月推出了基于OSGi的Eclipse IDE。 OSGi是在Java中定义动态模块的方法。 主要为Java实现…

HDU FatMouse's Speed 基本DP

题意:要求找到的体重递增,速度递减的老鼠,并且输出最长的长度数,而且输出各自的序列数。Special Judge 思路:先按体重由小到大排序,再找最长速度递减序列。 转移方程:mou[i].w>mou[j].w&am…

java xmpp openfire_搭建Xmpp服务器Openfire

step1、 安装java环境这里是检测是否安装java的网页如没有安装则进行以下步骤1、下载jdk7的mac版:jdk-7u79-macosx-x64.dmg2、安装好之后,在命令行进入以下路径查看#cd /Library/Java/JavaVirtualMachines/3、再查看你自己安装的版本#ls版本为jdk-8u171-…

Spark程序运行报错解决(1)

报错内容:System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. 解决:Window——Preference——Java——Installed JREs——选中一个Jre 后 Edit 在Default VM arguments 里加入:-Xmx512M 转载于:https://w…

java setsolinger_java socket 的参数选项解读(转)

在MulticastSocket的源代码里有设置多播的方法:public void setInterface(InetAddress inf) throwsSocketException {if(isClosed()) {throw new SocketException("Socket is closed");}checkAddress(inf, "setInterface");synchronized(infLoc…

【转】Linux终端下 dstat 监控工具

转自https://linux.cn/article-3215-1.html dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat克服了这些命令的局限并增加了一些另外的功能,增加了监控项,也变得更灵活了。dstat可以很方便监控系统…

java jdbc连接db2数据库_Java连接db2数据库(常用数据库连接五)

1.安装好db2数据库,并建立表如下:2.eclipse或myeclipse中建立工程并导入java连接db2所需要的jar包db2java.jar 下载地址:http://download.csdn.net/detail/whzhaochao/64149813.建立iConn接口,代码如下:package com.zh…

Oracle通过邀请Weaver和Chin推动JavaFX向前发展

我昨天发布了愚人节帖子,内容涉及加入NASA协助探索红色大行星。 那个帖子与事实相距不远... NASA开发的技术的所有细节都是100%准确的。 哎呀,即使我辞职也是事实! 唯一不正确的部分是我将加入的公司。 在NASA协助探索火星的工作也…

WinForm------TextEdit只能输入数字

代码: this.textEdit1.Properties.Mask.EditMask "\d"; this.textEdit1.Properties.Mask.MaskType MaskType.RegEx; 转载于:https://www.cnblogs.com/tianhengblogs/p/6093634.html

JavaFX:创建Sprite动画

到目前为止,尽管我的大多数文章都涉及JavaFX属性和绑定,但今天我想写一讲我也致力于JavaFX运行时的另一部分:动画API。 在本文中,我将解释如何在JavaFX中编写自定义动画,以及如何使用这种方法为Sprite动画创建类。 &am…

使用UIBinder的GWT自定义按钮

这是一个有关如何在GWT上使用UIBinder创建自定义按钮的示例。 public class GwtUIBinderButton implements EntryPoint {public void onModuleLoad() {Button button new Button();button.setText("Button");button.addClickHandler(new ClickHandler(){Overridepub…

delete postman 传参_PostMan 传参boolean 类型,接口接受的值一直是false

情形:最近写前台页面的一个按钮,功能是:点击后切换状态,显示是或否。字段名称是isTest,类型是boolean 。写完接口,拿postMan测试,传参如下:但是后台接口接受的数据 一直是false,处理&#xff1a…

前端学PHP之文件操作

前端学PHP之文件操作 前面的话 在程序运行时,程序本身和数据一般都存在内存中,当程序运行结束后,存放在内存中的数据被释放。如果需要长期保存程序运行所需的原始数据,或程序运行产生的结果,就需要把数据存储在文件或数…

腾讯云CentOS6.5下安装mysql,并配置好远程访问等权限,途中遇到的问题

1.使用yum命令安装mysql [rootbogon ~]# yum -y install mysql-server 2.设置开机启动 [rootbogon ~]# chkconfig mysqld on 3.启动MySQL服务 [rootbogon ~]# service mysqld start 4.设置MySQL的root用户设置密码 [rootbogon ~]# mysql -u root mysql> select u…

java runtime 异常_Java中RuntimeException和Exception

在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类不可以在不声明的情况下抛出非RuntimeException简单的说,非RuntimeException必要自己写catch块处…

java电脑运行视频演示_javaweb视频第一天(二)

无论通过哪种方式得到的class类对象,是同一个。比较的是地址码这里教会你:如何去使用class对象现在就知道这个:如何使用反射,并且说反射是实现了什么样的功能。如何通过反射得到里面的相应字段,得到里面的相应函数等等…

本月风味– Neo4j和Heroku

Neo4j今年早些时候发起了一项挑战,即“ 种子播云 ”,以使人们使用Neo4j附加组件在Heroku上创建模板或演示应用程序。 经过许多内部辩论之后,我决定进入,但由于缺乏想法而陷入绝望。 当我什么都没做的时候,这个主意就出…