iOS安全攻击和防御(24):敏感的保护方案逻辑(1)

Objective-C代码easy被hook。暴露信息太赤裸裸,为了安全,改用C来写吧!

当然不是所有代码都要C来写,我指的是敏感业务逻辑代码。

本文就介绍一种低学习成本的。简易的。Objective-C逻辑代码重写为C代码的办法。

或许,程序中存在一个相似这种类:

@interface XXUtil : NSObject

+ (BOOL)isVerified;
+ (BOOL)isNeedSomething;
+ (void)resetPassword:(NSString *)password; @end

被class-dump出来后。利用Cycript非常easy实现攻击,easy被hook。存在非常大的安全隐患。

想改,可是不想大改程序结构,肿么办呢?

把函数名隐藏在结构体里,以函数指针成员的形式存储。

这样做的优点是。编译后,仅仅留了下地址,去掉了名字和參数表。提高了逆向成本和攻击门槛。

改写的程序例如以下:

//XXUtil.h
#import <Foundation/Foundation.h> typedef struct _util {
BOOL (*isVerified)(void);
BOOL (*isNeedSomething)(void);
void (*resetPassword)(NSString *password);
}XXUtil_t ; #define XXUtil ([_XXUtil sharedUtil]) @interface _XXUtil : NSObject + (XXUtil_t *)sharedUtil;
@end
//XXUtil.m
#import "XXUtil.h" static BOOL _isVerified(void)
{
//bala bala ...
return YES;
} static BOOL _isNeedSomething(void)
{
//bala bala ...
return YES;
} static void _resetPassword(NSString *password)
{
//bala bala ...
} static XXUtil_t * util = NULL;
@implementation _XXUtil +(XXUtil_t *)sharedUtil
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
util = malloc(sizeof(XXUtil_t));
util->isVerified = _isVerified;
util->isNeedSomething = _isNeedSomething;
util->resetPassword = _resetPassword;
});
return util;
} + (void)destroy
{
util ? free(util): 0;
util = NULL;
}
@end

 最后,依据Xcode的报错指引。把曾经这种调用

[XXUtil isVerified];

相应改成:

XXUtil->isVerified();

就能够了。

是的,绝不费一点脑子。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

iOS安全攻击和防御(24):敏感的保护方案逻辑(1)的更多相关文章

  1. CSRF——攻击与防御

    CSRF——攻击与防御 author: lake2 0x01 什么是CSRF攻击 CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意 ...

  2. 常见【十种】WEB攻击及防御技术总结

    最近参加了一个WEB安全培训,感觉WEB攻击跟防御都是挺有意思的.以下总结比较简短,仅供观赏哈. 一.XSS攻击 [介绍] xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的 ...

  3. csrf 攻击和防御

    CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:       攻击者盗用了你的身份,以你的名义发送恶 ...

  4. CSRF攻击与防御(写得非常好)

    转自:http://blog.csdn.net/stpeace/article/details/53512283 CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forge ...

  5. Web安全之CSRF攻击的防御措施

    Web安全之CSRF攻击的防御措施   CSRF是什么? Cross Site Request Forgery,中文是:跨站点请求伪造. CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击 ...

  6. DDoS 攻击与防御:从原理到实践

    本文来自 网易云社区 . 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁. 危害 根据卡巴斯基 2 ...

  7. 从零学习安全测试,从XSS漏洞攻击和防御开始

    WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS攻击防御. 第一部分:漏洞攻防基础知识   XSS属于漏洞攻防,我们要研究 ...

  8. 转!!CSRF攻击与防御(写得非常好)

    CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:       攻击者盗用了你的身份,以你的名义发送恶 ...

  9. DDoS 攻击与防御:从原理到实践(下)

    欢迎访问网易云社区,了解更多网易技术产品运营经验. DDoS 攻击与防护实践 DDoS 攻击的实现方式主要有如下两种: 自建 DDoS 平台 现在有开源的 DDoS 平台源代码,只要有足够机器和带宽资 ...

随机推荐

  1. SRM589 DV1 250 回文字符串

    其实这道题挺简单的,不过刚开始我钻了一个错误的死胡同.想明白之后才发现. 题目要求用最少的时间来将一个字符串变成回文字符串.(具体题目参看topcoder srm589 DV1 250分值的题目,不便 ...

  2. golang各版本的变化

    https://golang.org/doc/https://golang.org/doc/go1.6https://golang.org/doc/go1.5https://golang.org/do ...

  3. 14.18 InnoDB Backup and Recovery 备份和恢复:

    14.18 InnoDB Backup and Recovery 备份和恢复: 安全数据库管理的关键是 做定期的备份,依赖你的数据卷, MySQL server的数量和数据库的负载,你可以使用那些技术 ...

  4. Linux 下获取LAN中指定IP的网卡的MAC(物理地址)

    // all.h// 2005/06/20,a.m. wenxy #ifndef _ALL_H#define _ALL_H #include <memory.h>#include < ...

  5. jqueryui datepicker refresh

    http://stackoverflow.com/questions/6056287/jquery-ui-datepicker-prevent-refresh-onselect 给选中的TD加背景色

  6. Android JNI 编译正确 但是提示程序有错误无法运行 而且还看不到任何错误提示 的解决方法

    前几篇中一直在通过Android做JNI调用,关于JNI的配置请见:http://blog.csdn.net/watkinsong/article/details/9849973 但是前一段时间就遇到 ...

  7. 一个能够自己主动生成静态库,自己主动安装程序的Makefile

    .PHONY:clean install CC=g++ CFLAGS=-Wall -g BIN=libecho.a INCLUDE=echo SRC=src OBJS=Socket.o Rio.o T ...

  8. twitter分享问题(四)—— Unknown error(api v1过度到V1.1产生)

    unknow error! 今天为了使用GA(谷歌分析)追踪twitter分享,又测试了一下twitter分享功能,发现又出问题(使用sharekit分享).就是“unknow error”,之前也碰 ...

  9. boost.asio系列——buffer

    创建buffer 在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写.buffer函数本身并不申请内存,只是提供 ...

  10. Call Transaction 小节

    采购订单: . CALL FUNCTION ‘ME_DISPLAY_PURCHASE_DOCUMENT’ EXPORTING i_ebeln = itab-ebeln EXCEPTIONS not_f ...