一、附加失败排查
在越狱手机上附加支付宝进程时失败了,不论是使用Xcode附加还是手机端的debugserver附加都不行。
-
Xcode端直接报错Could not attach to pid lost connection:

相信信息如下:
Details
Could not attach to pid : “25022”
Domain: IDEDebugSessionErrorDomain
Code: 3
Failure Reason: lost connection
User Info: {
DVTRadarComponentKey = 855031;
RawLLDBErrorMessage = "lost connection";
}
--
System Information
macOS Version 10.15.7 (Build 19H2)
Xcode 12.4 (17801) (Build 12D4e)
Timestamp: 2021-05-28T18:02:58+08:00
- 手机端使用
debugserver尝试
zaizai:/usr/bin root# ./debugserver localhost:12346 -a AlipayWallet
debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-1200.2.12
for arm64.
Attaching to process AlipayWallet...
Segmentation fault: 11
直接报错Segmentation fault: 11。这不就是支付宝防止调试了么。找到原因就简单了。
手机端使用debugserver参考:iOS 越狱环境debugserver
二、问题处理
既然支付宝做了防护那么只要绕过检测就能解决问题了。
现在的问题就变成了tweak项目(tweak的使用参考iOS Theos & 动态调试(获取支付宝账户密码))绕过防护。那么要做到的就是:
-
tweak工程引入fishhook。 -
Hook反调试代码。
2.1 tweak工程引入fishhook
直接将fishhook源文件引入tweak目录:

Makefile文件配置FILES增加fishhook.c:
AlipayHook_FILES = src/Tweak.xm src/CSeries/*.c
这样fishhook代码就引入了。
2.2 Hook支付宝防护代码
为了方便直接将monkey生成的AntiAntiDebug.m文件拷贝到根目录并且配置FILES:
AlipayHook_FILES = src/Tweak.xm src/CSeries/*.c src/CSeries/*.m
在AntiAntiDebug.m中打开sysctl的防护并增加exit的Hook:
//some app will crash with _dyld_debugger_notification
rebind_symbols((struct rebinding[1]){{"sysctl", my_sysctl, (void*)&orig_sysctl}},1);
rebind_symbols((struct rebinding[1]){{"exit", my_exit, (void*)&origin_exit}},1);
typedef void (*sys_exit_ptr)(int);
static sys_exit_ptr origin_exit = NULL;
void my_exit(int code) {
NSLog(@"my_exit Hook");
}
然后在Tweak.xm中增加:
#import <UIKit/UIKit.h>
%hook AAAPBootStartPoint
+ (void)load {
// %log; 干掉sysctl调用逻辑
}
%end
这样整个配置就完成了。
2.3 编译安装插件
2.3.1 Xcode附加进程

2.3.2 手机debug server附加

这样整个流程就验证通过了。
⚠️:仅用于学习交流。
demo:alipayhook










