iOS網路請求小知識: get 和post 布林值引數處理

語言: CN / TW / HK

小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。

本文同時參與 「掘力星計劃」     ,贏取創作大禮包,挑戰創作激勵金

前言

get 和post 布林值引數處理:如果後臺Bool 引數沒有同時支援【 0,1】 ;和【 true false】,get請求的時候 就需要特殊處理。

I、使用NSNumber傳BOOL值的處理

使用NSNumber 傳BOOL值引數時,需要區分get 和Post進行處理。

1.1 問題分析:

使用NSNumber 傳BOOL值的時候,get 和post對應的引數不一致

```objectivec [params setValue:[NSNumber numberWithBool:self.viewModel.multipleSwitchCellTableViewCellModel.IsSon] forKey:@"IsSon"];//

```

這個程式碼使用Post 會將請求引數IsSon 自動轉為true/false

在這裡插入圖片描述

但是get 請求的時候就是預設0和1 不會進行將引數IsSon 自動轉為true/false

在這裡插入圖片描述

1.2 解決方案

如果後臺get請求沒有同時支援【 0,1】 ;和【 true false】,只支援true false的時候,就需要特殊處理。

  • get請求的正確處理

```objectivec // get 不會自動轉為 "IsSon": true,// "IsSon": false, //get 需要自己處理 if(self.viewModel.multipleSwitchCellTableViewCellModel.IsSon){ [params setValue:@"true" forKey:@"IsSon"];//

}else{

    [params setValue:@"false" forKey:@"IsSon"];//

}

```

在這裡插入圖片描述

II、擴充套件:敏感邏輯的保護

2.1 、把函式名隱藏在結構體裡,以函式指標成員的形式儲存

把函式名隱藏在結構體裡,以函式指標成員的形式儲存。

編譯後,只留了下地址,去掉了名字和引數表,提高了逆向成本和攻擊門檻

```objectivec // Created by devzkn on 18/09/2017. // Copyright © 2017. All rights reserved. //

import

@interface KNUtil : NSObject

/** 把函式名隱藏在結構體裡,以函式指標成員的形式儲存。

編譯後,只留了下地址,去掉了名字和引數表,提高了逆向成本和攻擊門檻 / typedef struct _util { void (checkKNSign)(char keys[], unsigned char output); }CheckKNSignUtil_t ;

define ShareKNUtil ([KNUtil sharedUtil])

  • (CheckKNSignUtil_t *)sharedUtil; ```

  • 呼叫方法

```objectivec ShareKNUtil->checkKNSign(key, output);

```

2.2、使用巨集進行替換字串

  • 根據字首搜尋出需要混淆的類名、方法名, 生成對應的巨集檔案

```objectivec

define run OmWJoTZfCqoPshvr

define iosre egnjoOFDrFiQVRgr

```

靜態分析時hopper等反彙編工具無法根據string搜尋到關鍵字元

III、see also

更多資訊和服務請關注#小程式:iOS逆向,只為你呈現有價值的資訊,專注於移動端技術研究領域。