前往
大廳
主題

鬼月之封包逆向(中篇) [ 二]

廢物敗類窩囊廢漢堡 | 2022-07-30 01:18:00 | 巴幣 116 | 人氣 301

-----------------------------繼鬼月之封包逆向(中篇) [ 一]---------------------------
因為休息把程式關了 這篇是休息後再繼續寫的
重新到上篇的斷點位置 處理過的數據可能會更動
但不影響最後的結果

首先回到前篇處理加密的地方

到暫存器視窗 獲取ECX的資料
在跳出該功能
接著步入並觀察每個資料處理
而當你步入到下圖該位置時 先記住0x1234
後面會用到
接著到這個下圖位置
查看下方的資料即時顯示視窗
你可以發現 之前從ECX獲得的key此時在這個位置
點擊下一個指令再查看
之前紀錄的1234也在此位置
所以得知此圖
是將兩個資料相加
下個指令而是將 登入的數據的存放地址放進EAX
進入call前 查看stack一下
剛好符合前面指令操作的東西
0xD也證明數據長度表示
所以這邊又要做加密處理
現在我們進到功能進行分析
從上圖可以發現 在位置 0x9B984A時有一個比較
我們往下拉
又發現了迴圈
那麼我們一樣啟用追蹤 並自動步入觀察
可以發現上圖 追蹤紀錄的結果
框起來部分都是跟進到該功能時機本有關的資料
這邊要注意的是
imul edx,ecx
shr eax,1
首先 imul  在組語表示為乘法用途
我們看到它的結果為 0x6D4B05A9
那麼再來看看當時 edx和ecx的數值
都是 0xD1E1CC8D
我們拿出計算機計算看看
所以得出的答案是一樣ㄉ
然後 shr eax,1
把d 右移 1
所以這邊可以先仿製功能了
你會想說不是0x6D4B05A9嗎?
為甚麼會是 0xA37105A9?
沒關西!!!這個疑問後面就會得到答案
接下來進到迴圈查看資料變化
下圖為第一次執行時
框起來部分會發現0x6D4B05A9的操作變化
mov ecx, dword ptr ss:[ebp+0x8] 先把 0x6D4B05A9 放進 ECX
or eax, esi 將 EAX 與 ESI 值做 OR邏輯
add eax, ecx 最後把結果 EAX 與 ECX 相加
mov word ptr ds:[ebx-0x2], ax 重點在這邊! 取得加總結果的後4位資料放進新地址
所以結果為 0xB7B1的值
那麼我們前面計算出來的 0xA37105A9 也只取後4位 05A9
只跟要相加值做相加一樣會得出此結果
接下來就是算數問題 就直接把仿製功能bang出來
怎麼使用這段功能呢?
那麼首先要建立一個仿製的輸入帳密數據生成的功能
在該加密功能上方加入該串接
在加密功能內部放入此串接
執行 並把 finish 打印出來
查看與遊戲程式出來的結果是否相同
這個功能結束後跳出
我們先把先前面所有做好的功能數據做最後的串接
再繼續步入
看到它下個function call
查看裡面的功能
又發現新call 一樣進入觀察
下方發現了一個迴圈
在面下斷點後 啟用追蹤自動步入等待結果並觀察
該紀錄會發現它只有簡短的資料操作
但要注意的是下圖框起來部分
他們這邊在對我們之前功能處理完成的資料做交換
那麼就知道仿製功能該如何製作了
如下圖
使用方式
看c 可以知道最終結果
查看遊戲程式的結果
搜尋EAX
滾輪上移
比對
那麼加密就接近尾聲了
最後把完成的總功能 轉成bytes
把輸入數據改成
把打印出來的數據
放進server


在啟動後 按登入即可驗證是否成功





創作回應

畢西爾
為什麼要[ 二]前面要空一格?
2022-07-30 08:40:45
廢物敗類窩囊廢漢堡
因為你很畢ㄐㄐ
2022-07-30 09:40:52
亞修
組語之鬼
2022-07-30 11:46:44
亞修
組語之鬼
2022-07-30 11:46:46

更多創作