美文网首页
iOS安全–使用static inline方式编译函数,防止静

iOS安全–使用static inline方式编译函数,防止静

作者: 淇滨杜隆坦 | 来源:发表于2016-07-07 10:24 被阅读88次

我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编译的会,会把该函数的code拷贝到每次调用该函数的地方。而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑。
下面我们来看看一个普通函数及其反汇编代码:

编译,反汇编结果如下:


Snip20150118_6

这样可以很明显的看到isValidate的调用,而且很容易使用断点+commands的方法让其始终返回1.
下面使用inline的方式来编译:

int isValidate(int id) __attribute__ ((always_inline));

编译,反汇编结果如下:


Snip20150118_7

在每次调用的时候都会把代码拷贝一次。
再来看看static inline的方式来编译的反汇编代码:

现在没有符号表了。

本文链接:http://www.blogfshare.com/ioss-static-inline.html

相关文章

  • iOS安全–使用static inline方式编译函数,防止静

    我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编...

  • iOS安全–使用static inline方式编译函数,防止静

    我们知道一般的函数调用都会通过call的方式来调用,hacker很容易对一个函数做手脚,如果是以inline的方式...

  • 内联函数 inline

    内联函数的预编译指令 #define CG_INLINE static inline inlin...

  • 代码混淆

    iOS代码混淆----自动 app 安全(一): 代码混淆防止反编译查看真实的头文件函数声明 iOS安全攻防(二十...

  • IOS Static inline 函数

    内联函数只是我们向编译器提供的申请,编译器不一定采取inline形式调用函数. 内联函数不能承载大量的代码.如果内...

  • Kotlin内联函数使用

    inline 本质 Kotlin中的内联函数使用inline关键字修饰,形如: 编译时,inline会将内联函数中...

  • 3. 复习String类的实现过程

    头文件 构造函数 (inline-建议编译器把该函数写成inline的方式) 析构函数 拷贝构造函数 拷贝赋值

  • iOS 内联函数 inline

    OC中使用inline,主要是为了提高函数调用的效率 使用例子: 我们通常会发现,inline 会有 static...

  • iOS OC内联函数 inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,...

  • iOS OC中内联函数inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合。 static自不用多说,...

网友评论

      本文标题: iOS安全–使用static inline方式编译函数,防止静

      本文链接:https://www.haomeiwen.com/subject/jnqljttx.html