iOS安全–使用-O3编译选项优化算法逻辑

如果你的程序里有重要的计算过程不想被别人分析出来,那么就可以使用-O3编译选项来优化你计算逻辑。

一个没有优化的简单计算程序:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int i;
    int a = 0;
    for (i = 0; i < 10; ++i) {
        a += i;
    }
    printf("%d\n",a);
    return 0;
}

反汇编结果如下:

Snip20150119_1

这样别人很容易分析出你的计算过程,但是使用-O3编译选项后的结果:

Snip20150119_2

 

优化后直接将计算结果45赋给寄存器并使用printf输出,其中的计算过程代码都省去了,这样可以隐藏一部分甚至所有的计算逻辑。

本文链接:http://www.alonemonkey.com/ioss-o3-compiler-flags.html