小魔女 发表于 2015-1-18 11:30:22

IOS设计iOS平安攻防(二十四):敏感逻辑的回护计划(1)仓酷云

打开.xib的文件打开的就是IBIB和代码交互用的是IBActionIBOutlet这些标记这些标记追踪到他们的定义其实对编译器来说什么都不表示Objective-C代码简单被hook,表露信息太光秃秃,为了平安,改用C来写吧!

<br>
固然不是全体代码都要C来写,我指的是敏感营业逻辑代码。
本文就先容一种低进修本钱的,浅易的,Objective-C逻辑代码重写为C代码的举措。
大概,程序中存在一个相似如许的类:

[*]@interfaceXXUtil:NSObject
[*]
[*]+(BOOL)isVerified;
[*]+(BOOL)isNeedSomething;
[*]+(void)resetPassword:(NSString*)password;
[*]
[*]@end
被class-dump出来后,使用Cycript很简单完成打击,简单被hook,存在很年夜的平安隐患。

<br>想改,可是不想年夜改程序布局,肿么办呢?
把函数名埋没在布局体里,以函数指针成员的情势存储。
如许做的优点是,编译后,只留了下地点,往失落了名字和参数表,进步了逆向本钱和打击门坎。
改写的程序以下:

[*]//XXUtil.h
[*]#import<Foundation/Foundation.h>
[*]
[*]typedefstruct_util{
[*]BOOL(*isVerified)(void);
[*]BOOL(*isNeedSomething)(void);
[*]void(*resetPassword)(NSString*password);
[*]}XXUtil_t;
[*]
[*]#defineXXUtil()
[*]
[*]@interface_XXUtil:NSObject
[*]
[*]+(XXUtil_t*)sharedUtil;
[*]@end

[*]//XXUtil.m
[*]#import"XXUtil.h"
[*]
[*]staticBOOL_isVerified(void)
[*]{
[*]//balabala...
[*]returnYES;
[*]}
[*]
[*]staticBOOL_isNeedSomething(void)
[*]{
[*]//balabala...
[*]returnYES;
[*]}
[*]
[*]staticvoid_resetPassword(NSString*password)
[*]{
[*]//balabala...
[*]}
[*]
[*]staticXXUtil_t*util=NULL;
[*]@implementation_XXUtil
[*]
[*]+(XXUtil_t*)sharedUtil
[*]{
[*]staticdispatch_once_tonceToken;
[*]dispatch_once(&onceToken,^{
[*]util=malloc(sizeof(XXUtil_t));
[*]util->isVerified=_isVerified;
[*]util->isNeedSomething=_isNeedSomething;
[*]util->resetPassword=_resetPassword;
[*]});
[*]returnutil;
[*]}
[*]
[*]+(void)destroy
[*]{
[*]util?free(util):0;
[*]util=NULL;
[*]}
[*]@end

<br>最初,依据Xcode的报错指引,把之前如许的挪用

[*];
对应改成:

[*]XXUtil->isVerified();
就能够了。
是的,毫不费一点头脑。

继承自相应的不可变类比如NSMutableArray继承自NSArray他们都添加了可以改变对象内容的方法比如-(void)addObject:(id)anObject添加对象-(void)removeObject:(id)anObject删除对象上面只是一个大概的总结

只想知道 发表于 2015-1-21 08:52:23

有办法利用自己手头的电脑立刻开始这个美妙旅程的。

分手快乐 发表于 2015-1-24 15:49:52

在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。

活着的死人 发表于 2015-2-2 06:44:15

近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,

飘飘悠悠 发表于 2015-2-4 13:27:44

好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。

再见西城 发表于 2015-2-5 15:16:05

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

变相怪杰 发表于 2015-2-12 11:06:27

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。

精灵巫婆 发表于 2015-3-3 11:27:17

看《iPhone 4与iPad开发基础教程》,跟着一步步来

莫相离 发表于 2015-3-7 01:34:22

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

若相依 发表于 2015-3-14 00:25:28

边吃零食边看Stanford的视频教程

山那边是海 发表于 2015-3-20 11:02:34

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

再现理想 发表于 2015-3-25 17:12:30

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了

admin 发表于 2015-3-30 17:11:10

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

飘灵儿 发表于 2015-4-4 16:38:11

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

小女巫 发表于 2015-4-10 05:42:46

以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。

金色的骷髅 发表于 2015-4-16 06:26:53

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

小妖女 发表于 2015-4-27 08:54:47

看《iPhone 4与iPad开发基础教程》,跟着一步步来

不帅 发表于 2015-4-27 17:33:03

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

愤怒的大鸟 发表于 2015-4-30 19:28:38

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

灵魂腐蚀 发表于 2015-5-2 04:52:35

要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
页: [1]
查看完整版本: IOS设计iOS平安攻防(二十四):敏感逻辑的回护计划(1)仓酷云