背景
因为苹果审核禁止调用私有方法,在开发过程中很多的有用的私有方法都不能直接使用。那有没有办法可以绕开苹果对私有方法的审核呢?
首先我们猜测下苹果的审核方式:
1、通过扫描二进制文件,mach-O都保存有所有的代码中的方法名字符串,如果直接明文调用私有方法,扫描二进制文件就会被发现。
2、通过运行时的方法调用检测,这种情况需要执行到对应代码才会被发现。(可以在审核界面把对应的代码屏蔽掉。)
实现
如果审核逻辑如上,我们只要将调用的方法名混淆下,在二进制文件扫描阶段就可以避免被扫描出来。
下面就介绍一种方法名加密混淆方法,字节加密。
要加密的方法名是 : test。
1、将方法名转换为char*字节,并把每个字节与一个字节(这里用0x55)进行亦或处理, 最后通过printf将转换后的字节打印出来。
|
|
2、 然后我们代码中通过char数组保存转换后的字节信息,在使用时将其在转换成方法名字符串test。
|
|
注:虽然我们可以使用这种方法避开以上两种苹果的审核,但是也应该尽量避免使用私有方法。我们无法保证那天苹果的审核会不会升级,增加什么新的审核逻辑。
本文作者: ctinusdev
本文链接: https://ctinusdev.github.io/2018/02/25/iOSPrivateMethodEncrypt
转载请注明出处!