OC 简单的函数名混淆

方法抄自念茜的博客:
http://blog.csdn.net/yiyaaixuexi/article/details/29201699

使用了一下,感觉很棒,有需要的可以试一下。

混淆函数名,这里使用的是#define来将函数名定义成宏,我们原本写好的文件不用做任何改变,只需要加一个混淆的宏文件,然后在PrefixHeader.pch中引用一下即可。
当开发的时候,可以把PrefixHeader.pch的混淆头文件注释掉,这样开发过程中就可以正常使用xcode的函数名联想。

废话不多说,拿起键盘就是干:
第一步:
在自己的项目根目录,新建一个混淆的头文件,取名:codeObfuscation.h
第二步:
在codeObfuscation.h中定义好我们需要混淆的函数宏
先看一下需要被混淆的oc文件,这里随便搞了一个:

OC 简单的函数名混淆_第1张图片

编辑codeObfuscation.h文件,如图:

OC 简单的函数名混淆_第2张图片

额,我这里拿了中文来做函数名,是不是有点小变态......

第三步:
在PrefixHeader.pch中引入这个.h文件。


OC 简单的函数名混淆_第3张图片

第四步:
猥琐的编译一下

第五步:
看下编译结果。
使用class-dump导出文件的文件头。
class-dump的下载地址:https://github.com/0xced/class-dump/tree/swift-binaries

使用方法:

class-dump -H xxxx -o  xxxx_headers

查看下结果:

OC 简单的函数名混淆_第4张图片

额,函数名已经成功变成了乱码,有人要逆向你app的话得稍微费点脑子了。

再看看hopper里面的效果:


OC 简单的函数名混淆_第5张图片

第六步:
结束

以上是一个很简单的混淆例子,知道了这个的实现原理,我们就能够在此基础上加上一些更自动化的东西,如念茜的博客中的自动生成随机字符串,还有别人写好的使用python脚本自动提取项目中的函数名自动生成宏文件等等。

祝大家好运!

你可能感兴趣的:(OC 简单的函数名混淆)