static和被裁的符号表
为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。
本文就介绍一个防御技巧————利用static关键字裁掉函数符号。
id createBtn() { UIButton *btn = [[UIButton alloc]initWithFrame:CGRectZero]; [btn setFrame:CGRectMake(200, 100, 100, 100)]; [btn setBackgroundColor:[UIColor redColor]]; btn.layer.cornerRadius = 7.0f; btn.layer.masksToBounds = YES; return btn; } static id static_createBtn() { UIButton *btn = [[UIButton alloc]initWithFrame:CGRectZero]; [btn setFrame:CGRectMake(50, 100, 100, 100)]; [btn setBackgroundColor:[UIColor blueColor]]; btn.layer.cornerRadius = 7.0f; btn.layer.masksToBounds = YES; return btn; }
再来看一下反编的结果,对于createBtn()方法,我们可以得到它的伪代码:
函数名虽然面目全非,但是基本操作还是清晰的。
对于static_createBtn()方法呢,我们已经无法看到它任何直观的有价值信息了。