0x22 static和被裁的符號表

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

為了不讓攻擊者理清自己程序的敏感業(yè)務邏輯,于是我們想方設法提高逆向門檻。

本文就介紹一個防御技巧-------利用static關鍵字裁掉函數(shù)符號。

原理

如果函數(shù)屬性為 static ,那么編譯時該函數(shù)符號就會被解析為local符號。

在發(fā)布release程序時(用Xcode打包編譯二進制)默認會strip裁掉這些函數(shù)符號,無疑給逆向者加大了工作難度。

驗證

寫個demo驗證一下上述理論,以一段創(chuàng)建Button的代碼為例,對應補充一個static版本。

再來看一下反編的結果,對于createBtn()方法,我們可以得到它的偽代碼:

函數(shù)名雖然面目全非,但是基本操作還是清晰的。

對于static_createBtn()方法呢,我們已經無法看到它任何直觀的有價值信息了。

局限

當然這種方法也有局限性。正如你所知道的,static函數(shù),只在本文件可見。

打破局限

怎么讓別的文件也能調到本文件的static方法呢?

在本文件建造一個結構體,結構體里包含函數(shù)指針。把static函數(shù)的函數(shù)指針都賦在這個結構體里,再把這個結構體拋出去。

這樣做的好處是,既隱藏了函數(shù)代碼也豐富了調用方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 為了不讓攻擊者理清自己程序的敏感業(yè)務邏輯,于是我們想方設法提高逆向門檻。 本文就介紹一個防御技巧——利用 stat...
    無灃閱讀 1,229評論 0 0
  • 一、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 8,117評論 0 27
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 我的視網膜,是一張鋒利的鐵網,映入眼簾的世界,盡是碎片。 只是有一天,視線被一個壯碩的身影吸引,他的主人對我笑了,...
    b8c5441fa7ac閱讀 276評論 0 1
  • 天涯若鄰,亦遠亦近; 把酒歌舞,衣帶飄零; 天涯海角,歌吟低伴, 梅花傲世,立于冬雪, 綻放美好,期待春陽。
    若幽蘭閱讀 234評論 0 0

友情鏈接更多精彩內容