WEB开发网
开发学院手机开发Android 开发 反编译Android中的apk文件 阅读

反编译Android中的apk文件

 2010-08-20 01:25:00 来源:WEB开发网   
核心提示:顺便说下载入:将apk文件复制到tools目录下启动emulator执行 adb shell ***.apk 即可 这种载入实际上是载入到内存中了 tmp不是永久性的要反编译一个apk译文件,需要做以下几步:1.找到apk安装文件2.找到安装软件的*.dex译文件3.dump dex文件4.分析dex文件获取想要的代码

顺便说下载入:

将apk文件复制到tools目录下

启动emulator

执行 adb shell ***.apk 即可 这种载入实际上是载入到内存中了 tmp不是永久性的

要反编译一个apk译文件,需要做以下几步:

1.找到apk安装文件

2.找到安装软件的*.dex译文件

3.dump dex文件

4.分析dex文件获取想要的代码

1.找到apk安装文件

这个比较容易,把手机或者模似器安装好后,可以在eclipse的File Explorer下找到安装程序的apk译文件,也可以通过adb命令找到:

$ adb shell

# cd /system/app

cd /system/app

# ls

2.找到安装软件的*.dex译文件

运行安装软件后,会在android文件系统下生成一个*.dex文件,一般在目录/data/dalvik-cache下,也可以通过adb命令找到:

$ adb shell

# cd /data/dalvik-cache

cd /data/dalvik-cache

# ls

3.编译软件对应的dex文件,通过以下指令:

adb shell dexdump -d -f -h /data/dalvik-cache/data@app@be.citylive.twitpic.apk@classes.dex > twitpic.text

指令参数解释:

-d : disassemble code sections

-f : display summary information from file header

-h : display file header details

-C : decode (demangle) low-level symbol names

-S : compute sizes only

4.获取需要的代码:

打开刚才得到的编译出来的text文件,会看到形如以下的代码:

Class #0 header:

class_idx : 32

access_flags : 196625 (0x30011)

superclass_idx : 61

interfaces_off : 0 (0x000000)

从这个译文件里我们很容易得到代码信息

下一步就要读懂这个txt文件了,先从header中可以看清楚这个应用的总体信息,有几个类,包括内部类,header只是了解概况。要详细去分析下面的每一个class才能真正理解这个软件的设计过程。最好的方法是一边研究里面的opcode一边打开 api来查看里面调用到的类和方法,减少误解的机率。。

opcode就是介于高级编程语言和二进制代码之间的一层中间码,operation

1 2  下一页

Tags:编译 Android apk

编辑录入:coldstar [复制链接] [打 印]
赞助商链接