• Android的APK文件的反编译方法【转】


    实用的收藏一下。

    来自: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:ProgramFilesdex2jar-0.0.7.4>dex2jar.bat c:testclasses.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.1AndroidManifest.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:ProgramFilesandroid-sdk-windows-1.6_r1platformsandroid-1.6tools>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:playAndroidManifest.xml >AndroidManifest.txt
      2. java -jar AXMLPrinter2.jar D:playreslayoutmain.xml > main.txt
      3. java -jar baksmali-1.2.5.jar-o classout/ d:playclasses.dex
  • 相关阅读:
    delphi TreeView 从数据库添加节点的四种方法
    mac攻略(3) -- brew使用
    mac攻略(2) -- apache站点配置
    mac攻略(1) -- 简单配置php开发环境
    Mac通过brew安装reds、memcached
    golang urlencode
    golang GET 出现 x509: certificate signed by unknown authority
    git取消文件跟踪
    golang使用http client发起get和post请求示例
    PHP判断SQL语句是否合法:mysqli_error()
  • 原文地址:https://www.cnblogs.com/lionfight/p/3291473.html
Copyright © 2020-2023  润新知