• Apk文件破解反编译(转)


     首先我们了解下什么是apk

    APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。

    一个android的apk安装包文件结构

    1. META-INF\ (注:Jar文件中常可以看到);

    2. res\ (注:存放资源文件的目录) ;

    3. AndroidManifest.xml (注:程序全局配置文件) ;

    4. classes.dex (注:Dalvik字节码);

    5. resources.arsc (注:编译后的二进制资源文件)。

    了解了之后我们现在就开始来破解它。

    为了方面大家理解,我下了个黄金矿工来图文并茂的给大家讲解,为了解决那些中文编码格式,我改名为 kg1.apk。

    1.    获取apk的资源图片

    绝得他图片不爽?到image目录下就能看到该程序使用的所有图片了如下图。

     

    修改图片:命名还是用他的命名,因为程序中调用的就是这些图片,改了名字可能导致不能正常显示,建议图片大小和名字都和原来的相同。

    2.    查看其他资源文件

    直接用 WinRAR打开,res/drawable直接拖拽出来即可。如下图

     

    但是我们不能直接查看,所以得用其他工具来弄下。继续往下看

    3.    获取xml文件信息

    虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,所以我们需要使用apktool工具,下载地址:https://code.google.com/p/android-apktool/

    下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2

    下载后,解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,如下图

     

    然后我们进入dos反编译。

    DOS在cmd下进入apktool所在路径,然后输入apktool d "XXX1" "XXX2",XXX1指的是你要反编译的apk文件,XXX2指的是反编译后文件存放的路径,

    如:apktool d "e:\apk-open\kg1.apk" "e:\apk-open\kg"就是把我e盘apk-open这个文件下的kg1.apk文件 反编译 到e盘apk-open\kg这个目录下。当看到baksmaling…等就表示正在反编译,如下面我dos窗口操作

     

    4.    反编译dex获取Java源代码

    这个是看源码最重要的,因为大多android的apk文件都是java编写的

    Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,

    下载地址:http://code.google.com/p/dex2jar/

    这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件

    然后可以通过jad工具把jar文件反编译成Java源文件,

    jd-gui下载地址:http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 

    详细步骤:

    解压apk文件,直接拖拽(rar解压软件),找到classes.dex文件

     

    在cmd下进入dex2jar.bat所在路径,

     

    然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称(classes上面解压得到),

    如:dex2jar.bat e:\apk-open\kg1\classes.dex

    (ex2jar.bat后面有空格哦,路径后面不要打符号)就是把我e:\apk-open\kg1\classes.dex这文件给他弄成个一个jar文件,如下图

     

    用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。

     

    最后我们就可以随便弄这个东西了,如果你懂编程,那我们就给他弄到MyEclipse来看,来改,来看他的每个程序具体怎么实现的(因为没改包名,所以有红叉)

     

    以上经过本机win7测试完全通过 ,希望对大家有帮助!

    博客地址: http://www.cnblogs.com/defineconst/
    博客版权: 本文以学习、研究和分享为主,欢迎转载和各类爬虫,但必须在文章页面明显位置给出原文链接。 如果文中有不妥或者错误的地方还望高手的您指出,以免误人子弟。如果您有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
  • 相关阅读:
    HDU 1560 DNA sequence (迭代加深搜索)
    POJ-1077 HDU 1043 HDU 3567 Eight (BFS预处理+康拓展开)
    CSUST 1011 神秘群岛 (Dijkstra+LCA)
    LCA 倍增
    HDU 1003 Max Sum 求区间最大值 (尺取法)
    Codeforce 867 C. Ordering Pizza (思维题)
    POJ 3349 Snowflake Snow Snowflakes (Hash)
    POJ 2774 Long Long Message (Hash + 二分)
    POJ 1200 Crazy Search (Hash)
    前端面试总结(转)
  • 原文地址:https://www.cnblogs.com/defineconst/p/2910965.html
Copyright © 2020-2023  润新知