iOS安全–使用static inline方式編譯函數(shù),防止靜態(tài)分析

我們知道一般的函數(shù)調(diào)用都會(huì)通過(guò)call的方式來(lái)調(diào)用,hacker很容易對(duì)一個(gè)函數(shù)做手腳,如果是以inline的方式編譯的,會(huì)把該函數(shù)的code拷貝到每次調(diào)用該函數(shù)的地方;而static會(huì)讓生成的二進(jìn)制文件中沒(méi)有清晰的符號(hào)表,讓逆向的人很難弄清楚邏輯

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

定義:有函數(shù)的結(jié)構(gòu),但不具備函數(shù)的性質(zhì),類(lèi)似于宏替換。代碼中使用inline定義,能否形成內(nèi)聯(lián)函數(shù),還要看編譯器對(duì)內(nèi)聯(lián)函數(shù)體內(nèi)部的定義的具體處理
1.使用inline
修飾的函數(shù),在編譯的時(shí)候,會(huì)把代碼直接嵌入調(diào)用代碼中。就相當(dāng)于用#define 宏定義來(lái)定義一個(gè)add 函數(shù)那樣!與#define的區(qū)別是:
1)#define定義的格式要有要求,而使用inline則就行平常寫(xiě)函數(shù)那樣,只要加上inline即可!
2)使用#define宏定義的代碼,編譯器不會(huì)對(duì)其進(jìn)行參數(shù)有效性檢查,僅僅只是對(duì)符號(hào)表進(jìn)行替換。
3#define宏定義的代碼,其返回值不能被強(qiáng)制轉(zhuǎn)換成可轉(zhuǎn)換的適合的轉(zhuǎn)換類(lèi)型。
2.在inline加上static修飾符
只是為了表明該函數(shù)只在該文件中可見(jiàn)!也就是說(shuō),在同一個(gè)工程中,就算在其他文件中也出現(xiàn)同名、同參數(shù)的函數(shù)也不會(huì)引起函數(shù)重復(fù)定義的錯(cuò)誤
注意點(diǎn):
1.查看main.m的匯編文件:
選中main.m文件-->Xcode 菜單 --> Product --> Perform Action --> Assemble "main.m"
2.不能使用循環(huán)語(yǔ)句;不能使用開(kāi)關(guān)語(yǔ)句;不能使用遞歸調(diào)用;定義在第一次調(diào)用之前

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

相關(guān)閱讀更多精彩內(nèi)容

  • 我們知道一般的函數(shù)調(diào)用都會(huì)通過(guò)call的方式來(lái)調(diào)用,這樣讓攻擊很容易對(duì)一個(gè)函數(shù)做手腳,如果是以inline的方式編...
    淇濱杜隆坦閱讀 858評(píng)論 0 2
  • 目錄 一.預(yù)處理的工作方式... 3 1.1.預(yù)處理的功能... 3 1.2預(yù)處理的工作方式... 3 二.預(yù)處理...
    朱森閱讀 1,551評(píng)論 0 2
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,655評(píng)論 30 472
  • iOS宏的經(jīng)典用法Apple的習(xí)慣attribute iOS宏的經(jīng)典用法1.常量宏、表達(dá)式宏 define kTa...
    reallychao閱讀 4,054評(píng)論 0 0
  • 樹(shù)兒從小便喜歡自由地玩耍,這也許是他性格特有的氣質(zhì);也或許是因?yàn)槲乙粋€(gè)人照顧他的緣故,從小沒(méi)有給予他什么限制,讓他...
    苗苗在故鄉(xiāng)閱讀 450評(píng)論 2 0

友情鏈接更多精彩內(nèi)容