iOS 附加进程问题处理

2021-05-29  本文已影响0人  HotPotCat

一、附加失败排查

在越狱手机上附加支付宝进程时失败了,不论是使用Xcode附加还是手机端的debugserver附加都不行。

  1. 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
  1. 手机端使用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 & 动态调试(获取支付宝账户密码))绕过防护。那么要做到的就是:

  1. tweak工程引入fishhook
  2. Hook反调试代码。

2.1 tweak工程引入fishhook

直接将fishhook源文件引入tweak目录:

image.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的防护并增加exitHook

//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附加进程

Xcode附加进程

2.3.2 手机debug server附加

debug server附加进程

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

上一篇 下一篇

猜你喜欢

热点阅读