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()方法呢,我们已经无法看到它任何直观的有价值信息了。
iOS安全攻防(二十二):static和被裁的符号表,布布扣,bubuko.com
原文:http://blog.csdn.net/yiyaaixuexi/article/details/21469769