|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于iOS开发的学习打个比方就像把汽车分解最底层的原料有塑料钢铁再用这些底层的工具造出来发动机座椅最后再加上写螺丝胶水等把汽车就拼起来了iOS基本都是英文的资料为了不让打击者理清本人程序的敏感营业逻辑,因而我们千方百计进步逆向门坎。
本文就先容一个进攻技能————使用static关头字裁失落函数标记。
道理
假如函数属性为static,那末编译时该函数标记就会被剖析为local标记。
在公布release程序时(用Xcode打包编译二进制)默许会strip裁失落这些函数标记,无疑给逆向者加年夜了事情难度。
考证
写个demo考证一下上述实际,以一段创立Button的代码为例,对应增补一个static版本。
- idcreateBtn()
- {
- UIButton*btn=[[UIButtonalloc]initWithFrame:CGRectZero];
- [btnsetFrame:CGRectMake(200,100,100,100)];
- [btnsetBackgroundColor:[UIColorredColor]];
- btn.layer.cornerRadius=7.0f;
- btn.layer.masksToBounds=YES;
- returnbtn;
- }
- staticidstatic_createBtn()
- {
- UIButton*btn=[[UIButtonalloc]initWithFrame:CGRectZero];
- [btnsetFrame:CGRectMake(50,100,100,100)];
- [btnsetBackgroundColor:[UIColorblueColor]];
- btn.layer.cornerRadius=7.0f;
- btn.layer.masksToBounds=YES;
- returnbtn;
- }
再来看一下反编的了局,关于createBtn()办法,我们能够失掉它的伪代码:
<br>
函数名固然改头换面,可是基础操纵仍是明晰的。
关于static_createBtn()办法呢,我们已没法看到它任何直不雅的有代价信息了。
范围
固然这类办法也有范围性。正如你所晓得的,static函数,只在本文件可见。
冲破范围
怎样让其余文件也能调到本文件的static办法呢?
在本文件制作一个布局体,布局体里包括函数指针。把static函数的函数指针都赋在这个布局体里,再把这个布局体抛进来。
如许做的优点是,既埋没了函数代码也丰厚了挪用体例。
多线程问题还有胶水代码的问题建立一个基于CoreData的工程你会看到他自动创建3个类的对象NSManagedObjectModel管理数据的存储结构文件扩展名是xcdatamodeldNSPersistentStoreCoordinator用来管理底层数据的存储用官方的话说CoreDataisnotarelationaldatabaseorarelationaldatabasemanagementsystem(RDBMS) |
|