当前位置: 首页 > 编程日记 > 正文

Android APK反编译

转自:http://blog.csdn.net/ithomer/article/details/6727581

一、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.exe,apktool.bat,apktool.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


本文反编译工具包整理历史版本:

Android反编译工具包(升级)  (2012-10-10)

Android反编译工具 (2012-08-21)

android反编译工具 (2011-08-28)

本博客反编译方法,仅供参考学习使用,禁止用于非法和商业等用途,谢谢!

相关文章:

Java泛型进阶 - 如何取出泛型类型参数

在JDK5引入了泛型特性之后,她迅速地成为Java编程中不可或缺的元素。然而,就跟泛型乍一看似乎非常容易一样,许多开发者也非常容易就迷失在这项特性里。多数Java开发者都会注意到Java编译器的类型擦除实现方式,Type Erasure会导致关…

C++11中override的使用

override是C11中的一个继承控制关键字。override确保在派生类中声明的重载函数跟基类的虚函数有相同的声明。 override明确地表示一个函数是对基类中一个虚函数的重载。更重要的是,它会检查基类虚函数和派生类中重载函数的签名不匹配问题。如果签名不匹配&#xff…

平头哥发布一站式芯片设计平台“无剑”,芯片设计成本降低50%

导读:8 月 29 日,在上海举行的世界人工智能大会上,阿里巴巴旗下半导体公司平头哥发布 SoC 芯片平台“无剑”。无剑是面向 AIoT 时代的一站式芯片设计平台,提供集芯片架构、基础软件、算法与开发工具于一体的整体解决方案&#xff…

Windows XP下,JDK环境变量配置

2019独角兽企业重金招聘Python工程师标准>>> 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08; 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择…

Markdown语法简介

Markdown是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档。它目标是实现易读易写。Markdown的语法全由一些符号所组成。Markdown语法的目标是成为一种适用于网络的书写语言。 Markdown优点:纯文本…

吴恩达:AI未来将呈现四大发展趋势

作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:8 月 30 日,世界人工智能大会精彩继续。在今天的全球工业智能峰会上,Landing.AI 创始人及首席执行官吴恩达来到现场,做了题为《人工智能是新电力》的演讲…

嵌入式课程安排 嵌入式培训课程大纲参考

嵌入式是一门综合性的学科,现在学习嵌入式开发不是单纯局限于单片机或者Linux,嵌入式课程中包含着非常多的内容。以粤嵌嵌入式课程进行参考,看看我们要学习嵌入式的话,要掌握哪些必备的技能。嵌入式课程安排包含:1、入…

Linux网站架构系列之Apache----进阶篇

本篇博文为Linux网站架构系列之apache的第二篇,我将带大家一起学习apache的编译参数,目录结构和配置文件等方面的知识,实现对apache服务的进一步掌握,并使之能更好的应用到生产实战中去。一、编译参数在上篇的apache部署中&#x…

仅用10天设计的JavaScript,凭什么成为程序员最受欢迎的编程语言?

导语:在这个世纪之交诞生的 JavaScript,没人想到会发展为当今世界上最流行的语言之一。它不够成熟,不够严肃,甚至连名字都是模仿的 Java。那么,JavaScript 的成功是依靠运气和完美时机的侥幸吗?其实不然——…

C++11中= delete;的使用

C11中,对于deleted函数,编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。 对于 C 的类,如果程序员没有为其定义特殊成员函数,那么在需要用到某个特殊成员函数的时候&…

vue 使用scss

使用vue-cli模板创建的项目中,使用scss步骤 1. cmd命令: cnpm install sass-loader --save-devcnpm install node-sass --sava-dev2.查看package.json文件中是否已自动添加以下信息 3. 转载于:https://www.cnblogs.com/duanzhenzhen/p/10453495.html

EBS form日历可选范围设置(calendar.setup )介绍

Calendar是Template提供给我们的standard object.可以使我们方便的为日期型字段提供日期的选择列表.form中设置日历方法:1. 为日期型字段指定LOV(ENABLE_LIST_LAMP)2. 在字段的KEY–LISTVAL事件中编写代码:Calendar.showCalendar Package包含如下几个Procedure:1. Calendar.sho…

人工智能对地球环境科学的推进

一项德国耶拿[1]和汉堡[2]科学家在《自然》杂志发起的研究表明,人工智能可以有效地推进我们对于地球气候系统的理解。特别是在当前深度学习的潜力还未被完全开发的情况下。在人工智能的帮助下一些复杂的动态环境,如飓风,森林火灾,…

从概念到应用,终于有人把数据挖掘讲明白了

作者:陈封能(Pang-Ning Tan)、迈克尔斯坦巴赫(Michael Steinbach)等来源 | 大数据(ID: hzdashuju)【导语】数据采集和存储技术的迅速发展,加之数据生成与传播的便捷性&am…

C++11中default的使用

在C11中,对于defaulted函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。 C的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷…

Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应...

杂家前文Android颜色对照表只有颜色和十六进制,有时候需要设置r g b分量的int值,如paint.setARGB(255, 127, 255, 212);就需要自己计算下分量的各个值。这里提供一个带有r g b分量的int型的颜色表。注意paint.setAlpha()及paint.setARGB(&…

【redis】c/c++操作redis(对于hiredis的封装)

前言 最近一直在学习redis&#xff0c;通过c/cpp来执行redis命令&#xff0c;使用的是hiredis客户端来实现的。 先简单贴一下代码 头文件 #include <vector> #include <string> #include <hiredis/hiredis.h> typedef enum en_redisResultType {redis_reply_…

OpenCV代码提取:transpose函数的实现

OpenCV中的transpose函数实现图像转置&#xff0c;公式为&#xff1a;目前fbc_cv库中也实现了transpose函数&#xff0c;支持多通道&#xff0c;uchar和float两种数据类型&#xff0c;经测试&#xff0c;与OpenCV3.1结果完全一致。实现代码transpose.hpp&#xff1a;// fbc_cv …

只给测试集不给训练集,要怎么做自己的物体检测器?

9 月5 日&#xff0c;下周四&#xff0c;大家期待已久的由《动手学深度学习》作者&#xff0c;亚马逊首席科学家亲自带领的「深度学习实训营」就要在北京开营了。今天&#xff0c;李沐已经把这次深度学习实训营白天的教学内容和代码上传到 Gituhub 和 D2L.ai 网站了&#xff0c…

MYSQL忘记登录密码

1、关闭Mysql&#xff1a; 如果 MySQL 正在运行&#xff0c;首先杀之 killall -TERM mysqld 2、另外的方法启动 MySQL &#xff1a;bin/safe_mysqld --skip-grant-tables 3、可以不需要密码就进入 MySQL 了。 然后就是 >use mysql>update user set passwordpassword(&qu…

OpenCV代码提取:flip函数的实现

OpenCV中实现图像翻转的函数flip&#xff0c;公式为&#xff1a;目前fbc_cv库中也实现了flip函数&#xff0c;支持多通道&#xff0c;uchar和float两种数据类型&#xff0c;经测试&#xff0c;与OpenCV3.1结果完全一致。实现代码flip.hpp&#xff1a;// fbc_cv is free softwar…

NLP这两年:15个预训练模型对比分析与剖析

作者 | JayLou来源 | 知乎前言在之前写过的《NLP的游戏规则从此改写&#xff1f;从word2vec, ELMo到BERT》一文中&#xff0c;介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里&#xff0c;模型预训练的方法又被Google、Facebook、微软、百度、O…

大三下学期第一周总结

本周以是开学第一周了&#xff0c;在生活方面&#xff0c;生活琐事确实变多了起来。每天上课&#xff0c;看着老师熟悉的面庞&#xff0c;如履春风。感觉学习没有那么多的陌生恐惧。学习是一方面&#xff0c;身体锻炼不能落下。一周至少保证三小时及其以上的运动。身体是革命的…

AD rodc扩展报错

AD rodc扩展报错AD RODC抢夺FSMO五大角色后&#xff0c;架构扩展报错&#xff0c;解决办法参考链接&#xff1a;http://support.microsoft.com/kb/949257/en-us

Dropout、梯度消失/爆炸、Adam优化算法,神经网络优化算法看这一篇就够了

作者 | mantch来源 | 知乎1. 训练误差和泛化误差对于机器学习模型在训练数据集和测试数据集上的表现。如果你改变过实验中的模型结构或者超参数&#xff0c;你也许发现了&#xff1a;当模型在训练数据集上更准确时&#xff0c;它在测试数据集上却不⼀定更准确。这是为什么呢&am…

入行AI,你需要一本Python机器学习入门

​目前机器学习红遍全球。男女老少都在学机器学习模型&#xff0c;分类器&#xff0c;神经网络和吴恩达。你也想成为一份子&#xff0c;但你该如何开始&#xff1f;今天小编推荐这本《Python机器学习》教你快速入门。​01什么是机器学习&#xff1f;从出生的那天起&#xff0c;…

通过transpose和flip实现图像旋转90/180/270度

在fbc_cv库中&#xff0c;提供了对图像进行任意角度旋转的函数rotate&#xff0c;其实内部也是调用了仿射变换函数warpAffine。如果图像仅是进行90度倍数的旋转&#xff0c;是没有必要用warpAffine函数的。这里通过transpose和flip函数实现对图像进行顺时针90度、180度、270度的…

DIY强大的虚拟化环境-技术可行性部分

【技术可行性部分】大体的cpu支不支持呀&#xff0c;实际效果使用呀&#xff0c;截图效果截图嵌套虚拟化[esxi&#xff0c;xenserver&#xff0c;Hyper-V]嵌套虚拟化&#xff1a;经过各种查资料&#xff0c;和测试验证[只测过intel的&#xff0c;amd的有类似的文章请去下面的资…

C++11中rvalue references的使用

Rvalue references are a feature of C that was added with the C11 standard. The syntax of an rvalue reference is to add && after a type.为了支持移动操作&#xff0c;C11引入了一种新的引用类型----右值引用(rvalue reference)。所谓右值引用就是必须绑定到右…

AIの幕后人:探秘“硬核英雄”的超级武器

作者 | 云计算的阿晶 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 掐指一算八年之前&#xff0c;那时正是国内互联网卯足劲头起飞的一年&#xff0c;各行各业表现都很突出&#xff0c;尤其是与人们生活密切相关的手机&#xff0c;正大踏步地从功能机向智能手机转…