Re: [閒聊] 很久以前寫winsock API攔截的心得

看板C_and_CPP (C/C++)作者 (諾)時間15年前 (2009/10/02 13:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
請問一下,有誰還有留 SRC檔案,可不可以寄給我 那個連結已經不能下載了 想要研究一下,卻沒有檔案 QQ : : 在winsock2尚未推出前,winsock.dll就是實作socket的最底層實作品。它負責與更底層的 : : NDIS驅動程式進行溝通。但在winsock2推出後,winsock.dll就不是socket的最底層實 : : 作品,最底層的實作品改成了ws2_32.dll。而winsock.dll就只是跨接到ws2_32.dll而已。 : : winsock體系實際上分成非常多層,詳情可看 : : http://msdn.microsoft.com/library/en-us/winsock/winsock/windows_sockets_2_architecture_2.asp?frame=true : : 但可以簡單地分割成兩部份,一個稱為API;另一個叫作SPI。API就不用說了,至於SPI : : 就是與NDIS互連的那一頭,它負責提供服務給API。而我們所寫的程式,大部份都是在API : : 那一頭。 : : 由於winsock是高於L3的實作品,所以我們不能用winsock來做出任何低於L3的功能,像是 : : 使用arp、rip、ospf等等協定,如果要用這種較低層次的協定,就要另找函式庫,或是自 : : 己去寫NDIS方面的程式。 : : OK,有了一些對於winsock的背景瞭解,我們可以來討論關於winsock API的攔截。 : : 攔截winsock API有何好處呢?最大的好處之一,就是可以寫出許多奇奇怪怪的程式。從 : : 流量計算到遊戲外掛,都可以用這手段來達成。 : : API攔截有很多方法可以實作,最最普遍的,不外乎是Hooking或是直接寫個假的winsock : : .dll來騙程式。這兩種方法各有利弊,Hooking的好處是想要就要,不要就可以關掉,而 : : 且可以只針對想到的程式,所以大部份的遊戲外掛都是用Hooking達成;但它的壞處,就 : : 是難寫,因為要直接插接想要Hooking的程式,如果不了解對象的行為,常會以失敗收場 : : 。而且要動到虛擬記體的內容,所以很麻煩。寫假的winsock.dll就容易多了,只要偽造 : : winsock.dll的內容,就可以騙程式來呼叫自己,但是缺點就是Hooking的優點。所以這個 : : 比較少人用。 : : 我以魔獸來當例子,說明如何寫個假的winsock.dll讓魔獸可以跨區網連線。 : : 1.魔獸的區網遊戲,就真的只是區網遊戲,它不能跨越兩個網段來加入。也就是說,若你 : : 在A網段,則你開的遊戲,B網段的同學看不到,就不能加入。這時候,強者我同學就會 : : 去偷拔大學部的網路線,讓自己跟對方同網段。 : : 2.為了要解決這個問題,我們可以先思考一下,魔獸是如何進行區網連線的。透過etter : : cap的觀察,我們可以發現魔獸在開遊戲時,會把自己開遊戲的通告,以廣播的方式丟 : : 到整個網段上,但是router是不會forward廣播封包的,所以當然別的網段的人不能看 : : 到自己網段的遊戲。 : : 3.思考解決方法:最直接的方法,想辦法去管router,或是色誘(?)管理員讓router會去 : : forward廣播封包?但這不在本文討論之列。既然魔獸會用廣播的方式做通告,那麼我 : : 們只要強迫魔獸送通告的封包給同學的IP就好了嘛。 : : 4.首先使用vc++附的dumpbin來看看魔獸主程式用了啥dll,我們可以發現,它是用winso : : ck.dll,因此較快的方法就是寫假的winsock.dll給魔獸吃。 : : 5.一樣用dumpbin看看魔獸呼叫了哪些winsock的函式,注意魔獸是用Oridinal ID來呼叫 : : 它們的,所以你會看不到它呼叫的函式名。不過一樣把Oridinal ID抄下來,我們一樣 : : 用dumpbin去看winsock.dll的函式Oridinal ID就行了。 : : 6.再來寫出檔名,函數名及calling conversion跟winsock.dll一樣的新winsock.dll就行 : : 了。記得Oridinal ID也要跟winsock.dll一樣。 : : 以上就是一種思考模式,從概念到實作的所有步驟。至於詳細的實作品,可參考我的網站 : : http://phpweb.yuntech.edu.tw/g9223704 : : 這種東西實作有一堆要注意的地方。但說穿了沒什麼,我也只是騙騙P幣而已。 : : 只是令人吐血的是,寫好了這東西,我同學卻說要趕論文反而找不到腳來湊...Orz。 : : 此程式曾經在魔獸版上PO過,現在放上src。 : : 歡迎大家討論。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.171.152
文章代碼(AID): #1AnP59HR (C_and_CPP)
文章代碼(AID): #1AnP59HR (C_and_CPP)