你下载雅虎通的时候,它在你的注册表里注册了URL Hander:ymsgrWhen Yahoo! Messenger (YIM) is installed, it registers its own handler for URLs of the type "ymsgr". For example, in the Win98 Registry, this handler is HKEY_LOCAL_MACHINESoftwareCLASSESymsgrshellopencommand that has a value for "(Default)" of "< Hard-drive:Directories >YPAGER.EXE %1".Thus when any URL beginning with "ymsgr:" [no slashes, no "//"] is input into a web browser supported by integrated with YIM, "ypager.exe %1" is executed on the complete URL.With no proper bounds checking in the ymsgr protocol, attackers can overflow the YIM function calls "call", "sendim", "getimv", "chat", "addview", "addfriend" tags.For example, loading URL "ymsgr:call?(84)+8-8344332&p=DaH&Oslash;" into a YIM-integrated browser will cause ypager.exe will be executed and it will then execute the YIM/Net2Phone "Call Centre" application and prepare it to dial the phone number and name in the URL.If we input a string that has more than 260 bytes, we will crash YIM; 264 bytes will overwrite the EBP register; four (4) more bytes will overwrite the EIP register. In total, 268 bytes are needed to cause a buffer overflow. For example, this URL
     ymsgr:call?+< aaaaaaaaaaaaaaaa... >
Would overwrite both the EBP (Extended Base Pointer) and EIP (Extended Instruction Pointer). The ellipsis, "...", represents an extension to 268 bytes, e.g. 0x61616161, of "a"s). From there, attackers could overwrite the EIP with any location in memory they choose, jump to their exploit code, and have the code run under the current user's normal privileges.The following are susceptible to BOFs (Buffer Overflows) as well. However, this time we need to punch in another 100 bytes:
     ymsgr:sendim?+< aaaaaaa..... 368 bytes here >
     ymsgr:chat?+< aaaaaaa..... 368 bytes here >
     ymsgr:addview?+< aaaaaaa..... 368 bytes here >
     ymsgr:addfriend?+< aaaaaaa..... 368 bytes here >