《Sygate Office Network V4.5 Build 851 簡體漢化版 的“隱藏托盤”》

看雪資料發表於2004-06-08

《Sygate Office Network V4.5 Build 851 簡體漢化版 “隱藏托盤”》只需改半位元組

■ 軟體說明
 ============
   Sygate Office Network是區域網共享一至四個MODEM訪問INTERNET的軟體【現在誰還用MODEM啊,但是這個軟體雙網路卡共享上網很好很簡單很穩定,我用了從未當機,而且客戶機也穩定,曾經5人同時上INTERNET打CS,ping值都在20一下】, 它基於SyGate核心功能,主要為商業網路提供網路連線共享,支援Modem/ISDN/Cable Modem/ASDL/寬頻、頻寬分配、使用者和組的管理、增強的記錄分析及設定黑白名單控制使用者訪問INTERNET。它完全支援Windows 9x/NT/2000/ME/XP系統。

 ■ 軟體使用
 ============
   此軟體只需在連有調變解調器的計算機上(伺服器)安裝,客戶機不需安裝,客戶機的網路設定自己的IP地址,和閘道器為伺服器IP地址。安裝完畢後啟動計算機,執行Sygate,在“工具”選單內選擇“最小化”及“啟動時載入管理器”。在“工具”選單內執行“網路診斷”,進行自動網路引數設定。你也可以透過“工具”選單內的“配置”進行手動設定。設定完畢後,選擇撥號網路連線項。可增加多個連線項,進行多個調變解調器同時訪問Internet。


 ■ 技術支援
 ============
 如有問題,請與Sygate網站(http://www.sygate.com)聯絡。
 廖凱電子工作室 (LiaoKai Electron Workshop) 製作漢化
 廖凱之窗 (http://www.liaokai.com)
 E-mail: liaokai@yeah.net
 
 ■ pediy目的
 我想用老闆的機器共享上網而又不想讓他發現,但是Sygate啟動之後會在工作列載入一個圖示,傻瓜也能看見,所以我要解決他! 

本文以下參考http://www.chat001.com/forum/crackforum/259588.html,by PowerBoy

 【“要向系統托盤中加入和刪除圖示必須要用到SHELL32.Shell_NotifyIconA這個函式,也就是說當軟體啟動的時候一定是呼叫這個函式將自己的圖示加入到系統托盤中;在關閉軟體的時候他也是呼叫這個函式將圖示刪除的. 

我們來查一下WINAPI函式表來確定一下這個函式的使用方法和格式. 
Const NIM_ADD = &H0//這個就是向托盤加入圖示的引數 
Const NIM_MODIFY = &H1 
Const NIM_DELETE = &H2//這個就是從托盤中刪除圖示的引數 

Const NIF_MESSAGE = &H1 
Const NIF_ICON = &H2 
Const NIF_TIP = &H4 

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" 

(ByVal dwMessage As Long, lpData As 

NOTIFYICONDATA) As Long 
上面函式的引數一定要記下來下面有用啊! ”】

我們用WINASM32來反彙編軟體,在函式中查詢SHELL32.Shell_NotifyIconA這個函式看看系統中是怎樣呼叫他的,雙擊幾次我們發現軟體一共有4 處呼叫這個函式. 到此我們甚至不用動態跟蹤了,直接來到這裡,當然你也可以試試其它,但是隻有這裡是SHELL32.Shell_NotifyIconA前面是push 00000000,所以鎖定。

* Referenced by a CALL at Address:
|:00420192   
|
:0041A4D0 833900                  cmp dword ptr [ecx], 00000000
:0041A4D3 7403                    je 0041A4D8
:0041A4D5 33C0                    xor eaxeax
:0041A4D7 C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A4D3(C)
|
:0041A4D8 8B4104                  mov eaxdword ptr [ecx+04]
:0041A4DB 85C0                    test eaxeax
:0041A4DD 7503                    jne 0041A4E2
:0041A4DF 33C0                    xor eaxeax
:0041A4E1 C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A4DD(C)
|
:0041A4E2 C70101000000            mov dword ptr [ecx], 00000001
:0041A4E8 83C108                  add ecx, 00000008
:0041A4EB 51                      push ecx
:0041A4EC 6A00                    push 00000000   <<<<<<<<我們改這裡push 00000002  
                                   <<<<<<<“2”就是從托盤中刪除圖示的引數
                          <<<<<<<<6A00 改成6A02,只改半位元組!
* Reference To: SHELL32.Shell_NotifyIconA, Ord:0112h  <<<<<<<<關鍵API
                                  |
:0041A4EE FF1504744700            Call dword ptr [00477404]
:0041A4F4 C3                      ret
:0041A4F5 90                      nop
................

我們回頭看看00420192處的call,自然也明白這是要改的地方
* Referenced by a CALL at Addresses:
|:0041FEBF   , :0041FF51   
|
:00420110 6AFF                    push FFFFFFFF
:00420112 68682E4700              push 00472E68
:00420117 64A100000000            mov eaxdword ptr fs:[00000000]
:0042011D 50                      push eax
:0042011E 64892500000000          mov dword ptr fs:[00000000], esp
:00420125 51                      push ecx
:00420126 A140274900              mov eaxdword ptr [00492740]
:0042012B 53                      push ebx
:0042012C 55                      push ebp
:0042012D 56                      push esi
:0042012E 57                      push edi
:0042012F 8BF1                    mov esiecx
:00420131 89442410                mov dword ptr [esp+10], eax
:00420135 8D4C2410                lea ecxdword ptr [esp+10]
:00420139 C744241C00000000        mov [esp+1C], 00000000
:00420141 51                      push ecx
:00420142 8BCE                    mov ecxesi
:00420144 E82A9E0300              call 00459F73
:00420149 8B542410                mov edxdword ptr [esp+10]
:0042014D C786D100000083000000    mov dword ptr [esi+000000D1], 00000083
:00420157 8B5AF8                  mov ebxdword ptr [edx-08]
:0042015A E8A7C70400              call 0046C906
:0042015F 8B6804                  mov ebpdword ptr [eax+04]
:00420162 53                      push ebx
:00420163 8D4C2414                lea ecxdword ptr [esp+14]
:00420167 8DBE9D120000            lea edidword ptr [esi+0000129D]
:0042016D E859D00300              call 0045D1CB
:00420172 8B4E1C                  mov ecxdword ptr [esi+1C]
:00420175 50                      push eax
:00420176 8B86D1000000            mov eaxdword ptr [esi+000000D1]
:0042017C 50                      push eax
:0042017D 55                      push ebp

以下就是很明白的提示了:

* Possible Reference to Dialog: DialogID_0091,CONTROL_ID:03E8, "(for allowed period)"
                                  |

* Possible Reference to String Resource ID=01000: "HC (C) 1997-2001 Sygate /l?    

  HC@."
                                  |
:0042017E 68E8030000              push 000003E8

* Possible Reference to Dialog: DialogID_015F, CONTROL_ID:0403, ""
                                  |
:00420183 6803040000              push 00000403
:00420188 51                      push ecx
:00420189 8BCF                    mov ecxedi
:0042018B E8F0A2FFFF              call 0041A480
:00420190 8BCF                    mov ecxedi
:00420192 E839A3FFFF              call 0041A4D0         <<<<<就是這個call決定了
:00420197 8D4C2410                lea ecxdword ptr [esp+10]
:0042019B C744241CFFFFFFFF        mov [esp+1C], FFFFFFFF
:004201A3 E83FCC0300              call 0045CDE7
:004201A8 8B4C2414                mov ecxdword ptr [esp+14]
:004201AC 5F                      pop edi
:004201AD 5E                      pop esi
:004201AE 5D                      pop ebp
:004201AF 5B                      pop ebx
:004201B0 64890D00000000          mov dword ptr fs:[00000000], ecx
:004201B7 83C410                  add esp, 00000010
:004201BA C3                      ret
.....................
 ■ 總結
:0041A4EC 6A00  push 00000000   <<<<<<<<我們改這裡push 00000002  
                 <<<<<<<<“2”就是從托盤中刪除圖示的引數
                <<<<<<<<6A00 改成6A02,只改半位元組!
知道此方法了,大家可以舉一反三啊。

 ■ 期待

   如果有喜歡的朋友,可以給程式新增一個開關托盤的按鈕或選項之類的,就像QQ的那樣,再增加一個撥出熱鍵等等,拋磚引玉了。

相關文章