【Android实测】分析apk过程记录(一)

来源:互联网 发布:世界语言翻译软件 编辑:程序博客网 时间:2024/06/10 16:36

最近碰到一个很奇怪的问题,合作方提供的apk运行良好,但提供的对应的源码运行结果与apk不一致,然后他们又找不到对应版本的代码。
今天尝试分析apk,看看能不能看出来点关键的东西。
首先,我拿到了他们的应用开发小工具,其中包括这些功能:

  • 签名、安装及启动系统应用
  • 源码反编译
  • APK反编译
  • 系统签名
  • 命令行
  • 文件MD5码计算

在分析apk过程中,只用到了“源码反编译”和“APK反编译”两个功能,简单目测了一下他的实现方法和各自的作用。

源码反编译

先贴他执行时的命令行显示:

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
D:\Program Files\AppTool>tools\dex2jar\dex2jar.bat classes.dex
D:\Program Files\AppTool>tools\jd-gui\jd-gui.exe classes_dex2jar.jar
D:\Program Files\AppTool>exit

然后发现弹出一个窗口,内容如图:
Java Decompiler

这个图为了视觉效果,缩放了一下,可以看到这个反编译的结果是class文件。

APK反编译

仍然先看执行时的命令行显示:

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
D:\Program Files\AppTool>cd tools\apktool
D:\Program Files\AppTool\tools\apktool>apktool.bat d -f E:\Work-Point\ShowWeb.apk E:\Work-Point\ShowWeb
D:\Program Files\AppTool\tools\apktool>exit

执行完成后,在目录下得到了一些文件夹:
tree
贴个关键文件夹com/example/showweb底下的内容:
showweb-dir
再贴一个根目录的内容:
root-dir

查看及分析

  1. 第一步之后:
    • 可以查看是Java代码。这里我可以看到的是Activity中进行了设置布局、设置属性参数、自定义监听事件等方法。阅读class文件和Java文件,在简单代码里看不出太大区别,思路第一。
  2. 第二步之后:
    • 可以查看Manifest文件,关于Activity和Application等配置,在这里都能看到不是乱码。
    • 可以查看布局文件,res/layout目录下的文件,在这里看不是乱码。
    • 可以查看编译版本,apktool.yml文件使用记事本打开,可以看到apk的versionName、minSdkVersion、targetSdkVersion、packageInfo等信息。

这里需要注意的是,这里不去做反编译操作而是直接解压的话,只可以看到drawable的图片文件,layout、values等处的xml包括manifest直接用记事本程序打开都是乱码。

然后我想看的东西都看到了,也有了一些对实现或者说仿写这个app的灵感、思路。主要还是因为简单。

那么接下来重头戏,如果没有他们的应用开发小工具,我要怎么做才能看到这些东西?

未完待续。

原创粉丝点击