精华内容
下载资源
问答
  • ios代码规范整理

    2016-06-21 16:35:33
    ios代码规范整理
  • iOS代码混淆的demo

    热门讨论 2014-11-05 20:20:53
    iOS安全攻防,代码混淆,敏感词替换,易读字符替换。
  • iOS代码混淆安全加固

    千次阅读 2019-03-04 09:27:21
    iOS代码混淆安全加固

    • 最近公司扫描App漏洞,提出要给App做代码混淆加固,以提高反编译逆向难度。对于Android应用直接用360安全加固即可;但对于iOS应用,虽然360也提供了免费的加固方法,但前提是项目的enable bitcode必须设置为YES。但我们项目中引入的很多框架包括百度地图等并不支持enable bitcode设置为YES。如果enable bitcode设置为NO,并且是本地部署的话(企业证书),360安全加固iOS是收费的,收费标准是30万/年。其他的一些平台也是收费的。所以只能考虑自己去做了。
    • 360 iOS加固指南

    自己创建脚本文件进行代码混淆

    • 混淆原理 : 代码编译阶段将符号(方法名、属性名等)替换成随机生成的字符串
    • 我们需要创建四个文件如下:
      在这里插入图片描述
      其中PrefixHeader.pch宏文件中导入CodeObfuscation.h,这样项目在编译的时候就会将CodeObfuscation.h中定义的宏及方法名替换为对应随机生成的字符串。
    #ifndef PrefixHeader_pch
    #define PrefixHeader_pch
    #import "CodeObfuscation.h"
    #endif /* PrefixHeader_pch */
    

    其中confuse.sh脚本文件是最重要的,是用来在程序编译的时候将func.list中的方法名替换成随机生成的字符串,并且保存在CodeObfuscation.h中。其脚本为:

    TABLENAME=symbols
    SYMBOL_DB_FILE="$PROJECT_DIR/CodeObfuscation/symbols"
    STRING_SYMBOL_FILE="$PROJECT_DIR/CodeObfuscation/func.list"
    HEAD_FILE="$PROJECT_DIR/CodeObfuscation/CodeObfuscation.h"
    export LC_CTYPE=C
    
    #维护数据库方便日后作排重
    createTable()
    {
    echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
    }
    
    insertValue()
    {
    echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
    }
    
    query()
    {
    echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
    }
    
    ramdomString()
    {
    openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
    }
    
    rm -f $SYMBOL_DB_FILE
    rm -f $HEAD_FILE
    createTable
    
    touch $HEAD_FILE
    echo '#ifndef CodeObfuscation_h
    #define CodeObfuscation_h' >> $HEAD_FILE
    echo "//confuse string at `date`" >> $HEAD_FILE
    cat "$STRING_SYMBOL_FILE" | while read -ra line; do
    if [[ ! -z "$line" ]]; then
    ramdom=`ramdomString`
    echo $line $ramdom
    insertValue $line $ramdom
    echo "#define $line $ramdom" >> $HEAD_FILE
    fi
    done
    echo "#endif" >> $HEAD_FILE
    sqlite3 $SYMBOL_DB_FILE .dump
    

    func.list文件就是用来存放要被混淆的方法和属性名的。如:
    在这里插入图片描述
    CodeObfuscation.h本身是一个空头文件,在编译过后会生成func.list添加属性和方法对应生成的随机字符串。下图是编译后CodeObfuscation.h的内容:
    CodeObfuscation.h
    示例:

    #import "ViewController.h"
    #import "NSArray+Extension.h"
    
    @interface ViewController ()
    @property (nonatomic, copy) NSString *title1;
    @property (nonatomic, copy) NSString *imgsrc;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.title1 = @"";
        self.imgsrc = @"";
        
        NSLog(@"%@",[NSArray getPropertiesFromClass:[self class]]);
        NSLog(@"%@",[NSArray getMethodsFromClass:[self class]]);
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    - (void) test{
        
    }
    - (void) test1{
        
    }
    - (void) test2{
        
    }
    - (void) test3{
        
    }
    - (void) test4{
        
    }
    
    @end
    
    

    打印出运行时的属性和方法名:
    在这里插入图片描述
    结果可见,CodeObfuscation.h中的生成的随机字符串和真正打印出来的并不一致,这是因为每次运行时,CodeObfuscation.h都会重新生成新的随机字符串,这时替换属性和方法名的是上一次生成的随机字符串。

    • 注意事项:
      1. 属性方法名需要去重。
      2. 代码混淆后不能再上架appstore。
      3. 代码混淆不能对静态库进行混淆。
      4. 系统自带的属性和方法不能混淆,只能混淆自定义的方法和属性。
    • 具体步骤可参考:iOS代码混淆教程

    iOS代码自动混淆

    • 上面的方法会有有一些问题,就是每次创建了新的属性和方法都得添加到func.list文件中,比较繁琐,不利于维护。其实我们可以让方法属性自动添加func.list中。所以我们要从.m和.h文件中抽取属性和方法了,但是如何屏蔽系统的属性和方法名,所以我们要将自己定义的属性和方法名全部添加一个前缀。
    • confuse.sh中添加新的脚本,修改后的脚本如下:
    TABLENAME=symbols
    SYMBOL_DB_FILE="symbols"
    STRING_SYMBOL_FILE="$PROJECT_DIR/AutoScript/func.list"
    CONFUSE_FILE="$PROJECT_DIR/AutoCodeConfusion"  
    HEAD_FILE="$PROJECT_DIR/AutoScript/AutocodeObfuscation.h"
    
    export LC_CTYPE=C
    
    #取以.m或.h结尾的文件以+号或-号开头的行 |去掉所有+号或-号|用空格代替符号|n个空格跟着<号 替换成 <号|开头不能是IBAction|用空格split字串取第二部分|排序|去重复|删除空行|删掉以init开头的行>写进func.list
    grep -h -r -I  "^[-+]" $CONFUSE_FILE  --include '*.[mh]' |sed "s/[+-]//g"|sed "s/[();,: *\^\/\{]/ /g"|sed "s/[ ]*</</"| sed "/^[ ]*IBAction/d"|awk '{split($0,b," "); print b[2]; }'| sort|uniq |sed "/^$/d"|sed -n "/^hj_/p" >$STRING_SYMBOL_FILE
    
    
    #维护数据库方便日后作排重,一下代码来自念茜的微博
    createTable()
    {
    echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
    }
    
    insertValue()
    {
    echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
    }
    
    query()
    {
    echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
    }
    
    ramdomString()
    {
    openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
    
    }
    
    rm -f $SYMBOL_DB_FILE
    rm -f $HEAD_FILE
    createTable
    
    touch $HEAD_FILE
    echo '#ifndef AutocodeObfuscation_h
    #define AutocodeObfuscation_h' >> $HEAD_FILE
    echo "//confuse string at `date`" >> $HEAD_FILE
    cat "$STRING_SYMBOL_FILE" | while read -ra line; do
    if [[ ! -z "$line" ]]; then
    ramdom=`ramdomString`
    echo $line $ramdom
    insertValue $line $ramdom
    echo "#define $line $ramdom" >> $HEAD_FILE
    fi
    done
    echo "#endif" >> $HEAD_FILE
    sqlite3 $SYMBOL_DB_FILE .dump
    

    在这里插入图片描述
    添加了收集方法的脚本后,我们不需要再手动的去添加方法到func.list中了。程序编译后会自动将hj_开头的方法添加到func.list中。


    展开全文
  • iOS混淆代码工具

    2018-04-24 13:08:23
    iOS工程进行混淆,通过修改工程名,混淆文件名,类名,方法名,以及生成辣鸡代码来实现对工程的修改
  • 转载,18个ios项目源代码————————————————
  • iOS代码混淆--最终版

    千次阅读 2018-07-02 16:47:31
    这不安全检测没过����,这里面的问题就提到了代码混淆问题 准备工作 cd到你自己的项目目录级 创建confuse.sh文件和func.list文件 选中项目选择运行脚本。这里需要注意的是$PROJECT_DIR/confuse....

    最近在做银行的项目,所以对安全性要求很高。这不安全检测就没过??,这里面的问题就提到了代码混淆问题
    ####准备工作

    1. cd到你自己的项目目录级这里写图片描述
    2. 创建confuse.sh(confuse.sh里面的代码贴在了最下方这里需要先把下方的内容复制进来)文件和func.list文件这里写图片描述
    3. 选中项目选择运行脚本。这里需要注意的是$PROJECT_DIR/confuse.sh这个的路径和创建pch文件时的路径是一样的,$PROJECT_DIR代表整个工程,/confuse.sh是这个文件的路径。 这里写图片描述
    4. 然后command + B编译一下,如果报错了就cd到项目的目录级下,然后输入命令行 chmod 755 confuse.shchmod 777 confuse.sh 给我们的脚本本间授权这里写图片描述
    5. 成功之后会自动生成一个codeObfuscation.h文件,注意:如果没有生成也可以自己创建一个空白的.h文件这里写图片描述
    6. 然后在pch文件中导入codeObfuscation.h文件。这里写图片描述

    ####重点来了

    1. 全局混淆。如果我们之前没有考虑到混淆的问题现在用全局混淆并不明智,因为有的时候方法名的命名并不是那么规范,这里我们全局混淆以sk_开头的方法名,如果不想做特定的限制的话可以把|sed -n "/^sk_/p"这里给删除掉,我们来看下效果:这里写图片描述这里写图片描述这里写图片描述
    2. 局部混淆。可以在func.list文件中手动添加方法。编译之后就可以了这里写图片描述

    ####重中之重confuse.sh里的内容

    #!/usr/bin/env bash
    
    TABLENAME=symbols
    SYMBOL_DB_FILE="symbols"
    STRING_SYMBOL_FILE="$PROJECT_DIR/func.list"
    HEAD_FILE="$PROJECT_DIR/codeObfuscation.h"
    ####这里是全局混淆要查找的内容路径,不需要全局混淆的时候要注释掉
    #CONFUSE_FILE="$PROJECT_DIR/MobileOA"
    export LC_CTYPE=C
    ####这里是全局混淆要查找的条件,不需要全局混淆的时候要注释掉
    #取以.m或.h结尾的文件以+号或-号开头的行 |去掉所有+号或-号|用空格代替符号|n个空格跟着<号 替换成 <号|开头不能是IBAction|用空格split字串取第二部分|排序|去重复|删除空行|删掉以init开头的行>写进func.list
    ## |sed -n "/^sk_/p" 是特定问方法名的开头,不需要的话可以删掉
    #grep -h -r -I  "^[-+]" $CONFUSE_FILE  --include '*.[mh]' |sed "s/[+-]//g"|sed "s/[();,: *\^\/\{]/ /g"|sed "s/[ ]*</</"| sed "/^[ ]*IBAction/d"|awk '{split($0,b," "); print b[2]; }'| sort|uniq |sed "/^$/d" |sed -n "/^sk_/p" >$STRING_SYMBOL_FILE
    
    #维护数据库方便日后作排重
    createTable()
    {
    echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE
    }
    
    insertValue()
    {
    echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE
    }
    
    query()
    {
    echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE
    }
    
    ramdomString()
    {
    openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16
    }
    
    rm -f $SYMBOL_DB_FILE
    rm -f $HEAD_FILE
    createTable
    
    touch $HEAD_FILE
    echo '#ifndef Demo_codeObfuscation_h
    #define Demo_codeObfuscation_h' >> $HEAD_FILE
    echo "//confuse string at `date`" >> $HEAD_FILE
    cat "$STRING_SYMBOL_FILE" | while read -ra line; do
    if [[ ! -z "$line" ]]; then
    ramdom=`ramdomString`
    echo $line $ramdom
    insertValue $line $ramdom
    echo "#define $line $ramdom" >> $HEAD_FILE
    fi
    done
    echo "#endif" >> $HEAD_FILE
    
    
    sqlite3 $SYMBOL_DB_FILE .dump
    
    

    传送门DEMO

    展开全文
  • IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+...
  • iOS 代码触发button点击事件

    千次阅读 2018-05-24 08:50:00
    为什么80%的码农都做不了架构师?>>> ...
    [self.xxBtn sendActionsForControlEvents:UIControlEventTouchUpInside]; 
    
    

     

    转载于:https://my.oschina.net/huqiji/blog/1817750

    展开全文
  • iOS 马甲包代码混淆工具 .
  • SonarQube扫描iOS代码

    千次阅读 2017-04-07 10:09:09
    如果想要分析代码,需要在待分析项目根目录下添加2个文件: run-sonar.sh sonar-project.properties 3.执行sonar检测 命令行定位到项目根目录下,执行sh run-sonar.sh命令

    1.安装OCLint

    OCLint是一个开源的项目,你可以通过源码安装,需要设置对应的环境变量,也可以使用作者发布的release进行安装,不过我更习惯使用Homebrew安装。

    brew tap oclint/formulae

    然后安装OCLint

    brew install oclint

    2.添加sonar-objective-c文件

    如果想要分析代码,需要在待分析项目根目录下添加2个文件:

    run-sonar.sh

    sonar-project.properties

    3.执行sonar检测

    命令行定位到项目根目录下,执行sh run-sonar.sh命令


    展开全文
  • 最近,参考了几篇代码混淆文章,然后上架审核发现被苹果拒绝了,具体原因如下: 原因: 2. 3 Performance: Accurate Metadata Guideline 2.3.1 - Performance We discovered that your app contains obfuscated code...
  • IOS测试之sonar检查ios代码质量

    万次阅读 2015-04-15 14:33:44
    ios项目我提供了一个sample的项目,首先git clone该项目到本地。git clone https://github.com/DoctorQ/ios_test.git Cloning into 'ios_test'... remote: Counting objects: 88, done. remote: Total 88 (delta 0)
  • iOS 代码格式化管理

    万次阅读 热门讨论 2015-01-19 13:47:28
    虽然在项目创建和团队组建的初期,我们就把公共约定以及一些规范定下来了,并且由于我们的代码是通过Git来做版本控制的,web上直接就支持Markdown格式的readme文件,可以随时看到最新的版本,但是这种规范只能依靠...
  • 结合代码的话, 如何在代码中取得Storyboard中的VC或者控件 有三种方法: // 第一种方法 通过storyBord的名字 取得SB 再通过通过SB调用instantiateInitialViewController UIStoryboard *stroyB = [UI
  • iOS代码修改音量

    千次阅读 2015-01-06 18:09:04
    虽然苹果将几乎所有的代码实现控制音量的方法都堵死了,但通过一些私有的方法还是可以修改的。。。
  • IOS应用源代码(6个)

    2014-07-13 22:05:56
    IOS代码,object-c代码,iPhone应用开发
  • iOS代码签名:Code Signing

    千次阅读 2018-04-16 20:50:25
    一、codesign命令 1.  使用 security 命令,可以查看系统中的这类证书 security find-identity -v -p codesigning...iOS App Signer http://dantheman827.github.io/ios-app-signer/        
  • iOS 代码如何创建静态tableView

    千次阅读 2017-01-01 07:43:15
    求:iOS 代码如何创建静态tableView 谢谢~~
  • iOS代码封装成.a文件(封装SDK)

    千次阅读 2016-08-05 11:34:15
    在众多开源的大神的博客里经整理如下:(已测试ok) ...制作.a静态库,需要要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以尽量做到最大的兼容性。 ValidArchitectures设置为:armv7|armv7s|arm6
  • 然后给这个高度约束添加一个关联到代码中去。 然后在代码中通过这个约束的关联的.constact变量就修改了这个动态布局的高度。 其实很简单的东西,以前没接触过。想着通过代码操作动态布局。结果搞了很久。。。...
  • 前言,最近因为工作需求,研究了一下代码组件化,中间遇到了很多问题,下面就把结合网上的一些文章和自己的实际操作,梳理一下操作流程,希望能帮到有需要的朋友,中间有需要改正的地方请指正。 一、远程索引库 ...
  • iOS 代码块在程序中只执行一次

    千次阅读 2015-12-02 11:56:52
    //开启定位的同时展示用户可行驶范围 static dispatch_once_t disOnce; dispatch_once(&disOnce, ^ { //根据电量判断展示的圆的半径 CGFloat radius = 1500.0f; _circle = [MACircle ...
  • 主要为大家详细介绍了iOS开发常用代码块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • iOS开发时,有时候不知道该有多少个控件,需要动态添加或删除,比如:发帖页面。该例子工程实现了动态添加和删除一组控件(包含UITextView和UIButton按钮)。实现逻辑比较简单,希望有所帮助!
  • 混淆工具可以修改工程名、修改类名前缀、扫描工程中的代码,生成垃圾代码。 修改 xxx.xcassets 文件夹中的 png 资源文件名。 删除代码中的所有注释和空行。
  • iOS开发规范文档

    2018-03-04 10:25:49
    iOS开发规范文档,规范代码开发的习惯,能更好管理代码,便于后期维护
  • IOS 热更新,实时代码更新,动态更新,动态库framework http://blog.csdn.net/jianrenbubai/article/details/50351507
  • 在网上根据念茜的博客 http://blog.csdn.net/yiyaaixuexi/article/details/29201699 实现了函数名的混淆效果,但是如果我想混淆头文件的话这个方法是否行得通,是不是需要重构其他的脚本工具呢?...
  • a.使用gcd  //切换到线程中执行  dispatch_async(dispatch_...其中方式a适应性强,使用方便,唯一可能是缺点的地方就是使用了gcd+block,代码看上去略长,不过习惯了这种语法也不是什么问题,推荐方式a.
  • iOS开发中,往往需要输入大量重复的代码,比如协议方法、初始化函数、GCD代码、函数注释说明等,如果每个重复出现的函数都需要重写一遍往往是比较耗费时间的,事实上所有的编译器在输入重复代码时,都有可以预设...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 576,639
精华内容 230,655
关键字:

ios代码

友情链接: HOSTLINK.zip