iOS安全–使用static inline方式编译函数,防止静态分析
来源:互联网 发布:js文本框只能输入数字 编辑:程序博客网 时间:2024/06/05 22:49
我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编译的会,会把该函数的code拷贝到每次调用该函数的地方。而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑。
下面我们来看看一个普通函数及其反汇编代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int isValidate(int id){
if(id > 5)
return 1;
else
return 0;
}
int main(int argc, const char * argv[]) {
int id = 3;
int a=1,b=2,c=3;
if(!isValidate(id))
return 0;
a = b + c;
if(!isValidate(id))
return 0;
c = a/2 * b;
if(!isValidate(id))
return 0;
b = c / a*2;
return 1;
}
if(id > 5)
return 1;
else
return 0;
}
int main(int argc, const char * argv[]) {
int id = 3;
int a=1,b=2,c=3;
if(!isValidate(id))
return 0;
a = b + c;
if(!isValidate(id))
return 0;
c = a/2 * b;
if(!isValidate(id))
return 0;
b = c / a*2;
return 1;
}
编译,反汇编结果如下:
这样可以很明显的看到isValidate的调用,而且很容易使用断点+commands的方法让其始终返回1.
下面使用inline的方式来编译:
1
int isValidate(int id) __attribute__ ((always_inline));
编译,反汇编结果如下:
在每次调用的时候都会把代码拷贝一次。
再来看看static inline的方式来编译的反汇编代码:
1
static int isValidate(int id) __attribute__ ((always_inline));
现在没有符号表了。
本文链接:http://www.blogfshare.com/ioss-static-inline.html
0 0
- iOS安全–使用static inline方式编译函数,防止静态分析
- iOS安全–使用static inline方式编译函数,防止静态分析
- iOS安全–使用static inline方式编译函数,防反编译
- iOS安全:反汇编(inline编译方式)
- static inline内联函数
- static inline内联函数
- static inline内联函数
- static inline内联函数
- static inline内联函数
- static inline内联函数
- 函数 static inline int i2c_add_driver(struct i2c_driver *driver) 代码分析
- iOS应用程序安全(15)-使用iNalyzer对iOS应用进行静态分析
- ios 静态库(static libarary) 的使用
- static inline Linux内联函数
- static inline func 内联函数
- static inline内联函数剖析
- GCC编译inline函数
- Static静态成员函数的使用
- 异常 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
- 设计模式之适配器模式(Adapter)
- MIPS单周期CPU设计(Verilog)
- CS231n - CNN for Visual Recognition Assignment1 ---- KNN
- 嵌入式linux入门六步曲
- iOS安全–使用static inline方式编译函数,防止静态分析
- 静态类型与动态类型
- 15 电气 齐振昊 VB中两位数乘一位数
- 获取某个目录下的文件名称
- 和学生们的合影-20160417-wangdongs-wangx
- 4.内存非连续分配管理方式
- 链表的逆序
- 二分法求数组中比X小的元素个数
- Strange fuction