iOS逆向安防從入門到禿頭--混淆與加固

小谷禿頭合集html

  • 今天小谷簡單闡述混淆與加固,具體怎麼用仍是看兄弟們怎麼作(小谷公司的項目其實已經寫成腳本了,關鍵的也是這幾個方法)

1. 函數名混淆

  • 咱們日常分析代碼的時候,用class-dump會把header文件生成出來。並且這些類和函數名,好多都是見名知意的。markdown

  • 這個時候對分析你應用的boy(逆向工程師)太舒服了函數

1.1.png

這個是咱們demo裏面的函數名工具

  • 咱們所以就想到了一個辦法: 混淆函數名

咱們簡單的方法就是#defineoop

#define ConfuseTest xgsufehdfdakldfgs
#define test sdsdsdsdsjhhfbsgh
複製代碼

2.png

這樣就能夠達到混淆函數名的目的了post

注:一些分析你應用的逆向工程師都不是軟柿子,都有2把刷子的! 若是看到有混淆的函數名,他們就會很興奮。而後斷點,看函數調用棧!!或者看彙編靜態分析!!加密

建議: 小谷這裏有些建議:若是混淆函數名的話。小谷建議儘可能混淆那些不重要的!這樣逆向工程師分析的時候--就是浪費他的時間。他們可能會吐血!(先跟逆向工程師說聲對不起~)spa

2. 字符串加密

  • 兄弟們大多數都用過對稱加密吧。咱們能夠用這個把本身重要的字符串加密!小谷用的CCCrypt

這個其實沒有啥好說的。加密解密code

3. Inline 內聯

小谷可能也是給個思路。兄弟們也能夠給小谷些建議orm

  • 寫一個兄弟們常常用到的: 異或加密

3.1.png

  • 而後咱們看下彙編

4.png

  • 咱們用下Inline內聯

static inline NSData * encodeData(NSData *sourceData) __attribute__ ((always_inline));

  • 而後在看下彙編

5.png

  • Inline 內聯是防止咱們調用函數bl後,逆向工程師能夠打斷點看函數調用棧和參數

  • 使用Inline內聯後。會把代碼直接拷貝到調用的地方。這樣!逆向大佬們就不是那麼容易發現了

兄得們能夠看下Inlinehook。不過這篇博客就不講如何在__TEXT__ 段改東東了~

4. 混淆工具

小谷這裏只推薦一波吧。

  • 原先混淆比較有名的是obfuscator-llvm,不過只支持到Xcode8,如今基本也用不了了

  • 如今用的多的通常是網易網盾ZFJObsLib

  • 不夠如今大公司的混淆估計都是大佬們本身搞的

  • 咱們能夠研究下ZFJObsLib是怎麼作的,本身能夠搞得簡單點練練手~

ZFJObsLib詳細網址

5. 總結

  • 小谷如今也沒有太多的時間研究混淆和加固了。最近工做實在是太忙了~

  • 混淆和加固,小谷感受只有用在項目中才有參考性!!

  • 但願有朝一日兄弟們能夠寫出本身滿意的混淆工具

  • 但願這篇博客對兄弟們有些幫助吧。😆

相關文章
相關標籤/搜索