比如,我打算到一个VC的viewDidLoad 这里下个断点,符号基地址在hopper中显示如下:
第一条指令地址是“0x00000001000d7b14”.
使用image list -o -f 获得模块的aslr 偏移是“0x00000000000cc000”。如图:
然后,我就在 “0x00000000000cc000+0x00000001000d7b14” 处下了个断点。
进入该VC就会触发断点:
从第一个栈帧frame #0 ,可以看到,断点停在了离我想要的地方偏移了 512个字节。在这里x0,x1 寄存器的值已经别修改过了,不会是我们想要的class, sel 了。
我把上面的断点地址-512得到新的断点地址,下断后,成功的打印了class,sel。如图:
我的问题是,为什么还偏移了512个字节了呢?