练习vx防撤销的时候碰到个问题求助一下

练习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

不打断点,直接hook该函数。

就是直接hook这个函数没有打印日志。我就断点看看是不是有进入这个函数

onRevokeMsg 下断 没有进入断点 是你自己撤回了,还是对方撤回的!!!

额。我自己撤回的

所以并不会触发断点。让别人撤回吧 或者用自己小号撤回

好吧。是这个情况啊。测试了。是可以的。对方撤回的不会产生作用了

不会产生作用是什么意思。