關於QQ1220顯示IP Patch (2千字)

看雪資料發表於2002-03-25

精華4夜月同志這篇文章還是不錯的。。。但是有幾個問題:

(1) 最大的問題是根本顯示不了IP,原因在於push wsprintfA函式的引數的時候少push了IP的EIP。

0043AF15: 51                          push        ecx
0043AF16: 52                          push        edx
0043AF17: 56                          push        esi
0043AF18: 8B8614040000                mov        eax,[esi][00000414]
0043AF1E: 8B8058030000                mov        eax,[eax][00000358]
0043AF24: 803800                      cmp        b,[eax],000 ;" "
0043AF27: 7436                        je        .00043AF5F  ----- (2)
0043AF29: 50                          push        eax
0043AF2A: 50                          push        eax
0043AF2B: FF1510035D00                call        _GetAddress ;ipsearcher.dl
0043AF31: 83C404                      add        esp,004 ;""
0043AF34: FF7004                      push        d,[eax][04]
0043AF37: FF30                        push        d,[eax]
0043AF39: 6890B95F00                  push        0005FB990  ----- (3)
0043AF3E: 90                          nop
0043AF3F: 68A0B95F00                  push        0005FB9A0  ----- (4)
0043AF44: FF15E4165800                call        wsprintfA ;USER32.dll
0043AF4A: 83C414                      add        esp,014 ;""
0043AF4D: B8A0B95F00                  mov        eax,0005FB9A0  ----- (5)
0043AF52: 50                          push        eax
0043AF53: FFB64C030000                push        d,[esi][0000034C]
0043AF59: FF15D4145800                call        SetWindowTextA ;USER32.dll
0043AF59: FF15D4145800                call        SetWindowTextA ;USER32.dll
0043AF5F: 5E                          pop        esi
0043AF60: 5A                          pop        edx
0043AF61: 59                          pop        ecx
0043AF62: 8D86E4030000                lea        eax,[esi][000003E4]
0043AF68: E9E8CA0100                  jmp        .000457A55  ----- (5)

(2) 沒有修改exe的資源,把廣告視窗的型別改成EDIT或者STATIC|TEXT才能把SetWindowTextA的東西顯示出來(這個大家自己改吧)。

(3) 資料段的長度沒有改,exe一旦壓縮就顯示不了IP了(應該改成2B000左右,而不是原來的2A960)。

(4) 改好之後win2k/xp會認為它是個非法的Win32檔案,可以用ProcDump的PE Rebuilder來一遍,之後可以在所有平臺執行。

(5)5FB990(就是wsprintfA的格式引數)處應該填上%s %s\n%s,不然也顯示不出來IP。 順便說一句,(3)的原因就是壓縮軟體只取了段的物理大小範圍進行壓縮,這樣就把格式串忽略了,解壓時被設成0,所以顯示不出來任何東西。

相關文章