敏感逻辑的保护方案

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

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

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

也许,程序中存在一个类似这样的类:

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

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

也许,程序中存在一个类似这样的类:

@interface XXUtil : NSObject

+ (BOOL)isVerified;

+ (BOOL)isNeedSomething;

+ (void)resetPassword:(NSString *)password;

@end

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

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

把函数名隐藏在结构体里,以函数指针成员的形式存储。 这样做的好处是,编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛。

XXUtil.h  #importtypedef 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();


就可以了。

是的,绝不费一点脑子。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 注:原文---念茜的博客 Objective-C代码容易被hook,暴露信息太赤裸裸,为了安全,改用C来写吧! 当...
    richar_阅读 344评论 0 0
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,082评论 0 9
  • 发现写博客想写明白也是一件不容易的事情。 这次拿YYKIt 源码 分析分析。希望这次能写的更好些。 YYKit 系...
    充满活力的早晨阅读 6,810评论 4 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,678评论 19 139
  • 在我为一个已婚男子放弃了大学学业,放弃了即将到手的学位证书和毕业证的时候,姨妈依旧接纳了我。 我把大学里所有的东西...
    夏米尼阅读 319评论 0 1

友情链接更多精彩内容