iOS安全–使用static inline方式编译函数,防反编译
来源:互联网 发布:mac 相册导入u盘 编辑:程序博客网 时间:2024/06/05 14:41
iOS安全–使用static inline方式编译函数,防止静态分析
标签: static inline
2015-12-21 17:43 462人阅读 评论(0)收藏举报
分类:
作者同类文章X
我们知道一般的函数调用都会通过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编译方式)
- 防反编译
- Android apk安全 反编译及防反编译 简单记录
- apk 防反编译
- APK防反编译
- Android防反编译工具
- 防反编译key
- android防反编译
- APK防反编译技术
- APK防反编译技术
- APK防反编译
- Java防反编译技术
- GCC编译inline函数
- android 防反编译(ProGuard)
- Android反编译与防反编译
- HashMap和HashSet、hashcode
- TeamViewer---Linux远程控制利器
- 实习期间相关工作总结
- selenium +chrome headless Manual 模式渲染网页
- 每天一点积累(三)--mysql存储引擎
- iOS安全–使用static inline方式编译函数,防反编译
- 如何修改手机在PC桌面右下角弹出的“MT65xx Android Phone”提示框
- Java POI读取Excel 2003/2007/2010例子
- 基于JS实现回到页面顶部的五种写法(从实现到增强)
- splash渲染网页
- 使用JSP Servlet和Ajax实现简单的注册页面的用户名密码验证
- coroutine 协程(skynet框架的消息处理)
- 阿里面试回来,想和Java程序员谈一谈
- 上市 or 并购,创业公司的出路在哪里?