iOS安全攻防(二十二):static和被裁的符号表

原创 2014年03月18日 17:11:18

static和被裁的符号表



为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。
本文就介绍一个防御技巧————利用static关键字裁掉函数符号。


原理


如果函数属性为 static ,那么编译时该函数符号就会被解析为local符号。
在发布release程序时(用Xcode打包编译二进制)默认会strip裁掉这些函数符号,无疑给逆向者加大了工作难度。



验证


写个demo验证一下上述理论,以一段创建Button的代码为例,对应补充一个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()方法呢,我们已经无法看到它任何直观的有价值信息了。




局限


当然这种方法也有局限性。正如你所知道的,static函数,只在本文件可见。




打破局限


怎么让别的文件也能调到本文件的static方法呢?
在本文件建造一个结构体,结构体里包含函数指针。把static函数的函数指针都赋在这个结构体里,再把这个结构体抛出去。
这样做的好处是,既隐藏了函数代码也丰富了调用方式。





版权声明:本文为博主原创文章,未经博主允许不得转载。

Mac平台下使用nm命令查看文件的符号表

Mac平台下使用nm命令查看文件的符号表

IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSe

先上个例子: NSString * str1 =[nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceA...
  • cyj_sky
  • cyj_sky
  • 2016年08月19日 11:59
  • 1646

iOS中 Bugly iOS 符号表手动配置详细教程 韩俊强的博客

iOS中 Bugly iOS 符号表手动配置详细教程 韩俊强的博客 2016CSDN博客之星评选助力:动动你的小手,给我投一票吧!http://blog.csdn.net/vote/list.htm...

iOS 符号表恢复 & 逆向支付宝

本文介绍了恢复符号表的技巧,并且利用该技巧实现了在 Xcode 中对目标程序下符号断点调试,该技巧可以显著地减少逆向分析时间。在文章的最后,作者以支付宝为例,展示出通过在 UIAlertView 的 ...

Xcode 8制作动态及静态Framework

Xcode 8制作动态及静态Framework创建iOS动态库 新建工程并选择默认Target为Cocoa Touch Framework, 如图: 2.做编码工作,在这里我简单的写了一个UPM...

UISearchBar(圆角、背景)

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]...

iOS安全攻防(二十二):static和被裁的符号表

原文地址:http://blog.csdn.net/yiyaaixuexi/article/details/21469769 为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想...
  • sharpyl
  • sharpyl
  • 2014年09月28日 12:27
  • 331

static和被裁的符号表

为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。 本文就介绍一个防御技巧————利用static关键字裁掉函数符号。 原理 如果函数属性为 stati...

iOS 符号表恢复 & 逆向支付宝

推荐序 本文介绍了恢复符号表的技巧,并且利用该技巧实现了在 Xcode 中对目标程序下符号断点调试,该技巧可以显著地减少逆向分析时间。在文章的最后,作者以支付宝为例,展示出通过在 UIAlert...

Latex符号表

  • 2015年12月19日 15:28
  • 4.35MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS安全攻防(二十二):static和被裁的符号表
举报原因:
原因补充:

(最多只允许输入30个字)