全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:9374
推到 Plurk!
推到 Facebook!

抓封包程式 - 第二彈, 使用替換 API 開頭方式

 
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-06 02:39:59 IP:220.139.xxx.xxx 未訂閱
我前一篇發的抓封包程式,在 Hook API 上,如果目標程式有被加殼,就無法抓封包了.    後來在網路上,找到一個 Length Disassembler Engine, 可以完整的備分原 API 的指令..    此範例不是以 Delphi 完成,而是 MASM @@  因為覺得 Delphi 編出來的執行檔好大喔 5xx kb, 雖然用 UPX 壓一下可到 2xx kb, 還是有點大.. 用 MFC 的話,因為不熟底層運作.. 寫出來的程式, 動不動就 Access Violation 用 KOL 的話.. 也是麻煩.. 所以最後就用 ASM 來寫了.. 小巧可愛 XD 執行檔 5120 bytes, dll 7680 bytes    我有附上 source code, 有興趣的朋友可以玩玩.. 沒興趣看 source code 也可以抓下來玩玩執行檔..    此版改進地方. 1. 只要有用網路,就可以抓 TCP 封包 2. hook 了, connect, WSAConnect, send, WSASend, recv, WSARecv, closesocket (前一版只 Hook connect, send, recv)    大概說一下流程: 1. 取得 API 開頭位置 (GetProcAddress) 2. 使用 Length Disassembler Engine 算出至少 5 bytes (放一個 Long Jmp 到我們的 function 來達到 hook) 3. 備分原 API 開頭指令到 buf 去 4. 在 buf 後加上long jmp 回原本 api 接續的地方 5. 在自定的function, 處理完後,jmp 到 buf 去.. 簡易圖示 軟體快照兩張 -- Regards, Skyer
------
--
Regards,
Skyer
附加檔案:76328_Sniff.zip
webchia
一般會員


發表:6
回覆:5
積分:2
註冊:2003-03-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-11 10:24:38 IP:61.220.xxx.xxx 未訂閱
無法下載??無法下載??
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-12 20:39:08 IP:61.219.xxx.xxx 未訂閱
推一下, 改版了.. 穩定性高一點.. 畫面好看一點點 -- Regards, Skyer
------
--
Regards,
Skyer
jimyho
一般會員


發表:0
回覆:2
積分:0
註冊:2002-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-14 21:36:36 IP:61.140.xxx.xxx 未訂閱

你好,

請問有沒有Delphi的版本?

我不大懂ASM,頭大。。

至於文檔的大小,我卻並不在乎。

謝謝。

jimyho
一般會員


發表:0
回覆:2
積分:0
註冊:2002-04-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-14 21:39:37 IP:61.140.xxx.xxx 未訂閱

另外我想請教:

爲什麽:

“在 Hook API 上,如果目標程式有被加殼,就無法抓封包了." ???

Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-20 18:12:22 IP:211.74.xxx.xxx 未訂閱

抱歉,這程式沒有 Delphi 版本喔。不過我有開發 for Delphi 的 HookAPI library

http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=76621

可以給您參考,抓封包其實就是 hook WS2_32.dll 內幾個 api 而以。

此外,您提到殼的程式無法抓取到封包,這個可能有很多原因。也許是那殼對別人的侵入有特別的處理;或是我程式有 bug XD

原則上,只要程式有使用 ws2_32.dll or wsock32.dll,無論是靜態或動態載入,此抓封包程式應都能抓的到。

ps:
這程式,bug 真的是不少,當初我只是醉心於此技術的專研,對於整個 AP 的開發並未放心去作。請見諒囉。

------
--
Regards,
Skyer
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-07-20 18:31:02 IP:211.74.xxx.xxx 未訂閱

仔細看了下我的文章(年代久遠了 @@)和您的回文
您說的為什麼對加殼程式,封包程式就無法使用

這裡說的無法使用,指的是我前一篇(年代可能更久遠 @@)的文章,那時,我想我可能是用 IAT 替換方式去 hook api,這方法對有些殼來說就是無用的,因為在執行前,程式的 IAT 已被殼藏起來,程式的 IAT 是殼本身使用的,程式執行後,實際的 IAT 將會被破壞掉,所以使用 IAT hook 實用有限。

也因為才會使用 API 替換方式,此方法較好。更好的還可以 hook api 開頭後面一點位置,這樣會被發現的可能性會再低一點。

------
--
Regards,
Skyer
h774211_60953
一般會員


發表:0
回覆:1
積分:0
註冊:2006-08-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-08-16 03:53:05 IP:59.104.xxx.xxx 未訂閱

那請問一下大大~如何寫一個修改A程式發送所抓到的封包呢??

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-28 15:24:09 IP:61.220.xxx.xxx 訂閱
可以下載, 是 組合語言程式碼 
===================引 用 webchia 文 章===================
無法下載??無法下載??
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
gavinj123
初階會員


發表:88
回覆:48
積分:27
註冊:2002-10-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-07-24 22:56:53 IP:59.120.xxx.xxx 訂閱
請問一下,我用您PO的DELPHI的程式(HOOK  MessageBoxA那個)改寫成HOOK   ws2_32.dll,已經可以成功HOOK到connect跟SEND二個涵式。但要作麼用您寫的這個 function myMsg1(hwnd:DWORD; text, title:PChar; flag:DWORD):DWORD; stdcall;
來抓拿它的IP,PORT,SEND的資料等等的呢?可以請大師指點一下嗎?
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-09-07 22:25:46 IP:61.219.xxx.xxx 未訂閱
查一下 MSDN 有關 MessageBox 的 help, 你會發現 myMsg1 剛好跟 MessageBox function 的宣告一樣..
同理可證, connect & send 的話,就查一下 help 囉..

Delphi 很久沒用了,我試著翻一下..
connect

function myConnect(s: SOCKET, name: PSOCK_ADDR, namelen: Integer): Integer; stdcall;
function mySend(s: SOCKET, buf: PByte, len: Integer, flags: Integer): Integer; stdcall;

大概類似這樣吧...

===================引 用 gavinj123 文 章===================
請問一下,我用您PO的DELPHI的程式(HOOK MessageBoxA那個)改寫成HOOK ws2_32.dll,已經可以成功HOOK到connect跟SEND二個涵式。但要作麼用您寫的這個 function myMsg1(hwnd:DWORD; text, title:PChar; flag:DWORD):DWORD; stdcall;
來抓拿它的IP,PORT,SEND的資料等等的呢?可以請大師指點一下嗎?
------
--
Regards,
Skyer
系統時間:2024-04-26 23:36:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!