zoukankan      html  css  js  c++  java
  • Android知识整理(5) apk反编译与代码混淆

    早上与兄弟聊天,谈到他现在公司的android产品,心血来潮,反编了一下,之前接触反编的时候就发现网上很多资料写的非常混乱,正好趁着今天整理一下,保存备用。

    APK反编译---------------------------------------------------------------------------------------------------------------------------------------------------------------

    apk反编是比较简单的,网上资料很多,但是其中良莠不齐,具体来讲,apk反编分为两个部分,一个部分是反编得到java代码的,另一部分是反编得到配置与布局文件的。

    首先总结下怎样获得java代码:

    这里我们需要两个工具分别是dex2jar,还有jd-gui。这两个工具网上下载的地方很多,在这里就不给地址了。

    1、将apk文件直接解压,压缩工具就不用我来推荐了吧。

    2、找到解压后的classes.dex文件,把它放到dex2jar的解压目录下,然后到cmd命令行cd到dex2jar的解压目录下,运行 dex2jar classes.dex

    然后我们会看到"this cmd is deprecated, use the d2j-dex2jar if possible"的警告信息,无视它吧。当出现done的时候说明已经反编完成了。

    能看到,jar文件是会比dex文件稍大一点的。

    3、相信这个时候很多人都知道要怎么做了,直接使用jd-gui打开jar文件就OK了。打开之后如果发现类名、方法名以及变量名都是什么a、b、c....这种的说明是混淆了的。

    然后我们来看下怎样获得配置文件:

    这里,我们需要一个谷歌提供的工具apktool,这里我要提下,有很多文章里面提到apktool的时候,我们会发现其中有不同之处,有的是只有一个apktoo.jar,

    有的则有aapt.exe,apktool.jar,apktool.bat。让人觉得很混乱,这里我就解释下,核心的东西就是apktool.jar,有这个我门才能完成解包、打包等功能,aapt.exe是打包时候需要用到的工具,在这里我们就不谈它了,而apktool.bat是一个方便大家使用apktool.jar来解包的一个批处理程序,他的内容如下

    1 @echo off
    2 set PATH=%CD%;%PATH%;
    3 java -jar "%~dp0apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

    这样讲完后,大家对apktool就有了一个更深入的了解,解包我们只要有apktool.jar和apktool.bat就够了,没有apktool.bat咱们照着上面写一个也行,这样就不至于看着网上的各种版本不知道用哪个了。

    这个工具怎么用呢,简单,还是打开cmd命令行,cd到apktool.jar与apktool.bat所在的文件夹

    运行

    apktool d <file.apk> <dir>

    <file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:abc.apk

    <dir>代表了反编译后的文件的存储位置,比如C:AAA

    如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令

    apktool d –f <file.apk> <dir>

    这样就会强行覆盖已经存在的文件。

    这就是解包后的效果,清单文件、布局文件随便看。

    代码混淆------------------------------------------------------------------------------------------------------------------------------------------------------------------

    时间不多了,我就简略的说下

    2.3.3后,google提供了proguard.cfg文件来作为代码混淆的配置文件,网上的教程也大多基于此,但是4.0发生了一些小小的改变

    http://my.eoe.cn/zgjxxjkon/archive/14791.html

    这篇博客介绍的比较详细,我就不赘述敷衍了。

  • 相关阅读:
    C# 时间格式化
    新线程匿名方法的新用法
    响应类
    图灵API
    Xpath使用
    Meta http-equiv属性
    CAC的Debian-8-64bit安装BBR正确打开方式
    CAC的Debian-8-64bit安装BBR正确方式是?
    Mbps Mb M Kb如何换算
    如何解决服务器远程桌面连接成功但重启却操作失效?
  • 原文地址:https://www.cnblogs.com/lihualuo/p/3688688.html
Copyright © 2011-2022 走看看