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

[原创]绕过抖音SSL Pinning

2021-12-9 10:31
57861

抖音 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即可抓包


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2021-12-10 11:24 被mb_pmoycpww编辑 ,原因:
收藏
点赞3
打赏
分享
最新回复 (21)
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2021-12-9 11:40
2
0
外行人一脸懵逼中。。。
雪    币: 9
活跃值: (279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
杨开银 2021-12-9 16:04
3
0
检测wsa也可以这么干嘛?
雪    币: 49
活跃值: (1657)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flashgg 2021-12-10 01:52
4
0
老铁,头文件怎么导出来的?
雪    币: 2675
活跃值: (3863)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
值得怀疑 2021-12-10 10:22
5
0
真是如听一席话···········
雪    币: 40
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_pmoycpww 2021-12-10 11:02
6
0
flashgg 老铁,头文件怎么导出来的?
class-dump我也是空白的,暂时用的运行时看的
雪    币: 49
活跃值: (1657)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flashgg 2021-12-10 12:28
7
0

朋友,怎么定位xg算法?

最后于 2021-12-11 19:30 被flashgg编辑 ,原因:
雪    币: 1990
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chiguawang 2021-12-14 14:40
8
0
大佬 ,找不到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都没有执行

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

不错的。。

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

我用的是 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编辑 ,原因:
雪    币: 167
活跃值: (3588)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
crifan 2022-11-15 17:27
17
0
mb_pmoycpww class-dump我也是空白的,暂时用的运行时看的

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

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


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

比如:


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

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

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

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


查看AwemeCore中的汇编代码:

* 静态分析,可以用:IDA

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


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


IDA:恢复了符号表的AwemeCore


Xcode:

XCode调试AwemeCore的_RxAnnotationInlineLoader的load


lldb+debugserver:




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