• 标 题: 《Sygate Office Network V4.5 Build 851 简体汉化版 的“隐藏托盘”》
  • 作 者:laoqian
  • 时 间:004-06-08,09:30
  • 链 接:http://bbs.pediy.com

《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的那样,再增加一个呼出热键等等,抛砖引玉了。