iOS 西培学堂 - 绕过人脸识别

iOS逆向

Posted by vincent on March 8, 2018

最近在学习驾照,考科目一的时候需要在 西培学堂 上面学习视频 1320 分钟。最主要的是每隔25分钟就要进行一次人脸识别验证,没有立即验证的话单次学习的时间就会失效。本着好好学习的态度,于是想看下能不能友好的进行人脸识别。..

抓包测试

抓包测试发现,人脸识别是在本地进行校验的,识别成功后再将识别的结果图片上传到服务器进行保存,并记录时间。那么这样的话,我们就可以在本地将人脸识别绕过,并传一张假图片给服务器就行了(手动滑稽..)

导出头文件

首先我们在 PP助手上下载已经脱壳的 IPA,然后导出所有头文件。

1
class-dump -H /xx/xx/tbtimingCount.app/tbtimingCount -o /Users/xx/Desktop/header

分析测试

搜索 face 相关的文件

打开 Xcode 新建一个 MonkeyDev 工程,将 ipa 导入工程。

经测试,TbCameraWalk 这个文件用来处理学习计时和调用摄像头进行人脸识别的相关操作。

其中检测到需要人脸识别摄像头被调用时,会响应以下方法:

1
- (void)cwFaceInfoCallBack:(id)arg1;                                // 人脸识别结果

该文件中有一个人脸识别结果回调,返回一个图片信息,界面收到回调时将会调用接口上传人脸识别图片并计时。

检测完成,关闭人脸识别界面方法为:

1
- (void)liveDetectSucess;

编码

在摄像头回调中直接将上面抓包的 Image Base64的数据,手动调用给 Delegate,测试发现后台服务器并没有再次进行图像比较。然后手动调用检测成功,关闭页面。