static和被裁的符号表
来源:互联网 发布:阿里云centos图形界面 编辑:程序博客网 时间:2024/05/18 03:58
为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。
本文就介绍一个防御技巧————利用static关键字裁掉函数符号。
原理
在发布release程序时(用Xcode打包编译二进制)默认会strip裁掉这些函数符号,无疑给逆向者加大了工作难度。
验证
- 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函数的函数指针都赋在这个结构体里,再把这个结构体抛出去。
这样做的好处是,既隐藏了函数代码也丰富了调用方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。
0 0
- static和被裁的符号表
- iOS安全攻防(二十二):static和被裁的符号表
- iOS安全攻防(二十二):static和被裁的符号表
- /符号和\符号的区别
- 符号表和链接选项 的关系
- 符号表的作用和地位
- 汇编语言的符号、标号和变量符号
- 回车符号和换行符号的区别
- 关于C++中几种常用的符号static, explicit, friend, inline
- error LNK2001: 无法解析的外部符号 "public: static ......"
- 无法解析的外部符号 "public: static class cocos2d::CCLuaEngine *
- Typeglob和符号表
- C++ static变量出现 无法解析的外部符号:public: static 的问题
- static变量和static函数的用法
- static变量和static函数的用法
- private static 和public static 的区别
- 关于static和非static的林林总总
- const static 和 static 成员的初始化
- C# HTTP Module 注册
- php搭配js或jquery用ajax完成三级联动
- 二分查找,数组
- oj打印数字图形
- 转:Redis使用认证密码登录
- static和被裁的符号表
- .bss段 .data段 C语言后汇编汇编查看代码
- 百度地图——定位
- Elastic-Job何为分布式作业
- SynchronousQueue学习笔记
- 越狱检测的攻与防
- 第一章 对象导论 1.8-1.9
- crontab
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结