【破文作者】 YuanQiao
【软件名称】 XP整容专家v1.2
【下载地址】 http://www.tv808.com/
----------------------------------------------------------------------------------------------
【破解工具】 OD、ImportREC、W32ASM
【破解难度】 +++初级+++ 中级 高级 超难
【破解平台】 WinXP SP2
----------------------------------------------------------------------------------------------
【文章简介】
《XP整容专家》是一个专门用于美化、个性化Windows XP的软件,使用后能让您Windows XP系统从此与众不同,能彻底改变WinXP界面内的各个元素,使用它您可以从系统图标、鼠标指针、桌面壁纸、IE背景、登陆画面、开机画面、个性化文件夹、虚拟外观风格、OEM信息等方面全面修改包装您的XP界面,软件中还附带了大量相关的界面素材资源,您只需要轻点鼠标就可以彻底改变您的Windows!软件界面美观、操作简单方便、新手也可以将您的Windows XP改造的个性十足!更重要的是所有修改不影响电脑运行速度,不占用系统资源,一次修改永久生效!软件界面美观,操作简单。使用本软件后,Windows 从此无限精彩!
----------------------------------------------------------------------------------------------
【破解过程】
脱壳:
软件查壳为ASPack 2.1 -> Alexey Solodovnikov
用OD载入xp2003.exe选不继续分析
00819001 > 60 PUSHAD 此时停在这里,F8一下看堆栈变化。
00819002 E8 72050000 CALL xp2003.00819579
00819007 EB 33 JMP SHORT xp2003.0081903C
00819009 87DB XCHG EBX,EBX
0081900B 90 NOP
0081900C 0070 61 ADD BYTE PTR DS:[EAX+61],DH
0081900F 0010 ADD BYTE PTR DS:[EAX],DL
00819011 70 61 JO SHORT xp2003.00819074
--------------------------------------------------------
EAX 00000000
ECX 0012FFB0
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDA000
ESP 0012FFA4-------------------------》在命令窗口下HR 0012FFA4断点。
EBP 0012FFF0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 00819002 xp2003.00819002
------------------------------
008194F4 /75 08 JNZ SHORT xp2003.008194FE----》此时停在这里,F8几下。
008194F6 |B8 01000000 MOV EAX,1
008194FB |C2 0C00 RETN 0C
008194FE \68 984E5F00 PUSH xp2003.005F4E98
00819503 C3 RETN-------------------------》飞向光明。
由此来到这里
005F4E98 55 PUSH EBP
005F4E99 8BEC MOV EBP,ESP
005F4E9B 83C4 F0 ADD ESP,-10
005F4E9E 53 PUSH EBX
005F4E9F B8 00495F00 MOV EAX,xp2003.005F4900
005F4EA4 E8 C321E1FF CALL xp2003.0040706C
用OD脱壳后,然后用ImportREC修复,运行OK。
OEP:1F4E98
RAV:00213204 大小:000008C0
到此脱壳告一段落。
-----------------------------------------------------------------
算法分析:
用W32ASM载入程序,并查找字符串“注册”,找到一地址005BEC98。
再向上查找发现此段由005BEB35中的CALL进入,再向上查,最后在OD中CTRL+G输入005BEAA8,F2下断。
经过试验下断正确。
005BEAA8 . 55 PUSH EBP
005BEAA9 . 8BEC MOV EBP,ESP
005BEAAB . 33C9 XOR ECX,ECX
005BEAAD . 51 PUSH ECX
005BEAAE . 51 PUSH ECX
005BEAAF . 51 PUSH ECX
005BEAB0 . 51 PUSH ECX
005BEAB1 . 53 PUSH EBX
005BEAB2 . 56 PUSH ESI
005BEAB3 . 57 PUSH EDI
005BEAB4 . 8BD8 MOV EBX,EAX
005BEAB6 . 33C0 XOR EAX,EAX
005BEAB8 . 55 PUSH EBP
005BEAB9 . 68 98EB5B00 PUSH 123_.005BEB98
005BEABE . 64:FF30 PUSH DWORD PTR FS:[EAX]
005BEAC1 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
005BEAC4 . 33D2 XOR EDX,EDX
005BEAC6 . 55 PUSH EBP
005BEAC7 . 68 58EB5B00 PUSH 123_.005BEB58
005BEACC . 64:FF32 PUSH DWORD PTR FS:[EDX]
005BEACF . 64:8922 MOV DWORD PTR FS:[EDX],ESP
005BEAD2 . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
005BEAD5 . 8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
005BEADB . E8 AC8DE8FF CALL 123_.0044788C
005BEAE0 . 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
005BEAE3 . 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
005BEAE6 . E8 5DA8E4FF CALL 123_.00409348
005BEAEB . 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 判断用户名是否为空
005BEAEF . 75 0C JNZ SHORT 123_.005BEAFD
005BEAF1 . A1 38216100 MOV EAX,DWORD PTR DS:[612138]
005BEAF6 . E8 3D66EAFF CALL 123_.00465138
005BEAFB . EB 51 JMP SHORT 123_.005BEB4E
005BEAFD > 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
005BEB00 . 8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
005BEB06 . E8 818DE8FF CALL 123_.0044788C
005BEB0B . 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
005BEB0E . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
005BEB11 . E8 32A8E4FF CALL 123_.00409348
005BEB16 . 837D F4 00 CMP DWORD PTR SS:[EBP-C],0 ; 判断注册码是否为空
005BEB1A . 75 0C JNZ SHORT 123_.005BEB28
005BEB1C . A1 38216100 MOV EAX,DWORD PTR DS:[612138]
005BEB21 . E8 1266EAFF CALL 123_.00465138
005BEB26 . EB 26 JMP SHORT 123_.005BEB4E
005BEB28 > 8BC3 MOV EAX,EBX
005BEB2A . E8 F1020000 CALL 123_.005BEE20 ; 关键计算CALL
005BEB2F . 84C0 TEST AL,AL
005BEB31 . 74 09 JE SHORT 123_.005BEB3C
005BEB33 . 8BC3 MOV EAX,EBX
005BEB35 . E8 6E000000 CALL 123_.005BEBA8 ; 这个是把注册码加密之后保存在注册表中
005BEB3A . EB 12 JMP SHORT 123_.005BEB4E
005BEB3C > B8 F4010000 MOV EAX,1F4
005BEB41 > 48 DEC EAX
005BEB42 .^ 75 FD JNZ SHORT 123_.005BEB41
005BEB44 . A1 38216100 MOV EAX,DWORD PTR DS:[612138]
005BEB49 . E8 EA65EAFF CALL 123_.00465138
005BEB4E > 33C0 XOR EAX,EAX
005BEB50 . 5A POP EDX
005BEB51 . 59 POP ECX
005BEB52 . 59 POP ECX
005BEB53 . 64:8910 MOV DWORD PTR FS:[EAX],EDX
005BEB56 . EB 12 JMP SHORT 123_.005BEB6A
005BEB58 .^ E9 8F54E4FF JMP 123_.00403FEC
005BEB5D . B8 F4010000 MOV EAX,1F4
005BEB62 > 48 DEC EAX
005BEB63 .^ 75 FD JNZ SHORT 123_.005BEB62
005BEB65 . E8 EA57E4FF CALL 123_.00404354
005BEB6A > 33C0 XOR EAX,EAX
005BEB6C . 5A POP EDX
005BEB6D . 59 POP ECX
005BEB6E . 59 POP ECX
005BEB6F . 64:8910 MOV DWORD PTR FS:[EAX],EDX
005BEB72 . 68 9FEB5B00 PUSH 123_.005BEB9F
005BEB77 > 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
005BEB7A . E8 9D5DE4FF CALL 123_.0040491C
005BEB7F . 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
005BEB82 . E8 955DE4FF CALL 123_.0040491C
005BEB87 . 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
005BEB8A . E8 8D5DE4FF CALL 123_.0040491C
005BEB8F . 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
005BEB92 . E8 855DE4FF CALL 123_.0040491C
005BEB97 . C3 RETN
005BEB98 .^ E9 0357E4FF JMP 123_.004042A0
005BEB9D .^ EB D8 JMP SHORT 123_.005BEB77
005BEB9F . 5F POP EDI
005BEBA0 . 5E POP ESI
005BEBA1 . 5B POP EBX
005BEBA2 . 8BE5 MOV ESP,EBP
005BEBA4 . 5D POP EBP
005BEBA5 . C3 RETN
005BEBA6 8BC0 MOV EAX,EAX
====================CALL 123_.005BEE20 ================================
005BEE20 /$ 55 PUSH EBP
005BEE21 |. 8BEC MOV EBP,ESP
005BEE23 |. 83C4 E8 ADD ESP,-18
005BEE26 |. 53 PUSH EBX
005BEE27 |. 56 PUSH ESI
005BEE28 |. 33D2 XOR EDX,EDX
005BEE2A |. 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
005BEE2D |. 8955 EC MOV DWORD PTR SS:[EBP-14],EDX
005BEE30 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
005BEE33 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
005BEE36 |. 33C0 XOR EAX,EAX
005BEE38 |. 55 PUSH EBP
005BEE39 |. 68 1FEF5B00 PUSH 123_.005BEF1F
005BEE3E |. 64:FF30 PUSH DWORD PTR FS:[EAX]
005BEE41 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
005BEE44 |. 33DB XOR EBX,EBX
005BEE46 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
005BEE49 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005BEE4C |. 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
005BEE52 |. E8 358AE8FF CALL 123_.0044788C
005BEE57 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
005BEE5A |. E8 755DE4FF CALL 123_.00404BD4
005BEE5F |. 8BF0 MOV ESI,EAX
005BEE61 |. 85F6 TEST ESI,ESI
005BEE63 |. 7E 38 JLE SHORT 123_.005BEE9D
005BEE65 |. C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1
005BEE6C |> 8D45 EC /LEA EAX,DWORD PTR SS:[EBP-14]
005BEE6F |. 50 |PUSH EAX
005BEE70 |. B9 01000000 |MOV ECX,1
005BEE75 |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10]
005BEE78 |. 8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C]
005BEE7B |. E8 AC5FE4FF |CALL 123_.00404E2C
005BEE80 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14]
005BEE83 |. E8 445FE4FF |CALL 123_.00404DCC
005BEE88 |. 8A00 |MOV AL,BYTE PTR DS:[EAX] ; 顺序取用户的ASC码的HEX值
005BEE8A |. 25 FF000000 |AND EAX,0FF
005BEE8F |. 03D8 |ADD EBX,EAX ; 上面的取值加上EBX
005BEE91 |. 81F3 05FA0B00 |XOR EBX,0BFA05 ; 与0BFA05作异或运算
005BEE97 |. FF45 F0 |INC DWORD PTR SS:[EBP-10]
005BEE9A |. 4E |DEC ESI
005BEE9B |.^ 75 CF \JNZ SHORT 123_.005BEE6C ; 循环计算
005BEE9D |> A1 44216100 MOV EAX,DWORD PTR DS:[612144] ; 取得0034A564
005BEEA2 |. 8BD0 MOV EDX,EAX
005BEEA4 |. C1E0 04 SHL EAX,4 ; 0034A564<<4=034A5640
005BEEA7 |. 03C2 ADD EAX,EDX ; 0034A564+034A5640=037EFBA4
005BEEA9 |. 03D8 ADD EBX,EAX ; 037EFBA4加上上面循环计算后的EBX结果
005BEEAB |. 81C3 D4A31300 ADD EBX,13A3D4 ; 再加上13A3D4
005BEEB1 |. 81F3 8DED5900 XOR EBX,59ED8D ; 再与59ED8D作异或运算
005BEEB7 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
005BEEBA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005BEEBD |. 8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
005BEEC3 |. E8 C489E8FF CALL 123_.0044788C
005BEEC8 |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
005BEECB |. E8 18A7E4FF CALL 123_.004095E8
005BEED0 |. 8BF3 MOV ESI,EBX
005BEED2 |. 81F6 2473C400 XOR ESI,0C47324 ; 最后与0C47324作异或运算
005BEED8 |. 3BC6 CMP EAX,ESI ; 注册码十六进制进行比较
005BEEDA |. 75 19 JNZ SHORT 123_.005BEEF5 ; 这就是爆破点
005BEEDC |. C645 FB 01 MOV BYTE PTR SS:[EBP-5],1
005BEEE0 |. B8 3C216100 MOV EAX,123_.0061213C
005BEEE5 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
005BEEE8 |. E8 835AE4FF CALL 123_.00404970
005BEEED |. 8935 40216100 MOV DWORD PTR DS:[612140],ESI
005BEEF3 |. EB 04 JMP SHORT 123_.005BEEF9
005BEEF5 |> C645 FB 00 MOV BYTE PTR SS:[EBP-5],0
005BEEF9 |> 33C0 XOR EAX,EAX
005BEEFB |. 5A POP EDX
005BEEFC |. 59 POP ECX
005BEEFD |. 59 POP ECX
005BEEFE |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
005BEF01 |. 68 26EF5B00 PUSH 123_.005BEF26
005BEF06 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
005BEF09 |. E8 0E5AE4FF CALL 123_.0040491C
005BEF0E |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
005BEF11 |. E8 065AE4FF CALL 123_.0040491C
005BEF16 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
005BEF19 |. E8 FE59E4FF CALL 123_.0040491C
005BEF1E \. C3 RETN
========================================================================
======================CALL 123_.005BEBA8=================================
005BEBA8 /$ 55 PUSH EBP
005BEBA9 |. 8BEC MOV EBP,ESP
005BEBAB |. 33C9 XOR ECX,ECX
005BEBAD |. 51 PUSH ECX
005BEBAE |. 51 PUSH ECX
005BEBAF |. 51 PUSH ECX
005BEBB0 |. 51 PUSH ECX
005BEBB1 |. 51 PUSH ECX
005BEBB2 |. 53 PUSH EBX
005BEBB3 |. 56 PUSH ESI
005BEBB4 |. 57 PUSH EDI
005BEBB5 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
005BEBB8 |. 33C0 XOR EAX,EAX
005BEBBA |. 55 PUSH EBP
005BEBBB |. 68 16ED5B00 PUSH 123_.005BED16
005BEBC0 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
005BEBC3 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
005BEBC6 |. B2 01 MOV DL,1
005BEBC8 |. A1 4CFE4600 MOV EAX,DWORD PTR DS:[46FE4C]
005BEBCD |. E8 7A13EBFF CALL 123_.0046FF4C
005BEBD2 |. 8BF8 MOV EDI,EAX
005BEBD4 |. BA 01000080 MOV EDX,80000001
005BEBD9 |. 8BC7 MOV EAX,EDI
005BEBDB |. E8 0C14EBFF CALL 123_.0046FFEC
005BEBE0 |. B1 01 MOV CL,1
005BEBE2 |. BA 2CED5B00 MOV EDX,123_.005BED2C ; ASCII "\Software\Microsoft\Windows\CurrentVersion\Explorer\Keyboard"
005BEBE7 |. 8BC7 MOV EAX,EDI
005BEBE9 |. E8 6614EBFF CALL 123_.00470054
005BEBEE |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
005BEBF1 |. E8 265DE4FF CALL 123_.0040491C
005BEBF6 |. A1 3C216100 MOV EAX,DWORD PTR DS:[61213C]
005BEBFB |. E8 D45FE4FF CALL 123_.00404BD4
005BEC00 |. 8BD8 MOV EBX,EAX
005BEC02 |. 85DB TEST EBX,EBX
005BEC04 |. 7E 40 JLE SHORT 123_.005BEC46
005BEC06 |. BE 01000000 MOV ESI,1
005BEC0B |> 8D45 EC /LEA EAX,DWORD PTR SS:[EBP-14]
005BEC0E |. 50 |PUSH EAX
005BEC0F |. B9 01000000 |MOV ECX,1
005BEC14 |. 8BD6 |MOV EDX,ESI
005BEC16 |. A1 3C216100 |MOV EAX,DWORD PTR DS:[61213C]
005BEC1B |. E8 0C62E4FF |CALL 123_.00404E2C
005BEC20 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14]
005BEC23 |. E8 A461E4FF |CALL 123_.00404DCC
005BEC28 |. 33D2 |XOR EDX,EDX
005BEC2A |. 8A10 |MOV DL,BYTE PTR DS:[EAX]
005BEC2C |. 83C2 05 |ADD EDX,5
005BEC2F |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10]
005BEC32 |. E8 C55EE4FF |CALL 123_.00404AFC
005BEC37 |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10]
005BEC3A |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
005BEC3D |. E8 9A5FE4FF |CALL 123_.00404BDC
005BEC42 |. 46 |INC ESI
005BEC43 |. 4B |DEC EBX
005BEC44 |.^ 75 C5 \JNZ SHORT 123_.005BEC0B
005BEC46 |> B8 3C216100 MOV EAX,123_.0061213C
005BEC4B |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
005BEC4E |. E8 1D5DE4FF CALL 123_.00404970
005BEC53 |. 8B0D 3C216100 MOV ECX,DWORD PTR DS:[61213C]
005BEC59 |. BA 74ED5B00 MOV EDX,123_.005BED74 ; ASCII "FN ame"
005BEC5E |. 8BC7 MOV EAX,EDI
005BEC60 |. E8 8B17EBFF CALL 123_.004703F0
005BEC65 |. 8B0D 40216100 MOV ECX,DWORD PTR DS:[612140]
005BEC6B |. 81F1 0AB30000 XOR ECX,0B30A
005BEC71 |. BA 84ED5B00 MOV EDX,123_.005BED84 ; ASCII "FP ass"
005BEC76 |. 8BC7 MOV EAX,EDI
005BEC78 |. E8 1718EBFF CALL 123_.00470494
005BEC7D |. B9 E9030000 MOV ECX,3E9
005BEC82 |. BA 94ED5B00 MOV EDX,123_.005BED94 ; ASCII "ttt"
005BEC87 |. 8BC7 MOV EAX,EDI
005BEC89 |. E8 0618EBFF CALL 123_.00470494
005BEC8E |. 8BC7 MOV EAX,EDI
005BEC90 |. E8 774EE4FF CALL 123_.00403B0C
005BEC95 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
005BEC98 |. BA A0ED5B00 MOV EDX,123_.005BEDA0 ; 恭喜!软件注册成功!
005BEC9D |. E8 125DE4FF CALL 123_.004049B4
005BECA2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005BECA5 |. 8B80 F0020000 MOV EAX,DWORD PTR DS:[EAX+2F0]
005BECAB |. BA C0ED5B00 MOV EDX,123_.005BEDC0 ; 注册版本
005BECB0 |. E8 1FD6EFFF CALL 123_.004BC2D4
005BECB5 |. 6A 40 PUSH 40
005BECB7 |. B9 CCED5B00 MOV ECX,123_.005BEDCC ; 完成功能
005BECBC |. BA D8ED5B00 MOV EDX,123_.005BEDD8 ; 恭喜!软件注册成功!
005BECC1 |. A1 30576000 MOV EAX,DWORD PTR DS:[605730]
005BECC6 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
005BECC8 |. E8 939DEAFF CALL 123_.00468A60
005BECCD |. 6A 40 PUSH 40
005BECCF |. B9 CCED5B00 MOV ECX,123_.005BEDCC ; 完成功能
005BECD4 |. BA F0ED5B00 MOV EDX,123_.005BEDF0 ; 密码已经成功清除,下次进入不需要输入密码了!
005BECD9 |. A1 30576000 MOV EAX,DWORD PTR DS:[605730]
005BECDE |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
005BECE0 |. E8 7B9DEAFF CALL 123_.00468A60
005BECE5 |. A1 38216100 MOV EAX,DWORD PTR DS:[612138]
005BECEA |. E8 4964EAFF CALL 123_.00465138
005BECEF |. A1 BC566000 MOV EAX,DWORD PTR DS:[6056BC]
005BECF4 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
005BECF6 |. E8 3D64EAFF CALL 123_.00465138
005BECFB |. 33C0 XOR EAX,EAX
005BECFD |. 5A POP EDX
005BECFE |. 59 POP ECX
005BECFF |. 59 POP ECX
005BED00 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
005BED03 |. 68 1DED5B00 PUSH 123_.005BED1D
005BED08 |> 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
005BED0B |. BA 04000000 MOV EDX,4
005BED10 |. E8 2B5CE4FF CALL 123_.00404940
005BED15 \. C3 RETN
========================================================================
算法简单,C程序:
#include "Stdio.h"
#include "Conio.h"
int main(void)
{static char str1[30];
long int num1,temp;
int i;
scanf("%s",str1);
num1=0;
for (i=0;i<strlen(str1);i++)
num1=(num1+str1[i])^0x0bfa05;
temp=((0x34a564<<0x4)+0x34a564+num1+0x13a3d4)^0x59ed8d^0xc47324;
printf("%ld\n",temp);
getch();
return 0;
}
现在已经是XP整容专家v1.3版本了,好像只要改一个常数就可以了,有兴趣可跟踪一下。
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
文章写于2005-12-24 0:20:20