一、附加失败排查
在越狱手机上附加支付宝进程时失败了,不论是使用Xcode
附加还是手机端的debugserver
附加都不行。
-
Xcode
端直接报错Could not attach to pid lost connection
:
image.png
相信信息如下:
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
目录:
![](https://img.haomeiwen.com/i25092736/eb02976be7669fe4.png)
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
这样整个配置就完成了。
具体的分析在iOS逆向支付宝调试:修改余额(Monkey)
2.3 编译安装插件
2.3.1 Xcode附加进程
![](https://img.haomeiwen.com/i25092736/4875576fa30ad0fa.png)
2.3.2 手机debug server附加
![](https://img.haomeiwen.com/i25092736/43faae2db6148b67.png)
这样整个流程就验证通过了。
⚠️:仅用于学习交流。
demo:alipayhook
网友评论