开发学院手机开发Android 开发 Android调试的必杀技——反汇编 阅读

Android调试的必杀技——反汇编

 2010-10-14 06:16:00 来源:本站整理   
核心提示:I/DEBUG ( 1417): 3056502c 00000000I/DEBUG ( 1417): 30565030 00000000I/DEBUG ( 1417): 30565034 00000000I/DEBUG ( 1417): 30565038 00000000I/DEBUG ( 1417): 3056503

I/DEBUG ( 1417): 3056502c 00000000

I/DEBUG ( 1417): 30565030 00000000

I/DEBUG ( 1417): 30565034 00000000

I/DEBUG ( 1417): 30565038 00000000

I/DEBUG ( 1417): 3056503c 00000000

I/DEBUG ( 1417): 30565040 00000000

W/SyncManager( 1434): Updating for new accounts...

通过这个log信息我们可以看到libc.so崩溃了,再研究堆栈发现是libsqilte.so引起的,那么具体是哪一个函数崩溃了呢?这里面没有信息。另外内核加载动态库是动态加载的,就算我们反汇编出来libc.so和libsqlite.so,符号表也没有办法和log中地址对应上,除非我们能知道内核加载libc.so和libsqlite.so的基地址,这样我们就可以通过偏移找到相应的函数了。很幸运,Android确实规定了系统中的大部分库的内核加载地址。文件的位置在build/core下,有对应平台的map文件,比如:Arm平台文件名叫做prelink-linux- arm.map,Mips平台叫做prelink-linux-mips.map。我是在Mips平台出的问题,所以应该用prelink-linux- mips.map文件来定位。文件内容如下:

# 0x7F100000 - 0x7FFF0000 Thread 0 stack

# 0x7F000000 - 0x7F0FFFFF Linker

# 0x70000000 - 0x7EFFFFFF Prelinked System Libraries

# 0x60000000 - 0x6FFFFFFF Prelinked App Libraries

# 0x50000000 - 0x5FFFFFFF Non-prelinked Libraries

# 0x40000000 - 0x4FFFFFFF mmap'd stuff

# 0x10000000 - 0x3FFFFFFF Thread Stacks

# 0x00080000 - 0x0FFFFFFF .text / .data / heap

# core system libraries

libdl.so 0x7EFF0000

libc.so 0x7EF00000

libstdc++.so 0x7EEF0000

libm.so 0x7EE90000

liblog.so 0x7EE80000

libcutils.so 0x7EE00000

libthread_db.so 0x7ED80000

libz.so 0x7ED00000

libevent.so 0x7EC80000

libssl.so 0x7EC00000

libcrypto.so 0x7EA00000

libffi.so 0x7E980000

libsysutils.so 0x7E900000

# bluetooth

liba2dp.so 0x7E780000

audio.so 0x7E700000

input.so 0x7E680000

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Android 调试 汇编

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接