首页
社区
课程
招聘
[原创]绕过抖音SSL Pinning
发表于: 2021-12-9 10:31 62343

[原创]绕过抖音SSL Pinning

2021-12-9 10:31
62343

抖音 18.7.0

绕过反调试

使用Xcode调试,发现app还在运行,但调试器已经退出了,需要绕过反调试。
使用Hopper,拖入二进制文件会直接跳到入口处

继续查看awemeMain这个函数,可以看到位于AwemeCore.framework

Hopper拖入AwemeCore.framework,定位到这个函数,可以看到:

svc 指 syscall,0x1a(26) 指 SYS_ptrace(<sys/syscall.h>),0x1f (31) 指 PT_DENY_ATTACH(<sys/ptrace.h>)
该行位于77c3d4(7848916),SVC(0110 00d4)变更为NOP(1f20 03d5)即可

dump头文件

旧版的抖音,还没有这个framework的时候,使用class-dump可以直接看到头文件,新版dump出来的是空的。

还是想看看TTNetworkManagerChromium里面是啥,这里我们直接用运行时

1
NSLog(@"%@", [objc_getClass("TTNetworkManagerChromium") performSelector:@selector(_methodDescription)]);

绕过抖音SSL Pinning

发现了证书,那么直接让这个证书失效

1
2
3
4
5
6
7
%hook TTNetworkManagerChromium
 
- (NSArray *)ServerCertificate {
    return nil;
}
 
%end

Charles即可抓包


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-12-10 11:24 被mb_pmoycpww编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (22)
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
外行人一脸懵逼中。。。
2021-12-9 11:40
0
雪    币: 9
活跃值: (369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
检测wsa也可以这么干嘛?
2021-12-9 16:04
0
雪    币: 49
活跃值: (2233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
老铁,头文件怎么导出来的?
2021-12-10 01:52
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
真是如听一席话···········
2021-12-10 10:22
0
雪    币: 40
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
flashgg 老铁,头文件怎么导出来的?
class-dump我也是空白的,暂时用的运行时看的
2021-12-10 11:02
0
雪    币: 49
活跃值: (2233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

朋友,怎么定位xg算法?

最后于 2021-12-11 19:30 被flashgg编辑 ,原因:
2021-12-10 12:28
0
雪    币: 1990
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大佬 ,找不到18.7.0的ipa,就用18.8.0试了下用frida hook,发现没走到这里面,不是每次请求都会走吗?
var impl = ObjC.classes.TTNetworkManagerChromium['- ServerCertificate'].implementation;
Interceptor.attach(impl, {
    onEnter: function (args) {
        console.log('on enter'); // 
    },
    onLeave: function (retval) {
        console.log("Current return value: ");
    }
})

两个console.log都没有执行

2021-12-14 14:40
0
雪    币: 225
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
听君一席话,如听一席话
2021-12-15 17:48
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
nxc
10

不错的。。

最后于 2021-12-28 15:37 被nxc编辑 ,原因:
2021-12-28 14:40
0
雪    币: 249
活跃值: (508)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
1.加入自己的证书2.干掉所有的证书3.不让他验证证书。很显然,你用的是第二种
2021-12-31 15:44
0
雪    币: 0
活跃值: (353)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
你这个Hopper 是破解版的吗?能否发一份Hopper 破解版的?
2022-7-23 20:49
0
雪    币:
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
一脸懵
2022-8-19 16:47
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
如何查看AwemeCore中方法的汇编代码呢?
2022-10-10 14:35
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
恢复符号表 还是没有OC方法
2022-10-18 14:33
0
雪    币: 167
活跃值: (3733)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16

我用的是 1. 加入自己的(Charles)证书

完整代码是:

#define CHARLES_CERT_FILE @"/Library/PreferenceLoader/Preferences/charles/charles-ssl-proxying-certificate.cer"

%hook TTNetworkManagerChromium

- (NSArray *)ServerCertificate {
    NSArray* serverCertList = %orig();

    NSMutableArray* newCertList = [NSMutableArray arrayWithArray: serverCertList];

    NSString *certResourcePath = CHARLES_CERT_FILE;

    NSFileManager *defaultManager = [NSFileManager defaultManager];
    BOOL isExistedCert = [defaultManager fileExistsAtPath: certResourcePath];
    if (isExistedCert) {
        NSData *certP12Data = [NSData dataWithContentsOfFile: certResourcePath];
        [newCertList addObject: certP12Data];
    }

    NSMutableArray* retNewCertList = [newCertList copy];
    return retNewCertList;
}

%end


最后于 2022-11-15 17:25 被crifan编辑 ,原因:
2022-11-15 17:24
0
雪    币: 167
活跃值: (3733)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mb_pmoycpww class-dump我也是空白的,暂时用的运行时看的

换用支持(ObjC+)swift混淆的class-dump,就可以导出头文件了
详见我的教程:

class-dump · iOS逆向开发:静态分析 (crifan.org)


而支持swift混淆的class-dump,有多个地方都可以下载。

比如:


最后于 2022-11-15 17:29 被crifan编辑 ,原因: 加上链接
2022-11-15 17:27
0
雪    币: 296
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
有大佬或者一起研究抖音算法的吗,可以一起交流
2023-2-18 16:27
0
雪    币: 158
活跃值: (1101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
crifan 我用的是&nbsp;1.&nbsp;加入自己的(Charles)证书完整代码是:#define&nbsp;CHARLES_CERT_FILE&nbsp;@&qu ...

成功了,感谢大神。(自己失误搞错路径了)

最后于 2023-7-4 20:51 被教教我吧~编辑 ,原因: 自己失误
2023-7-4 19:56
0
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mark
2023-7-5 09:24
1
雪    币: 167
活跃值: (3733)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mb_zcdizdck 如何查看AwemeCore中方法的汇编代码呢?

如何查看AwemeCore中方法的汇编代码呢?


查看AwemeCore中的汇编代码:

* 静态分析,可以用:IDA

* 也可以 动态调试 -> 有很多工具可用:


随便贴几个图,供参考:大概长什么样


IDA:恢复了符号表的AwemeCore


Xcode:

XCode调试AwemeCore的_RxAnnotationInlineLoader的load


lldb+debugserver:




2023-7-10 10:11
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
教教我吧~ crifan 我用的是&amp;nbsp;1.&amp;nbsp;加入自己的(Charles)证书完整代码是:#define&am ...
成功了么?我添加了证书好像还是没用啊
2023-9-12 11:46
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
新版里面没有TTNetworkManagerChromium
2024-9-10 02:07
0
游客
登录 | 注册 方可回帖
返回
//