如果你的程序里有重要的计算过程不想被别人分析出来,那么就可以使用-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; } |
反汇编结果如下:
这样别人很容易分析出你的计算过程,但是使用-O3编译选项后的结果:
优化后直接将计算结果45赋给寄存器并使用printf输出,其中的计算过程代码都省去了,这样可以隐藏一部分甚至所有的计算逻辑。