敏感邏輯的保護方案

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();


就可以了。

是的,絕不費一點腦子。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 注:原文---念茜的博客 Objective-C代碼容易被hook,暴露信息太赤裸裸,為了安全,改用C來寫吧! 當...
    richar_閱讀 296評論 0 0
  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,762評論 0 9
  • 發現寫博客想寫明白也是一件不容易的事情。 這次拿YYKIt 源碼 分析分析。希望這次能寫的更好些。 YYKit 系...
    充滿活力的早晨閱讀 6,620評論 4 16
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 在我為一個已婚男子放棄了大學學業,放棄了即將到手的學位證書和畢業證的時候,姨媽依舊接納了我。 我把大學里所有的東西...
    夏米尼閱讀 286評論 0 1