阅读 304

iOS网络请求小知识: get 和post 布尔值参数处理

前言

get 和post 布尔值参数处理:如果后台Bool 参数没有同时支持【 0,1】 ;和【 true false】,get请求的时候 就需要特殊处理。

I、使用NSNumber传BOOL值的处理

使用NSNumber 传BOOL值参数时,需要区分get 和Post进行处理。

1.1 问题分析:

使用NSNumber 传BOOL值的时候,get 和post对应的参数不一致

    [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请求的正确处理

    // 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 、把函数名隐藏在结构体里,以函数指针成员的形式存储

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

编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛

//  Created by devzkn on 18/09/2017. //  Copyright © 2017. All rights reserved. // #import <Foundation/Foundation.h> @interface KNUtil : NSObject /**  把函数名隐藏在结构体里,以函数指针成员的形式存储。    编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛  */ typedef struct _util {     void (*checkKNSign)(char *keys[], unsigned char *output); }CheckKNSignUtil_t ; #define ShareKNUtil ([KNUtil sharedUtil]) + (CheckKNSignUtil_t *)sharedUtil; 复制代码

  • 调用方法

     ShareKNUtil->checkKNSign(key, output); 复制代码

2.2、使用宏进行替换字符串

  • 根据前缀搜索出需要混淆的类名、方法名, 生成对应的宏文件

#define run OmWJoTZfCqoPshvr #define iosre egnjoOFDrFiQVRgr 复制代码

静态分析时hopper等反汇编工具无法根据string搜索到关键字符

III、see also

更多资讯和服务请关注#小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域。


作者:公众号iOS逆向
链接:https://juejin.cn/post/7019234605374898206


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐