逆向攻防的那點事

攻:

?用monkey將逆向的項目ipa導(dǎo)入其中,用hook你要重寫或者修改的代碼。


防:

創(chuàng)建類,在類中l(wèi)oad方法中 fishhook 對 runtime的 method swizz 及 setIMP,getIMP函數(shù)進(jìn)行替換,打入動態(tài)庫,mokeyapp就不能hook了,


攻:

越獄手機中,用theos工具創(chuàng)建Tweak項目,tweak編輯plist需要hook的進(jìn)程。hook中編寫hook的方法,打入動態(tài)庫。當(dāng)程序啟動時,蘋果會通過plist找到進(jìn)程,將動態(tài)庫注入到項目中。


防:

在項目中other linker flags 增加 _RESTRICT _restrict,dyld有2種阻止動態(tài)庫的代碼,1,設(shè)置uid,gid,但是上線后是不允許改變,還一種就是dyld會遍歷macho文件中_RESTRICT _restrict字段是否存在,存在就會阻止動態(tài)庫的注入。


攻:

更改macho文件中的_restrict的二進(jìn)制字段。


防:

通過第一種防護,另外通過dyld的阻止方法可以判斷macho中是否存在_restrict,如果不存在,則程序退出。


防止別人調(diào)試:

通過syscls可以獲取當(dāng)前進(jìn)程是否被操作,通過與操作獲取控制碼。

通過prace 有個拒絕連接(PT_DENY_ATTACH),如果有直接閃退。(支付寶就是這樣進(jìn)行防護的)。


攻:

首先在monkey中增加一個符號(prace或者syscls)斷點,bt獲取其地址,再imagelist獲取指令的動態(tài)庫首地址,算出偏移地址,再找到app中的防護動態(tài)庫中的可執(zhí)行文件,用hopper打開,找到算出來的偏移地址(獲取的偏移地址是指向下一條指令)。對此函數(shù)的匯編代碼進(jìn)行修改后導(dǎo)出,直接將前三段bl跳轉(zhuǎn)到倒數(shù)后三段,即跳過你防護的代碼。如果是fishhook改變runtime的method swizz,改變匯編獲取常量的偏移地址。


防:

1.代碼混淆,在pch文件中對需要防護的類名及方法名用宏定義,對方用hopper及ida對macho文件是很難找不到其方法名及方法。

2.字符串加密,將字符串放到char數(shù)組中最后加上\0,并對每個字符進(jìn)行異或操作,然后再char數(shù)組再進(jìn)行一次異或回來。

3.隱藏CCCrypt,加密都會用到此函數(shù),通過dlopen獲取句柄(第一個參數(shù)是CCCrypt動態(tài)庫路徑,第二個參數(shù)以懶加載形式RTLD_LAZY),通過dlsym(第一個參數(shù)是句柄,第二個是字符串“CCCrypt”,此字符串需要用第二個字符串加密)將CCCrypt結(jié)構(gòu)體替換成自己寫的結(jié)構(gòu)體。

4.使用匯編進(jìn)行系統(tǒng)調(diào)用,防止符號斷點調(diào)試進(jìn)行定位匯編代碼。通過asm鏈接匯編代碼,通過匯編代碼svc? #0x80觸發(fā)中斷。通過syscall頭文件找到底層函數(shù)名對應(yīng)的定義數(shù)值。如prace匯編

asm(

?"mov x0,#31\n"

?"mov x1,#0\n"

?"mov x2,#0\n"

?"mov x3,#0\n"

?"mov w16,#26\n"http://26就是prase,上面四個是傳入的參數(shù)

?"svc? #0x80"http://觸發(fā)中斷

)

5.重簽名防護 ,描述文件的組織單位,通過字符串截取出來進(jìn)行比較,此方法把前四種全部加進(jìn)去進(jìn)行防護,對方很難進(jìn)行逆向項目的。

6.利用防護工具,LLVM進(jìn)行邏輯混淆,防止classDump。

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

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

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,236評論 3 119
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 屏蔽,多么冰冷的一個詞。若不是心有隔閡,誰愿意在社交平臺上去屏蔽別人? 上個月和經(jīng)理去外地出差,他開車,我坐在副駕...
    陽光baby閱讀 1,618評論 2 7
  • 體育
    哈嘿噓噓閱讀 137評論 0 0
  • 中午在圖書館看了WeRun的排行,沒有看到昔日稱霸排行榜的K,就找他聊天。第一句話就是說他還待在宿舍,還故...
    uahuohz閱讀 380評論 0 0

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