iOS程式分析工具用法

  • 2673
  • 0
  • 2012-10-22

摘要:iOS程式分析工具

 

反汇编文件

mato-iPhone:~ root# otool -tV hello -p _main

hello:

(__TEXT,__text) section

_main:

00002fb4     e92d4080     stmdb     sp!, {r7, lr}

00002fb8     e1a0700d     mov     r7, sp

00002fbc     e24dd008     sub     sp, sp, #8     ; 0x8

00002fc0     e59f0018     ldr     r0, [pc, #24]     ; 0x2fe0

00002fc4     e08f0000     add     r0, pc, r0

00002fc8     eb000005     bl     0x2fe4     ; symbol stub for: _puts

00002fcc     e58d0000     str     r0, [sp]

00002fd0     e59d0004     ldr     r0, [sp, #4]

00002fd4     e1a0d007     mov     sp, r7

00002fd8     e8bd4080     ldmia     sp!, {r7, lr}

00002fdc     e12fff1e     bx     lr

00002fe0     00000024     andeq     r0, r0, r4, lsr #32

 

查看dylib依赖

mato-iPhone:~ root# otool -L hello

hello:

     /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 7.0.0)

     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 173.8.0)

 

符号表dump

iMAC:Developer$ nm -arch arm hello

0000302c S _NXArgc

00003030 S _NXArgv

00003038 S ___progname

00002fa8 t __dyld_func_lookup

00001000 A __mh_execute_header

00003034 S _environ

         U _exit

00002fb4 T _main

         U _puts

00003028 d dyld__mach_header

00002f88 t dyld_stub_binding_helper

00002f3c T start

U代表undefined。T代表二进制代码段。D表示数据段,B则是为初始化的保存在BSS段中的数据。A表示关联符号,初始化时被添入值。

S表示保存对象的未初始化数据,G则是已经初始化的数据。C表示公用符,一般是未初始化全局变量。I表示直接引用其他符号。

N表示调试符号。R表示只读数据。V和W代表若类型。

 

搜索字符串

iMAC:Developer$ strings hello

Hello world!

 

 

 

------------------------------

文章的授權使用CC BY-ND2.5協議。凡是標示“轉載”的文章,均來源於網絡並儘可能標註作者。如果有侵犯您的權益,請及時聯繫刪除或者署名、授權。


Gtalk/Email: cmd4shell  [at]  gmail.com