跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 这种 crash 算是崩溃在哪一行?
未分類
8 12 月 2020

这种 crash 算是崩溃在哪一行?

这种 crash 算是崩溃在哪一行?

資深大佬 : fffang 1

这种 crash 算是崩溃在哪一行?

比如这个,是执行 objc_retain 崩溃还是执行 ldr 崩溃的?

之所以问这个问题是我在 ldr 处打了断点,按道理说还没执行 ldr 。

大佬有話說 (5)

  • 資深大佬 : Qusic

    上一行,retain bl 过去访问了 0x20 这个无效的地址

  • 資深大佬 : sunnywqf

    估计是 x0 里的对象已经被释放了:

    (lldb) disassemble -n objc_retain
    libobjc.A.dylib`objc_retain:
    0x1c0aa7be0 <+0>: cbz x0, 0x1c0aa7c14 ; <+52>
    0x1c0aa7be4 <+4>: tbnz x0, #0x3f, 0x1c0aa7c14 ; <+52>
    0x1c0aa7be8 <+8>: ldr x8, [x0]
    0x1c0aa7bec <+12>: and x8, x8, #0xffffffff8
    0x1c0aa7bf0 <+16>: ldrb w8, [x8, #0x20] //////// 是在这里挂了, 加个断点看看
    0x1c0aa7bf4 <+20>: tbz w8, #0x2, 0x1c0aa7c18 ; <+56>
    0x1c0aa7bf8 <+24>: orr x8, xzr, #0x200000000000

  • 主 資深大佬 : fffang

    @sunnywqf
    为啥我在 hopper 里或 xcode 断点里看 objc_retain 是这样的

    “`
    imp___stubs__objc_retain: // objc_retain
    0000000100006548 nop ; CODE XREF=-[UIViewController new_initWithCoder:]+84
    000000010000654c ldr x16, #_objc_retain_ptr ; _objc_retain
    0000000100006550 br x16 ; _objc_retain
    ; endp
    “`

  • 主 資深大佬 : fffang

    “`
    – (instancetype)new_initWithCoder:(NSCoder *)coder{
    [self new_initWithCoder:coder];
    return self;
    }
    “`

    @sunnywqf 原始代码就这些,就是 hook 了初始化方法。按照上述代码运行会崩溃,但是直接` [self new_initWithCoder:coder];`这样是不会崩溃的,有兴趣的话可以一起研究下。

  • 資深大佬 : sunnywqf

    @fffang 能给一个更完整的 demo 吗?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具