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()方法呢,我們已經無法看到它任何直觀的有價值信息了。