实用的收藏一下。

来自:http://www.dewen.org/q/711/%E8%AF%B7%E6%95%99Android%E7%9A%84APK%E6%96%87%E4%BB%B6%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E6%96%B9%E6%B3%95

反编译 apk文件 操作方法

  1. 需要下载工具
  2. xjad.exe
  3. dex2jar.bat
  4. AXMLPrinter2.jar
 

第一步:反编译Java代码:

  1. 先把 XXX.apk 文件改为 XXX.zip
  2. 用winrar打开会看到一个文件 classes.dex
  3. C:\ProgramFiles\dex2jar-0.0.7.4>dex2jar.bat c:\test\classes.dex
  4. 之后就会看见一个文件生成 classes.dex.dex2jar.jar
  5. 用jad把这个 jar文件反编译就可以看到里面的源码
 

第二步:修正java代码 这步骤靠的是真功夫。

第三部:反编译 xml文件

 
  1. 反编译 apk包中的  XML文件
  2. 需要jar包:AXMLPrinter2.jar
  3. java -jar AXMLPrinter2.jar 51_v1.1\AndroidManifest.xml AndroidManifest_read.xml
  4. 写一个批处理文件
  5. ::@echo off
  6. rem 正在搜索...
  7. for/f "delims="%%i in('dir /b /a-d /s "*.xml"')do java -jar AXMLPrinter2.jar  %%i >%%i_temp
  8. rem 搜索完毕
  9. pause
 

  再用rename *.xml_temp *.xml 把文件名改为xml即可

第四步: 按照解析出来的R.java 的对应关系 把相关组件的ID 对应起来 这一步靠的是耐心。

--------------------------

通过dex2jar工具进行反编译

首先要下载两个东西:

1.dex2jar:http://code.google.com/p/dex2jar/downloads/list 
2.JdGUI:http://java.decompiler.free.fr/?q=jdgui (反编译Jar包,查看Jar包的源代码的GUI工具) 
1.下载一个.apk程序安装包,将其文件名.apk改为.zip后进行解压。 
2.把其中的class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,将会在其文件夹下生成classes.dex.dex2jar.jar。 
3.运行JD-GUI工具(它是绿色无须安装的),打开上面的jar文件,即可看到源代码。

--------------------------

1、dexdump方法
dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中:

  1. D:\ProgramFiles\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt
 

得到的文件内容,描述了类的信息,但是可读性太差。

2、dex2jar + XJad 方法
实现参考@范铭川提供的方法,好处在于,通过XJad反编译后,大家可直接看到java源文件,缺点在于只能反编译出开发时的java文件,而开发时使用的lib包不能反编译出来。

3、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法
AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容。
baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具。

 
    1. java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml >AndroidManifest.txt
    2. java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt
    3. java -jar baksmali-1.2.5.jar-o classout/ d:\play\classes.dex

Android的APK文件的反编译方法【转】的更多相关文章

  1. [转]Android应用安装包apk文件的反编译与重编译、重签名

    背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...

  2. 将HTML5封装成android应用APK文件的几种方法

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  3. 将HTML5封装成android应用APK文件的几种方法(转载)

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  4. 将HTML5封装成android应用APK文件的几种方法(转)

    作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强 ...

  5. html5 如何打包成apk,将H5封装成android应用APK文件的几种方法

    直接使用编程软件提供的方法: 1.需要下载安装MyEclipse2014,Android SDK,eclipse(需配置Android开发环境) Java和Android环境安装与配置. 2.打开My ...

  6. Android 将HTML5封装成android应用APK文件的几种方法

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  7. Android odex,oat文件的反编译,回编译

    现在,许多Android手机的ROM包在生成过程中都启用优化,把jar文件抽空,生成odex/oat和vdex文件,以在运行时省掉编译时间.如果想对这些jar进行修改,就要修改它们所对应的odex或者 ...

  8. Android安全攻防战,反编译与混淆技术完全解析(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...

  9. 简单的Android之apk包反编译方法

    网上相关的文章一大堆了,我只是总结下自己的反编译方法和工具 工具下载地址: http://download.csdn.net/detail/zsjangel/7104663 下载上面的三个工具的压缩包 ...

随机推荐

  1. The behavior of App killed or restored by Android System or by users

    What's the behavior of App killed or restored by Android System or by users? First, user kills the a ...

  2. js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键

    js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键 一.总结 一句话总结:event.which属性. 1.如何获取事件发生的时间? timeStamp属性 event.timeStamp 属性 ...

  3. UVA 11732 - strcmp() Anyone? 字典树

    传送门:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  4. icvPrecalculate

    /* *icvPrecalculate *作用:计算特征值,并排序 *详细来说也就是依据训练样本信息和haar特征信息,在函数内部引用icvGetTrainingDataCallback来 *分批计算 ...

  5. Python爬虫之路——简单的网页抓图

    转载自我自己的博客:http://www.mylonly.com/archives/1401.html 用Python的urllib2库和HTMLParser库写了一个简单的抓图脚本.主要抓的是htt ...

  6. 在线算法与离线算法(online or offline)

    1. 在线算法(online) PFC(prefix-free code)编码树的解码过程:可以在二进制编码串的接收过程中实时进行,而不必等到所有比特位都到达后才开始: 2. 离线算法(offline ...

  7. 微信测试号开发之四 获取access_token和jsapi_ticket

    原文:https://blog.csdn.net/qq_37936542/article/details/78549233 access_token:公众号的全局唯一接口调用凭据,公众号调用各接口时都 ...

  8. 用SQL找出前N名

    业务系统中常常会有排名的需求,考试和比赛中则更普遍了.Excel 中也有个 Rank 函数供排名之用,数据库中更不例外了. 如果须要找出工资最高的前三个员工工资(及其员工号). 只是."前三 ...

  9. [Angular Unit Testing] Shallow Pipe Testing

    import { TestBed, ComponentFixture } from '@angular/core/testing'; import { BrowserDynamicTestingMod ...

  10. [Docker] Container & image (docker run)

    image: stopped container Run a container: docker run -d --name web -p : nigelpoulton/pluralsight-doc ...