close
來騙一下血幣 分享CRC轉ICS的經驗、方法 TMS_v150.2 接觸這塊領域也才短短一個月,僅能提供一些小小的心得供大家參考 洋蔥大網誌裡的"楓之谷更新必備"那區及各種舊的代碼 是我最開始學習、參考的地方 大家可以先拜讀一下 收獲應該會不少^^ http://knowlet3389.blogspot.tw/ 排版方面我不太在行,可能會寫得有些亂,請見諒^^" 我自己覺得需要的能力: ★★★★★ 邏輯 ★★★★ 程式語法的了解 ★★★★ 耐心、毅力 ★★★ 查找資料 ★★★ 經驗 ★ 組合語言 所需工具:UCE、有CRCbypass佳 -------------------------------------------------------- 一、要先有CRC代碼 -------------------------------------------------------- 首先就從 物理無敵CRC 開始說起吧,這應該是數據界的HelloWorld!!! 最簡短的CRC版 [Enable] 00615994: DB 75 //短程jne跳躍 [Disable] 00615994: DB 74 //短程je跳躍 常見版本2 [Enable] 00615994: jne 006159A2 // DB 75 0E 83 4D FC FF [Disable] 00615994: je 006159A2 // DB 74 0E 83 4D FC FF 從aob可以看出以上兩個數據是等價的 -------------------------------------------------------- 二、找call dword ptr -------------------------------------------------------- 而要如何從CRC轉成ICS 基本上需要有3個地址 (1) ptr基址 (2) 被hook函數地址 (3) call的反回地址 基本形式如: Addr_0 call dword ptr [Addr_1] : [Addr_2] Addr_3 ***any code*** (1)=Addr_1 (2)=Addr_2 (3)=Addr_3 一般來說只要"往前"找到call dword ptr,(3)便可知 至於(1)、(2)通常都要用一些手段來得到 這數據往前多看兩行,就發現了!! 0061598C - FF 15 8C5EE200 - call dword ptr [00E25E8C] : [IsRectEmpty] 00615992 - 85 C0 - test eax,eax 00615994 - 74 0E - je 006159A4 感謝Inndy大大指點,winapi還是用函數名比較好XD ps.758D0903 = IsRectEmpty,函數名本身即代表起始地址,用哪個都可以 這是最幸運的情況,3個願望一次滿足 (1)=Addr_1=00E25E8C (2)=Addr_2=IsRectEmpty (3)=Addr_3=00615992 -------------------------------------------------------- 三、改寫 -------------------------------------------------------- 3個地址都有了,那麼該如何改寫成ICS呢? 基本形如下: CheckEsp:自定函數名 Size:大小 FunName:自定標籤名 [Enable] Alloc(CheckEsp,Size) Label(FunName) CheckEsp: cmp [esp],Addr_3 //看返回地點是不是我們要的 jne Addr_2 //不是則跳回原函數 mov [esp],FunName //將反迴值改成自己的函數 jmp Addr_2 //改變反迴值後一樣跳回原函數 FunName: ***copy code*** //把 [call dword ptr 下一行] 到 [je 006159A4] 之間的code複製過來 jne 006159A2 //從crc [enable]中copy過來 Addr_1: DD CheckEsp [Disable] Addr_1: DD Addr_2 DeAlloc(CheckEsp) -------------------------------------------------------- 成果如下 [Enable] Alloc(CheckEsp,32) Label(PGod) CheckEsp: cmp [esp],00615992 jne IsRectEmpty mov [esp],PGod jmp IsRectEmpty PGod: test eax,eax jne 006159A2 00E25E8C: DD CheckEsp [Disable] 00E25E8C: DD IsRectEmpty DeAlloc(CheckEsp) 理解程式碼後可再自行縮減精簡代碼 |
評分次數
全站熱搜
留言列表