发新话题
打印

[转载]注册MP3制作大师“AltoMP3 Maker V3.1”

[转载]注册MP3制作大师“AltoMP3 Maker V3.1”

文章作者: qduwg

软件功能:该软件可以从音乐CD内提取乐曲并编码为MP3格式,让你获得具有原音轨的声音质量,体积更加小巧的MP3。另外,支持WAV格式与MP3之间相互转换。未注册版本只可以提取前12个音轨。
工具:SOFTICE,PEID。
引子:现在是大年初二,国内都在欢天喜地过大年,我身处异国他乡,倍感孤单。恭祝各位坛友春节快乐!万事如意!大家都过年去了,好象看雪论坛这几天来得坛友也不多了。唉!“春节诚可贵,思乡价更高,若为破解故,二者皆可抛!”下面还是破解话题,写了这篇破文送给关心我的看雪斑竹和各位支持我的坛友们!算是春节贺礼吧!:)话说今天我安装了这个MP3制作工具,美国人写的东西,拿PEID查看没有加壳。安装后启动程序,在HELP菜单内点击Register,在对话框内输入用户名和注册码。比如:wanggang/654321。调出SICE,下断点bpxgetwindowtexta,F5退出,点击Register按钮,被拦住。按F10键跟踪,我们来到如下代码处:

0042B281>8B86E0000000MOVEAX,DWORDPTRDS:[ESI+E0]//用户名地址送EAX。
0042B287.8DBEE0000000LEAEDI,DWORDPTRDS:[ESI+E0]
0042B28D.8B40F8MOVEAX,DWORDPTRDS:[EAX-8]
0042B290.85C0TESTEAX,EAX
0042B292.7528JNZSHORTALTOMP3M.0042B2BC
*省去多行*
0042B2BC>8B8EE4000000MOVECX,DWORDPTRDS:[ESI+E4]//注册码地址送ECX。
0042B2C2.8DAEE4000000LEAEBP,DWORDPTRDS:[ESI+E4]
0042B2C8.8B41F8MOVEAX,DWORDPTRDS:[ECX-8]
0042B2CB.85C0TESTEAX,EAX
0042B2CD.7552JNZSHORTALTOMP3M.0042B321
*省去多行*
0042B321>8D4C2414LEAECX,DWORDPTRSS:[ESP+14]
0042B325.E8D6980200CALL
0042B32A.8D4C2410LEAECX,DWORDPTRSS:[ESP+10]
0042B32E.C74424280000>MOVDWORDPTRSS:[ESP+28],0
0042B336.E8C5980200CALL
0042B33B.51PUSHECX
0042B33C.885C242CMOVBYTEPTRSS:[ESP+2C],BL
0042B340.8BCCMOVECX,ESP
0042B342.89642420MOVDWORDPTRSS:[ESP+20],ESP
0042B346.57PUSHEDI
0042B347.E8A2980200CALL
0042B34C.8D4C2420LEAECX,DWORDPTRSS:[ESP+20]
0042B350.51PUSHECX
0042B351.E8DA92FEFFCALLALTOMP3M.00414630//复制密码表及用户名。后面分析。(*)
0042B356.83C408ADDESP,8
0042B359.50PUSHEAX
0042B35A.8D4C2418LEAECX,DWORDPTRSS:[ESP+18]
0042B35E.C644242C02MOVBYTEPTRSS:[ESP+2C],2
0042B363.E83A990200CALL//生成一个16字节的新串。
0042B368.8D4C241CLEAECX,DWORDPTRSS:[ESP+1C]
*省去多行*
0042B3B2.8BF5MOVESI,EBP
0042B3B4>8A10MOVDL,BYTEPTRDS:[EAX]//从这里开始到0042B3D6处,循环比较假码与真码了。
0042B3B6.8A1EMOVBL,BYTEPTRDS:[ESI]//真码送DL,假码送BL。
0042B3B8.8ACAMOVCL,DL
0042B3BA.3AD3CMPDL,BL//真假比较。
0042B3BC.751EJNZSHORTALTOMP3M.0042B3DC//如果不相同则OVER。
0042B3BE.84C9TESTCL,CL
0042B3C0.7416JESHORTALTOMP3M.0042B3D8
0042B3C2.8A5001MOVDL,BYTEPTRDS:[EAX+1]
0042B3C5.8A5E01MOVBL,BYTEPTRDS:[ESI+1]
0042B3C8.8ACAMOVCL,DL
0042B3CA.3AD3CMPDL,BL
0042B3CC.750EJNZSHORTALTOMP3M.0042B3DC
0042B3CE.83C002ADDEAX,2
0042B3D1.83C602ADDESI,2
0042B3D4.84C9TESTCL,CL
0042B3D6.^75DCJNZSHORTALTOMP3M.0042B3B4//未完则继续循环。一道循环比较2个字节。
*省去多行*
0042B481.8B07MOVEAX,DWORDPTRDS:[EDI]//用户名地址送EAX。
0042B483.8B35D8B04500MOVESI,DWORDPTRDS:[<&KERNEL32.WritePr>//写入文件。
0042B489.68DCA74600PUSHALTOMP3M.0046A7DC
0042B48E.50PUSHEAX
*略去多行*
0042B4E5.5BPOPEBX
0042B4E6.83C41CADDESP,1C
0042B4E9.C3RETN//这里返回到下面代码处。
*******返回到这里*********
00439E35.E888AC0100CALL
00439E3A.83F801CMPEAX,1//EAX为成功标志,如果为0则OVER。
00439E3D.750EJNZSHORTALTOMP3M.00439E4D//这里不跳才行。
00439E3F.6AFFPUSH-1
00439E41.6A00PUSH0
00439E43.6866E10000PUSH0E166
00439E48.E8C1B10100CALL//显示成功注册信息框。
00439E4D>8D8C24E400000>LEAECX,DWORDPTRSS:[ESP+E4]
==================================================================
下面分析0042B351处的函数CALLALTOMP3M.00414630:
00414630/$6AFFPUSH-1
00414632|.6892624500PUSHALTOMP3M.00456292
00414637|.64:A100000000MOVEAX,DWORDPTRFS:[0]
0041463D|.50PUSHEAX
0041463E|.64:8925000000>MOVDWORDPTRFS:[0],ESP
00414645|.81ECDC010000SUBESP,1DC
0041464B|.53PUSHEBX
0041464C|.55PUSHEBP
0041464D|.33DBXOREBX,EBX
0041464F|.56PUSHESI
00414650|.57PUSHEDI
00414651|.895C2410MOVDWORDPTRSS:[ESP+10],EBX
00414655|.B90D000000MOVECX,0D
0041465A|.BE448C4600MOVESI,ALTOMP3M.00468C44
0041465F|.8DBC24AC00000>LEAEDI,DWORDPTRSS:[ESP+AC]
00414666|.8B84240002000>MOVEAX,DWORDPTRSS:[ESP+200]
0041466D|.F3:A5REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI]
0041466F|.A4MOVSBYTEPTRES:[EDI],BYTEPTRDS:[ESI]
00414670|.B90D000000MOVECX,0D
00414675|.BE108C4600MOVESI,ALTOMP3M.00468C10
0041467A|.8D7C2478LEAEDI,DWORDPTRSS:[ESP+78]
0041467E|.6A64PUSH64
00414680|.F3:A5REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI]
00414682|.B90F000000MOVECX,0F
00414687|.BED08B4600MOVESI,ALTOMP3M.00468BD0
0041468C|.8DBC24E800000>LEAEDI,DWORDPTRSS:[ESP+E8]
00414693|.8B68F8MOVEBP,DWORDPTRDS:[EAX-8]
00414696|.F3:A5REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI]
00414698|.66:A5MOVSWORDPTRES:[EDI],WORDPTRDS:[ESI]
0041469A|.A4MOVSBYTEPTRES:[EDI],BYTEPTRDS:[ESI]
0041469B|.B919000000MOVECX,19
004146A0|.33C0XOREAX,EAX
004146A2|.8DBC242801000>LEAEDI,DWORDPTRSS:[ESP+128]
004146A9|.C78424F801000>MOVDWORDPTRSS:[ESP+1F8],1
004146B4|.F3:ABREPSTOSDWORDPTRES:[EDI]//在此行之前的代码复制密码表。
004146B6|.8D8C240402000>LEAECX,DWORDPTRSS:[ESP+204]//用户名地址。
004146BD|.E8DC060400CALL
004146C2|.8BCDMOVECX,EBP
004146C4|.8BF0MOVESI,EAX
004146C6|.8BD1MOVEDX,ECX
004146C8|.8D7C2478LEAEDI,DWORDPTRSS:[ESP+78]
004146CC|.C1E902SHRECX,2
004146CF|.F3:A5REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI]//复制用户名到密码表前面。
004146D1|.8BCAMOVECX,EDX
004146D3|.83E103ANDECX,3
004146D6|.83FD08CMPEBP,8
004146D9|.F3:A4REPMOVSBYTEPTRES:[EDI],BYTEPTRDS:[ESI]
004146DB|.7F27JGSHORTALTOMP3M.00414704
004146DD|.6A64PUSH64
004146DF|.8D8C240402000>LEAECX,DWORDPTRSS:[ESP+204]
004146E6|.E8B3060400CALL
004146EB|.8BCDMOVECX,EBP
004146ED|.8BF0MOVESI,EAX
004146EF|.8BC1MOVEAX,ECX
004146F1|.8DBC248100000>LEAEDI,DWORDPTRSS:[ESP+81]
004146F8|.C1E902SHRECX,2
004146FB|.F3:A5REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI]//再次复制用户名到密码表前面。
004146FD|.8BC8MOVECX,EAX
004146FF|.83E103ANDECX,3
00414702|.F3:A4REPMOVSBYTEPTRES:[EDI],BYTEPTRDS:[ESI]
00414704|>8BC5MOVEAX,EBP
00414706|.99CDQ
00414707|.83E207ANDEDX,7
0041470A|.03C2ADDEAX,EDX
0041470C|.8BF0MOVESI,EAX
0041470E|.C1FE03SARESI,3
00414711|.46INCESI
00414712|.83FE01CMPESI,1
00414715|.7505JNZSHORTALTOMP3M.0041471C
00414717|.BE02000000MOVESI,2//循环次数送ESI。
0041471C|>33FFXOREDI,EDI
0041471E|.3BF3CMPESI,EBX
00414720|.7E22JLESHORTALTOMP3M.00414744
00414722|>8D8CFC2401000>/LEAECX,DWORDPTRSS:[ESP+EDI*8+124]//循环开始。
00414729|.8D94FCAC00000>|LEAEDX,DWORDPTRSS:[ESP+EDI*8+AC]
00414730|.51|PUSHECX
00414731|.8D44FC7C|LEAEAX,DWORDPTRSS:[ESP+EDI*8+7C]
00414735|.52|PUSHEDX
00414736|.50|PUSHEAX
00414737|.E844E2FFFF|CALLALTOMP3M.00412980//这个函数关键地方。(**)
0041473C|.83C40C|ADDESP,0C
0041473F|.47|INCEDI
00414740|.3BFE|CMPEDI,ESI//比较是否到2。
00414742|.^7CDE\JLSHORTALTOMP3M.00414722//未完继续,总共2遍。循环结束得到16个字节的数。下面用到他们。
00414744|>C1E603SHLESI,3//循环变量初始化为16。下面循环用到。
00414747|.33C9XORECX,ECX
00414749|.3BF3CMPESI,EBX
0041474B|.7E24JLESHORTALTOMP3M.00414771
0041474D|>33C0/XOREAX,EAX//循环开始。
0041474F|.BF3E000000|MOVEDI,3E//除数为3E。
00414754|.8A840C2401000>|MOVAL,BYTEPTRSS:[ESP+ECX+124]//依次取上述16个字节的数值送AL。
0041475B|.99|CDQ
0041475C|.F7FF|IDIVEDI//除以EDI。
0041475E|.41|INCECX
0041475F|.3BCE|CMPECX,ESI//比较是否到16次。
00414761|.8A9414E400000>|MOVDL,BYTEPTRSS:[ESP+EDX+E4]//查密码表得到一个数送DL。
00414768|.88940C8701000>|MOVBYTEPTRSS:[ESP+ECX+187],DL//DL结果保存。
0041476F|.^7CDC\JLSHORTALTOMP3M.0041474D//未完继续。循环结束后得到16个字符组成的串。
00414771|>889C0C8801000>MOVBYTEPTRSS:[ESP+ECX+188],BL
00414778|.B919000000MOVECX,19
0041477D|.B838383838MOVEAX,38383838
00414782|.8D7C2414LEAEDI,DWORDPTRSS:[ESP+14]
00414786|.3BF3CMPESI,EBX
00414788|.F3:ABREPSTOSDWORDPTRES:[EDI]
0041478A|.7E1BJLESHORTALTOMP3M.004147A7
*略去几行*
004147A7|>885C241EMOVBYTEPTRSS:[ESP+1E],BL//把第11位字符换成0,余下的11位以后的字符放弃不用。
004147AB|.33C0XOREAX,EAX
004147AD|>8A540414/MOVDL,BYTEPTRSS:[ESP+EAX+14]//下面这个循环把得到的10位字符串前5位与后5位交换位置。
004147B1|.8A4C0419|MOVCL,BYTEPTRSS:[ESP+EAX+19]
004147B5|.88540419|MOVBYTEPTRSS:[ESP+EAX+19],DL
004147B9|.884C0414|MOVBYTEPTRSS:[ESP+EAX+14],CL
004147BD|.40|INCEAX
004147BE|.83F805|CMPEAX,5
004147C1|.^7CEA\JLSHORTALTOMP3M.004147AD//循环5次。
004147C3|.E82C070400CALL
004147C8|.8BB424FC01000>MOVESI,DWORDPTRSS:[ESP+1FC]
004147CF|.8B00MOVEAX,DWORDPTRDS:[EAX]
004147D1|.8D4C2414LEAECX,DWORDPTRSS:[ESP+14]
004147D5|.51PUSHECX
004147D6|.8BCEMOVECX,ESI
004147D8|.8906MOVDWORDPTRDS:[ESI],EAX
004147DA|.E815040400CALL//求新串串长,并复制到另外一个地方。
004147DF|.C74424100100>MOVDWORDPTRSS:[ESP+10],1
004147E7|.8D8C240002000>LEAECX,DWORDPTRSS:[ESP+200]
004147EE|.889C24F401000>MOVBYTEPTRSS:[ESP+1F4],BL
004147F5|.E8EE030400CALL
004147FA|.8B8C24EC01000>MOVECX,DWORDPTRSS:[ESP+1EC]
00414801|.8BC6MOVEAX,ESI
00414803|.5FPOPEDI
00414804|.5EPOPESI
00414805|.5DPOPEBP
00414806|.5BPOPEBX
00414807|.64:890D000000>MOVDWORDPTRFS:[0],ECX
0041480E|.81C4E8010000ADDESP,1E8
00414814\.C3RETN
======================================================================
下面分析00414737CALLALTOMP3M.00412980:--------(**)
00412980/$81ECD8050000SUBESP,5D8
00412986|.53PUSHEBX
00412987|.55PUSHEBP
00412988|.56PUSHESI
00412989|.57PUSHEDI
0041298A|.BD19000000MOVEBP,19
0041298F|.BB11000000MOVEBX,11
00412994|.BF09000000MOVEDI,9
00412999|.BE01000000MOVESI,1
0041299E|.BA1D000000MOVEDX,1D
004129A3|.B915000000MOVECX,15
004129A8|.B80D000000MOVEAX,0D
*省去1900多行*
00413122|.E849F2FFFFCALLALTOMP3M.00412370
00413127|.8B8424F405000>MOVEAX,DWORDPTRSS:[ESP+5F4]
0041312E|.8D9424A803000>LEAEDX,DWORDPTRSS:[ESP+3A8]
00413135|.52PUSHEDX
00413136|.50PUSHEAX
00413137|.E894F1FFFFCALLALTOMP3M.004122D0//根据用户名ASSIC码进行拆解为'0','1'串。
0041313C|.83C410ADDESP,10
0041313F|.33C0XOREAX,EAX
00413141|.8DB424D801000>LEAESI,DWORDPTRSS:[ESP+1D8]
00413148|>8B0E/MOVECX,DWORDPTRDS:[ESI]
0041314A|.40|INCEAX
0041314B|.83C604|ADDESI,4
0041314E|.83F83F|CMPEAX,3F
00413151|.8A940C9F03000>|MOVDL,BYTEPTRSS:[ESP+ECX+39F]
00413158|.8894045F04000>|MOVBYTEPTRSS:[ESP+EAX+45F],DL
0041315F|.^7EE7\JLESHORTALTOMP3M.00413148
00413161|.8D442410LEAEAX,DWORDPTRSS:[ESP+10]
00413165|.8D8C246004000>LEAECX,DWORDPTRSS:[ESP+460]
0041316C|.50PUSHEAX
0041316D|.51PUSHECX
0041316E|.E85DEDFFFFCALLALTOMP3M.00411ED0//根据前面拆解得到的'0','1'串进行一系列“或”运算,得到8字节数。
00413173|.8B44241CMOVEAX,DWORDPTRSS:[ESP+1C]//高4字节送EAX。
00413177|.8B542418MOVEDX,DWORDPTRSS:[ESP+18]//低4字节送EDX。
0041317B|.83C408ADDESP,8
0041317E|.898424D802000>MOVDWORDPTRSS:[ESP+2D8],EAX
00413185|.899424E004000>MOVDWORDPTRSS:[ESP+4E0],EDX
0041318C|.33C0XOREAX,EAX
0041318E|>40/INCEAX
0041318F|.8D4804|LEAECX,DWORDPTRDS:[EAX+4]
00413192|.83F907|CMPECX,7
00413195|.^7EF7\JLESHORTALTOMP3M.0041318E
00413197|.33EDXOREBP,EBP
00413199|>8B842CD802000>/MOVEAX,DWORDPTRSS:[ESP+EBP+2D8]//高4字节送EAX。这里是循环开始,总共15次。
004131A0|.8DB42CD802000>|LEAESI,DWORDPTRSS:[ESP+EBP+2D8]
004131A7|.8D8C242004000>|LEAECX,DWORDPTRSS:[ESP+420]
004131AE|.8D942CE804000>|LEAEDX,DWORDPTRSS:[ESP+EBP+4E8]
004131B5|.51|PUSHECX
004131B6|.56|PUSHESI
004131B7|.8902|MOVDWORDPTRDS:[EDX],EAX
004131B9|.E812F1FFFF|CALLALTOMP3M.004122D0//对高4字节进行拆解,获得一串'0','1'。
004131BE|.83C408|ADDESP,8
004131C1|.33C0|XOREAX,EAX
004131C3|.8D7C2418|LEAEDI,DWORDPTRSS:[ESP+18]
004131C7|>8B17|/MOVEDX,DWORDPTRDS:[EDI]//下面这个循环复制得到的'0','1'串。
004131C9|.40||INCEAX
004131CA|.83C704||ADDEDI,4
004131CD|.83F82F||CMPEAX,2F
004131D0|.8A8C141F04000>||MOVCL,BYTEPTRSS:[ESP+EDX+41F]
004131D7|.888C049F04000>||MOVBYTEPTRSS:[ESP+EAX+49F],CL
004131DE|.^7EE7|\JLESHORTALTOMP3M.004131C7
004131E0|.8D9424A004000>|LEAEDX,DWORDPTRSS:[ESP+4A0]
004131E7|.56|PUSHESI
004131E8|.52|PUSHEDX
004131E9|.E8E2ECFFFF|CALLALTOMP3M.00411ED0//根据前面拆解得到的'0','1'串进行一系列“或”运算,得到8字节数。
004131EE|.83C408|ADDESP,8
004131F1|.33C0|XOREAX,EAX
004131F3|>8D0C28|/LEAECX,DWORDPTRDS:[EAX+EBP]
004131F6|.8D1428||LEAEDX,DWORDPTRDS:[EAX+EBP]
004131F9|.8DBC0CD802000>||LEAEDI,DWORDPTRSS:[ESP+ECX+2D8]//第二次运算所得结果地址送EDI。
00413200|.8A8C146805000>||MOVCL,BYTEPTRSS:[ESP+EDX+568]//一个6字节常数逐位送CL。
00413207|.8A17||MOVDL,BYTEPTRDS:[EDI]//得到的6字节结果逐位送DL。
00413209|.32D1||XORDL,CL//异或运算结果送DL。
0041320B|.40||INCEAX
0041320C|.83F805||CMPEAX,5
0041320F|.8817||MOVBYTEPTRDS:[EDI],DL//DL保存。
00413211|.^7EE0|\JLESHORTALTOMP3M.004131F3//未完继续。
00413213|.56|PUSHESI
00413214|.E8A7000000|CALLALTOMP3M.004132C0//该函数得到4字节结果。
00413219|.8D9424DC02000>|LEAEDX,DWORDPTRSS:[ESP+2DC]
00413220|.83C404|ADDESP,4
00413223|.33C0|XOREAX,EAX
00413225|.2BF2|SUBESI,EDX
00413227|>8D0C06|/LEAECX,DWORDPTRDS:[ESI+EAX]
0041322A|.8D1406||LEAEDX,DWORDPTRDS:[ESI+EAX]
0041322D|.8A8C0CD802000>||MOVCL,BYTEPTRSS:[ESP+ECX+2D8]
00413234|.328C14E004000>||XORCL,BYTEPTRSS:[ESP+EDX+4E0]
0041323B|.8D1406||LEAEDX,DWORDPTRDS:[ESI+EAX]
0041323E|.40||INCEAX
0041323F|.83F803||CMPEAX,3
00413242|.888C14E002000>||MOVBYTEPTRSS:[ESP+EDX+2E0],CL
00413249|.^7EDC|\JLESHORTALTOMP3M.00413227
0041324B|.83C508|ADDEBP,8//循环步长为8。
0041324E|.83FD78|CMPEBP,78//与78比较。
00413251|.^0F8E42FFFFFF\JLEALTOMP3M.00413199//总共循环15次。
00413257|.8BB424F405000>MOVESI,DWORDPTRSS:[ESP+5F4]
0041325E|.8B84245803000>MOVEAX,DWORDPTRSS:[ESP+358]
00413265|.8B8C246005000>MOVECX,DWORDPTRSS:[ESP+560]
0041326C|.8D9424E003000>LEAEDX,DWORDPTRSS:[ESP+3E0]
00413273|.52PUSHEDX
00413274|.8906MOVDWORDPTRDS:[ESI],EAX
00413276|.56PUSHESI
00413277|.894E04MOVDWORDPTRDS:[ESI+4],ECX
0041327A|.E851F0FFFFCALLALTOMP3M.004122D0//对高4字节进行拆解,获得一串'0','1'。
0041327F|.83C408ADDESP,8
00413282|.8D8424D800000>LEAEAX,DWORDPTRSS:[ESP+D8]
00413289|>8B08/MOVECX,DWORDPTRDS:[EAX]
0041328B|.43|INCEBX
0041328C|.83C004|ADDEAX,4
0041328F|.83FB3F|CMPEBX,3F//循环次数3F。
00413292|.8A940CDF03000>|MOVDL,BYTEPTRSS:[ESP+ECX+3DF]//挑选指定数值送DL。
00413299|.88941C5F03000>|MOVBYTEPTRSS:[ESP+EBX+35F],DL//DL值送指定内存。
004132A0|.^7EE7\JLESHORTALTOMP3M.00413289
004132A2|.8D84246003000>LEAEAX,DWORDPTRSS:[ESP+360]
004132A9|.56PUSHESI
004132AA|.50PUSHEAX
004132AB|.E820ECFFFFCALLALTOMP3M.00411ED0//把得到的'0','1'串,重新构造一个8字节数。
004132B0|.83C408ADDESP,8
004132B3|.5FPOPEDI
004132B4|.5EPOPESI
004132B5|.5DPOPEBP
004132B6|.5BPOPEBX
004132B7|.81C4D8050000ADDESP,5D8
004132BD\.C3RETN
==================================================================================
后记:
这个软件的注册码计算过程跟我以前跟踪的一个MP3制作工具非常相似,也是用大量的指令构造密码表,不过这个软件更复杂些。因为对用户名的计算强度非常大,而且都是根据字符ASSCI码进行大量“或”运算,从而获取一个'0','1'串,然后再把这个串加工为8字节的数。翻来覆去循环了15次。计算强度还是比较大的。但是最后这个软件还是用明码比较,所以我认为其保护“功亏一篑”,形同于无。跟踪了1个小时,然后用1个小时写出此破文,注册机就不写了,相信比较麻烦。感兴趣的坛友可以找这个软件试试。:)再次向各位支持的坛友和大侠表示衷心的感谢!祝看雪论坛越来越热!!祝各位技术进步!

结论:
Name:wanggang
Code:8282994716(这个CODE的中间形式是9471682829796741,舍掉了后6位,然后前5位与后5位交换位置)

另外,此软件在Windows目录下生成文件Regkeycr.ini,里面放着你的注册信息,明码形式。如果修改了里面的信息,则变为未注册的。


TOP

发新话题