OD開啟程序以後登入人物跑到一個空地,確保一切正常以後回OD下斷(bp send)測試了一下就算什麼都不操作,OD也會每隔幾秒斷到一次send乘這個基本固定時間中斷的一次結束以後在聊天窗口裡打句話傳送,OD成功斷下斷在007682A6(WS2_32.send)上面(打bp send當然是斷在send上面啦,然後層層退出去找我們要的)敲一次ctrl+F9,地址轉到了0058446E00584459 |. 8B0D ACCB9000 mov ecx, dword ptr [90CBAC]0058445F |. 6A 00 push 0 ; /Flags = 000584461 |. 6A 01 push 1 ; |DataSize = 100584463 |. 68 E8399000 push 009039E8 ; |Data = elementc.009039E800584468 |. 51 push ecx ; |Socket => FC00584469 |. E8 383E1E00 call ; \send0058446E |. EB 07 jmp short 00584477 ; 第一次跳出來的地方,上面一行就是send的呼叫4個引數OD都幫我們註釋清楚了,還不明白可以找windows socket相關的文章來看看send的呼叫再敲一次ctrl+F9,回到再上層呼叫地址0057C6C5再按ctrl+F9退一層,就到了004BF82A,而這行的上三行,就是最終找到的喊話call的呼叫004BF823 |. 56 push esi ; /Arg2004BF824 |. 50 push eax ; |Arg1004BF825 |. E8 A6F60B00 call 0057EED0 ; \elementc.0057EED0004BF82A |. 8D8D D0FAFFFF lea ecx, dword ptr [ebp-530]怎麼確定的? 部分是猜測,部分是參考了 http://www.ghoffice.com/bbs/read.php?tid-37847-fpage-0-toread--page-2.html 這個帖子裡奇才貼的程式碼,事先知道了喊話call是2個引數的,省了不少麻煩。地址換版本變了,不過還是找出來了。取消send的斷點,然後在004BF825上按F2下斷,驗證一下.聊天窗口裡喊1234567,成功斷在004BF825此時暫存器裡資料為:EAX 00924100 elementc.00924100ECX 033B1C68EDX 0C3C6BFC UNICODE "123567"EBX 066CF6E0ESP 0012E6DCEBP 0012F420ESI 0C3C6BFC UNICODE "123567"EDI 00000002EIP 004BF825 elementc.004BF825注意這2個ESI 0C3C6BFC UNICODE "123567"EAX 00924100 elementc.00924100一切盡在不言中了。記得采納啊
OD開啟程序以後登入人物跑到一個空地,確保一切正常以後回OD下斷(bp send)測試了一下就算什麼都不操作,OD也會每隔幾秒斷到一次send乘這個基本固定時間中斷的一次結束以後在聊天窗口裡打句話傳送,OD成功斷下斷在007682A6(WS2_32.send)上面(打bp send當然是斷在send上面啦,然後層層退出去找我們要的)敲一次ctrl+F9,地址轉到了0058446E00584459 |. 8B0D ACCB9000 mov ecx, dword ptr [90CBAC]0058445F |. 6A 00 push 0 ; /Flags = 000584461 |. 6A 01 push 1 ; |DataSize = 100584463 |. 68 E8399000 push 009039E8 ; |Data = elementc.009039E800584468 |. 51 push ecx ; |Socket => FC00584469 |. E8 383E1E00 call ; \send0058446E |. EB 07 jmp short 00584477 ; 第一次跳出來的地方,上面一行就是send的呼叫4個引數OD都幫我們註釋清楚了,還不明白可以找windows socket相關的文章來看看send的呼叫再敲一次ctrl+F9,回到再上層呼叫地址0057C6C5再按ctrl+F9退一層,就到了004BF82A,而這行的上三行,就是最終找到的喊話call的呼叫004BF823 |. 56 push esi ; /Arg2004BF824 |. 50 push eax ; |Arg1004BF825 |. E8 A6F60B00 call 0057EED0 ; \elementc.0057EED0004BF82A |. 8D8D D0FAFFFF lea ecx, dword ptr [ebp-530]怎麼確定的? 部分是猜測,部分是參考了 http://www.ghoffice.com/bbs/read.php?tid-37847-fpage-0-toread--page-2.html 這個帖子裡奇才貼的程式碼,事先知道了喊話call是2個引數的,省了不少麻煩。地址換版本變了,不過還是找出來了。取消send的斷點,然後在004BF825上按F2下斷,驗證一下.聊天窗口裡喊1234567,成功斷在004BF825此時暫存器裡資料為:EAX 00924100 elementc.00924100ECX 033B1C68EDX 0C3C6BFC UNICODE "123567"EBX 066CF6E0ESP 0012E6DCEBP 0012F420ESI 0C3C6BFC UNICODE "123567"EDI 00000002EIP 004BF825 elementc.004BF825注意這2個ESI 0C3C6BFC UNICODE "123567"EAX 00924100 elementc.00924100一切盡在不言中了。記得采納啊