Chinaunix首页 | 论坛 | 博客
  • 博客访问: 963768
  • 博文数量: 335
  • 博客积分: 10287
  • 博客等级: 上将
  • 技术积分: 3300
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 15:29
文章分类

全部博文(335)

文章存档

2015年(4)

2014年(15)

2013年(17)

2012年(11)

2011年(12)

2010年(96)

2009年(27)

2008年(34)

2007年(43)

2006年(39)

2005年(37)

我的朋友

分类:

2010-10-13 18:15:17

顺便说下载入:

将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
code 叫操作码。读懂opcode主要是熟悉里面的逻辑跳转以及一些个别助记符的含义。。
通过opcode你就可以清晰的知道里面每个方法资源的调用过程和逻辑跳转过程。做过的例子都有点复杂,就不举例了。。当然,要破解整个apk最好是翻译 opcode和应HexWorkShop查看资源文件相结合比较合理和轻松,尤其是ManiFest.xml这个文件,一定要看清楚里面的 activity和service receiver,permissions 这几个部分的信息,这可能会成为整个破译流程的关键部分 。。。

阅读(764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~