2009-02-13 40 views
5

我有一個Windows EXE應用程序,用於發送數據包到服務器清除。這個應用程序(讓它稱爲客戶端應用程序)肯定是密切的來源,但一些聰明的黑客十六進制編輯二進制文件,並使它發送數據包加擾。如何在Windows應用程序中反向工程加密的數據包?

顯然,這些數據包是以可破譯的方式加密的(否則服務器將無法理解它),但我想要做的是編寫一個仿真器來模擬這個二進制應用程序,相同的數據包到服務器,並能夠解讀響應(如果它是擾碼)。

十六進制的客戶端需要一個額外的dll才能運行,而舊客戶端則不需要。我假設不知何故十六進制客戶端設法加載該DLL(讓我們稱之爲client.dll)和該DLL的功能是實現加擾/解擾,通過掛接到一些窗口API重新路由所有數據包發送client.exe進程。

如果有人能指導我如何開始研究這一切如何工作,以及如何對逆向工程進行逆向工程,那將是非常值得讚賞的。

我不知道要提供什麼樣的信息,但如果有任何缺失,只需回覆,我會發布更多的細節,如果有人想要二進制文件,我很樂意提供它。


任何利害關係方二進制下載:

http://dl.getdropbox.com/u/46623/client.dll

http://dl.getdropbox.com/u/46623/newClient.exe

http://dl.getdropbox.com/u/46623/originalClient.exe

這些慣於因爲資源文件都需要運行 - 他們是約3演出,所以任何地方都不能上傳。名稱已更改爲保護有罪=),但這可能不會保護dll的名稱...

回答

3

我假設其編碼這個這增加加密的數據包的I/O上述方案要麼迷上有關Windows的Socket API的應用(WSASendsend等)或鉤的人用於發送/接收數據的內部程序功能。

這就是說,我建議你使用鉤子檢測程序(例如RkUnhooker)來找出實際上被鉤住的東西。一旦你知道哪些API被掛鉤,你也應該知道這些掛鉤在哪裏,並且從那裏開始,你將不得不手動反向設計掛鉤功能。

至於學習如何做到這一點,我不能指導你只有一個教程來教你一切,但我強烈建議你看看Tuts4You網站,它有大量的教程,將滿足所有你的需求。

如果可能的話,上傳已編輯的客戶端&的鉤子DLL的副本,如果我有時間我會爲你的代碼加密解密函數&。

+0

謝謝提供的幫助 - 我可以肯定的上傳二進制文件和dll,如果你喜歡,但是如果沒有支持的資源文件,它就會出現在一個龐大的3gigs上(畢竟它是一個遊戲客戶端) )。不,我沒有試圖欺騙,只是想模仿客戶。 – Chii 2009-02-13 09:37:45

2

您需要鉤住由附加DLL導出的函數,並查看被調用的函數以及參數傳給他們。這並不容易,因爲您沒有類型信息(例如DLL輸出的函數簽名)。

查看here瞭解API掛鉤的一些信息。你還需要一個好的調試器,試試微軟的Windbg

據我所見,你在這裏唯一的選擇是黑盒測試,即給兩個系統提供已知的輸入,並比較對方的響應以找出差異和相似之處。

 
       +--------------+ 
Input--------->| Original App |--------->Response1 
       +--------------+ 

       +------------+ 
Input--------->| Modded App |--------->Response2 
       +------------+ 

現在,一旦你弄清楚如何使用附加dll中的函數,你可以像原始應用一樣使用它。

相關問題