美文网首页
动态调试MachO文件物理地址

动态调试MachO文件物理地址

作者: 小狼_zy | 来源:发表于2018-05-07 10:52 被阅读0次

在动态调试MachO文件之前,首先需了解一下什么是ASLR(Address space layout randomization)

简单来说,ASLR是在程序运行时,为了防止内存地址被简单破解的一种防护措施。在iOS4.3之前,系统对于内存地址的分配是顺序的,这样很容易对app进行反编译。所以使用ASLR之后,app每次运行时,内存的起始地址都是不一样的,这样大大增加了反编译的困难度。

下图为MachO在内存条运行的缩略图:

在lldb中使用命令image list可获取ASLR分配的起始位置,

$image list[  0] BABA2BAC-C9FF-3C81-A194-18A723675DFC 0x000000010db72000 ~/demo.app/demo

 [  1] AFAB4EFA-7020-34B1-BBEF-0F26C6D3CA36 0x00000001120bf000 /usr/lib/dyld

 [  2] 4015E9B7-0BDE-3909-849B-54CB9DB7DDC4 0x000000010f4a2000 

...

此时,0x000000010db72000就是内存分配给此app的起始位置,每次重新启动此app,起始位置都会发生改变。

我们可以通过MachOView等工具反编译MachO文件,清楚的看到LC_SEGMENT_64的一些基本信息,下图为LC_SEGMENT_64(_TEXT)案例

File Offset表示__TEXT段在MachO文件中的偏移量,此时value为0,说明__TEXT的起始位置即是0x000000010db72000

之后再通过Section64(__TEXT,__objc_methname)  /  C String Literals可获取到每个方法的地址偏移量,如下图:

此时,viewDidLoad的地址偏移量为0x00006CAF,那它的此时在内存中的真实物理地址即是0x000000010db72000 + 0x00006CAF = 0x10DB78CAF

之后在lldb中执行 b -a 0x10DB78CAF即可在断点到viewDidLoad方法,也可使用命令x 0x10DB78CAF查看内存信息。

$ b -a 0x10DB78CAF

$x 0x10DB78CAF

总结:

我们在发布app包时,通常会启用dsYM文件,使用友盟或其他工具能够捕获异常信息,此类工具正是通过分析MachO文件及ASLR分配地址,能够获取到异常方法的地址偏移量,之后使用地址偏移量能够快速的定位到具体的方法名。

相关文章

  • 动态调试MachO文件物理地址

    在动态调试MachO文件之前,首先需了解一下什么是ASLR(Address space layout random...

  • 从 MachO 加载到对象创建!

    MachO MachO -- Mach Object, 是一种用于可执行文件/目标文件(.o)/动态库的文件格式....

  • 从MachO、DYLD到安全防护

    1、MachO 其实MachO是一种文件格式,它包含了可执行文件、动态库、静态库、目标文件、dyld等。对于我们编...

  • MachO动态注入Framework/dylib

    利用动态库注入Framwork、dylib 利用yololib修改MachO文件的Load Commands 在动...

  • MachO文件和LLDB调试

    MachO文件的介绍 常见的格式:• 1.可执行文件• 2.objcet◦ .o 文件(目标文件)◦ ...

  • 6.MachO

    MachO文件 MachO文件 MachO文件结构 DYLD Mach-O其实是Mach Object文件格式的缩...

  • iOS逆向-砸壳(Clutch & dumpdecryp

    MachO文件 -> 苹果加密 -> 加壳文件加壳文件 -> 苹果解密 -> MachO文件(DYLD) 解密过程...

  • iOS逆向工程 - fishhook原理

    fishhook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文件加载原理,通过修...

  • fishHook原理分析

    fishHook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文件加载原理,通过修...

  • fishHook原理

    fishHook fishHook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文...

网友评论

      本文标题:动态调试MachO文件物理地址

      本文链接:https://www.haomeiwen.com/subject/jjhmrftx.html