zoukankan      html  css  js  c++  java
  • android apk 反编译

    1. 反编译资源文件
    apktools 
    http://code.google.com/p/android-apktool/downloads/list         
    下载后要有3个文件  aapt.exe、apktool.bat、apktool.jar

    使用: apktool d  x.apk  目标文件夹
    这种方式.xml 的资源文件都可以反编译出来, 但是源代码会变成 .smali 文件

    AXMLPrinter2.jar 
    //这个不大靠谱,有人试验是apilevel8 以后的就不能反编译


    2. 反编译源代码
    将编译后的 classes.dex 变成 .jar 文件
    dex2jar
    http://code.google.com/p/dex2jar/downloads/list
    1)解压 apk 文件得到 classes.dex 文件
    2)把classes.dex拷贝到dex2jar.bat所在目录
    3)运行 dex2jar.bat classes.dex      生成classes.dex.dex2jar.jar
    注意下载最新的dex2jar,不然有些可能反编译失败


    3. 查看源代码
    JD-GUI
    http://java.decompiler.free.fr/?q=jdgui
    打开上面反编译好的 .jar 文件

    XJad

    和上面的JD-GUI反编译结果不一样,互有优劣,可以互相参照。

    各个手机的系统资源文件在  /system/framework/framework-res.apk  包里,可以反编译拿到。

    代码在 /system/framework/framework.jar 中

    ----------------------------------------------------------------------------------------------
    C2. Jodeclipse---Jode的Eclipse插件
    C3. JadClipse---Jad的Eclipse插件
    关于这两个Eclipse插件的安装可见下面链接:
    http://tgyd2006.javaeye.com/blog/553061
    (C4. 还有朋友提到DJ Java Decompiler,没用过,可以一试!)
    但也有人提出此问题:
    自从eclipse升级到3.3以后jad插件就一直没有成功的安装上去,网上看了好多文章也是以前版本的安装方法,3.3目前通过eclipse的software update的插件安装方式已经不行了。
    解决方法如下:
    1.从http://www.kpdus.com/jad.html#download地址下载最新的jad,我目前下载的是jadnt158.zip;
    2.从http://nchc.dl.sourceforge.net/s ... jadclipse_3.3.0.jar地址下载jadclipse_3.3.0.jar,拷贝到eclipse的plugins目录下;
    3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse 下的
    Path to decompiler 如:D:\eric\jadnt158\jad.exe(jadnt158.zip解压后的目录);
    4.Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”
    大功告成,之后在java类里按住ctrl点击类就可以看到它jad反编译后的源带码了;
    如果发现安装了没有效果,可以删除eclipse主目录下的\configuration\org.eclipse.update后,再执行eclipse -clean试试

    最后,将得到的java文件和得到的xml文件组合可得一个android工程,即可得到相对比较完整的apk源码;但也有些额外加的包没被编译出来。
    但做到这一步已经足够用于学习,我们的目的也就达到了!
    大家也可关注下这两篇文章,用的不同方法(dexdump, baksmali.jar, smali.jar),但效果也还不错:
    http://blog.csdn.net/Android_Tutor/archive/2010/07/09/5724435.aspx
    http://www.cnblogs.com/huyipeng/archive/2010/07/25/1784679.html
    有人会说程序可以用混淆器扰乱代码,但刚从网上看到的一种关于混淆器的说法:
    “用混扰器的代码一般就是去掉所有注释和把变量名、方法名和类名变成一些没意义的名字。反编译后一般都变成a, b , c,...这样的名字,只能一点点的看懂,
    再利用Eclipse的改名方法,一次性的吧相关的名字改成有意义的名称。”

  • 相关阅读:
    DB2 for Z/os Statement prepare
    Foreign key (referential) constraints on DB2 LUW v105
    复制Informational constraints on LUW DB2 v105
    DB2 SQL Mixed data in character strings
    DB2 create partitioned table
    MVC中使用EF的技巧集(一)
    Asp.Net MVC 开发技巧(二)
    Linq使用技巧及查询示例(一)
    Asp.Net MVC 开发技巧(一)
    Asp.Net MVC Identity 2.2.1 使用技巧(八)
  • 原文地址:https://www.cnblogs.com/zijianlu/p/2975113.html
Copyright © 2011-2022 走看看