练习vx704版本的防撤销的时候对onRevokeMsg下断点,但是撤销时,并没有进入断点,然后我又在header里面找了其他带RevokeMsg的函数,然后发现撤销时进入了onRevokeMsgCgiReturn这个函数的断点,于是我修改hook的代码,改成hook这个函数,打印日志,并且不执行函数内容。但是处理后vx的表现就是撤销时一直显示撤销中.想问下是我hook错地方了,还是这个函数hook要特殊处理下?
header中的这几个函数如下
- (void)onRevokeMsg:(id)arg1; | // IMP=0x0000000103c06568 |
---|---|
- (void)reloadRevokeMsgNode:(id)arg1; | // IMP=0x0000000103c06430 |
- (void)reloadRevokeMsg:(id)arg1 after:(unsigned int)arg2; | // IMP=0x0000000103c061ec |
- (void)onRevokeMsgCgiReturn:(id)arg1; | // IMP=0x0000000103c05594 |
- (_Bool)RevokeMsg:(id)arg1 MsgWrap:(id)arg2 Counter:(unsigned int)arg3; | // IMP=0x0000000103c04ebc |
hook代码如下
%hook CMessageMgr
- ( void )onRevokeMsgCgiReturn:( id )sender{
NSLog (@"[kinglog] revokeMsg");
}
%end
调试的步骤结果如下
(lldb) xbr “-[CMessageMgr onRevokeMsgCgiReturn:]”
CMessageMgr onRevokeMsgCgiReturn:
classAddr:105cd6390
selAddr:104b51fa7
methodAddr:103cd5594
Breakpoint 3: where = WeChat`___lldb_unnamed_symbol240173$$WeChat, address = 0x0000000103cd5594
(lldb) c
Process 3485 resuming
Process 3485 stopped
- thread #1, queue = ‘com.apple.main-thread’, stop reason = breakpoint 3.1
frame #0: 0x0000000103cd5594 WeChat___lldb_unnamed_symbol240173$$WeChat WeChat
___lldb_unnamed_symbol240173$$WeChat:
→ 0x103cd5594 <+0>: sub sp, sp, #0x140 ; =0x140
0x103cd5598 <+4>: stp x28, x27, [sp, #0xe0]
0x103cd559c <+8>: stp x26, x25, [sp, #0xf0]
0x103cd55a0 <+12>: stp x24, x23, [sp, #0x100]
0x103cd55a4 <+16>: stp x22, x21, [sp, #0x110]
0x103cd55a8 <+20>: stp x20, x19, [sp, #0x120]
0x103cd55ac <+24>: stp x29, x30, [sp, #0x130]
0x103cd55b0 <+28>: add x29, sp, #0x130 ; =0x130
Target 0: (WeChat) stopped.
(lldb) p $0
(Class) $0 = CMessageMgr
(lldb) p $1
(SEL) $1 = “onRevokeMsg:”
(lldb) p $2
(BOOL) $2 = YES
(lldb) c