-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Mac应用插件
AloneMonkey edited this page Jun 26, 2020
·
3 revisions
MonkeyDev现已支持给Mac应用写插件啦!!!
- 首先新建工程在MacOS模块最下面选择MonkeyAppMac:
- 将需要注入的目标文件拖入TargetApp文件夹:
- Command + B 运行目标文件,将会自动注入dylib,默认实现了QQ防撤回的功能:
@class MQAIOChatViewController;
@class QQMessageRevokeEngine;
static void (*origin_MQAIOChatViewController_revokeMessages)(MQAIOChatViewController*,SEL,id);
static void new_MQAIOChatViewController_revokeMessages(MQAIOChatViewController* self,SEL _cmd,id arrays){
}
static void (*origin_QQMessageRevokeEngine_handleRecallNotify_isOnline)(QQMessageRevokeEngine*,SEL,void*,BOOL);
static void new_QQMessageRevokeEngine_handleRecallNotify_isOnline(QQMessageRevokeEngine* self,SEL _cmd,void* notify,BOOL isOnline){
}
static void __attribute__((constructor)) initialize(void) {
MSHookMessageEx(objc_getClass("MQAIOChatViewController"), @selector(revokeMessages:), (IMP)&new_MQAIOChatViewController_revokeMessages, (IMP*)&origin_MQAIOChatViewController_revokeMessages);
MSHookMessageEx(objc_getClass("QQMessageRevokeEngine"), @selector(handleRecallNotify:isOnline:), (IMP)&new_QQMessageRevokeEngine_handleRecallNotify_isOnline, (IMP*)&origin_QQMessageRevokeEngine_handleRecallNotify_isOnline);
}
- 启动完成之后,点击"Debug -> Attach to Process"选择刚刚运行起来的QQ进程。
然后在new_QQMessageRevokeEngine_handleRecallNotify_isOnline
这个方法下一个断点,撤回一条消息,即可断下来看到堆栈。
注意: 本工具暂时还不支持本身有反调试的应用,比如百度网盘,如要调试可以使用AntiAntiDebug脚本启动时反反调试。
笔者相关文章:一篇文章走进Mac逆向的世界