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)

理解程式碼後可再自行縮減精簡代碼
6

評分次數

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()