美文网首页
0x22 static和被裁的符号表

0x22 static和被裁的符号表

作者: richar_ | 来源:发表于2017-09-14 15:35 被阅读0次

注:原文---念茜的博客

为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。

本文就介绍一个防御技巧-------利用static关键字裁掉函数符号。

原理

如果函数属性为 static ,那么编译时该函数符号就会被解析为local符号。

在发布release程序时(用Xcode打包编译二进制)默认会strip裁掉这些函数符号,无疑给逆向者加大了工作难度。

验证

写个demo验证一下上述理论,以一段创建Button的代码为例,对应补充一个static版本。

再来看一下反编的结果,对于createBtn()方法,我们可以得到它的伪代码:

函数名虽然面目全非,但是基本操作还是清晰的。

对于static_createBtn()方法呢,我们已经无法看到它任何直观的有价值信息了。

局限

当然这种方法也有局限性。正如你所知道的,static函数,只在本文件可见。

打破局限

怎么让别的文件也能调到本文件的static方法呢?

在本文件建造一个结构体,结构体里包含函数指针。把static函数的函数指针都赋在这个结构体里,再把这个结构体抛出去。

这样做的好处是,既隐藏了函数代码也丰富了调用方式。

相关文章

  • 0x22 static和被裁的符号表

    注:原文---念茜的博客 为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。 本文就介绍一个...

  • static 和被裁的符号表

    为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。 本文就介绍一个防御技巧——利用 stat...

  • iOS符号表恢复&逆向支付宝

    前言 符号表历来是逆向工程中的“必争之地”,而iOS应用在上线前都会裁去符号表,以避免被逆向分析。 本文会介绍一个...

  • 静态变量、常量和方法

    static关键字,由static修饰的变量、常量和方法被称作静态变量、常量和方法。 被声明为static的变量、...

  • <安全攻防之恢复符号表>

    restore-symbol 通常我们拿到的线上的ipa包是release版本的,里边的符号表都被裁过的,所以我们...

  • 浅谈 Const、Exetrn和Static

    Const const修饰常量 被const修饰的属性不能改变: static和exetrn static 在全局...

  • 如何判断接口是否被初始化

    { } 和 static{ } 对比被{ }包括的代码块,会在每次实例化对象的时候执行一次而被static{ }包...

  • Static静态 详解

    # Static静态 # public static void main (1)类只是用来存储和被调用的,而对象是...

  • C++笔记

    2. Const 和 Static Const相关注意 ◼ 静态成员:被static修饰的成员变量\函数​ ...

  • static

    这里给大家再介绍一个防御技巧-利用static关键字裁掉函数符号。 原理 如果函数属性为static,那么编译时该...

网友评论

      本文标题:0x22 static和被裁的符号表

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