TA的每日心情 | 开心 2015-8-23 23:49 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
本帖最后由 GGLHY 于 2014-2-15 13:12 编辑
WINNC注册算法分析实录
winnc,一款独具特色的文件管理类软件。
先放界面截图一张:
有兴趣的童靴可以移步其官网:www.winnc.com
又是一个实时验证的。
呵呵。
闲话少叙,咱直奔主题:
一、莽苍踏雪寻
寒风萧萧、飞雪飘零,长路漫漫,踏歌而行:
- 00C9EE4E |. 8B83 AC030000 MOV EAX,DWORD PTR DS:[EBX+3AC]
- 00C9EE54 |. E8 CB8881FF CALL WinNc.004B7724
- 00C9EE59 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 取用户名(UNICODE "gglhy")
- 00C9EE5C |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
- 00C9EE5F |. E8 285E78FF CALL WinNc.00424C8C
- 00C9EE64 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
- 00C9EE67 |. 8B83 B4030000 MOV EAX,DWORD PTR DS:[EBX+3B4]
- 00C9EE6D |. E8 B28881FF CALL WinNc.004B7724
- 00C9EE72 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; 取输入的假码(UNICODE "1598753046")
- 00C9EE75 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
- 00C9EE78 |. E8 0F5E78FF CALL WinNc.00424C8C
- 00C9EE7D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 00C9EE80 |. 85C0 TEST EAX,EAX
- 00C9EE82 |. 74 05 JE SHORT WinNc.00C9EE89
- 00C9EE84 |. 83E8 04 SUB EAX,4
- 00C9EE87 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 用户名长度,本例为5
- 00C9EE89 |> 83F8 04 CMP EAX,4 ; 用户名长度不得小于4!
- 00C9EE8C |. 7D 3C JGE SHORT WinNc.00C9EECA
- 00C9EE8E |. BA 50F0C900 MOV EDX,WinNc.00C9F050 ; UNICODE "Please enter a valid registration name"
- 00C9EE93 |. 8B83 D4030000 MOV EAX,DWORD PTR DS:[EBX+3D4]
- (省略部分代码)
- 00C9EF04 |> E8 9B85CAFF CALL WinNc.009474A4
- 00C9EF09 |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; 输入的假码(UNICODE "1598753046")
- 00C9EF0C |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 00C9EF0F |. E8 588BCAFF CALL WinNc.00947A6C ; 莽苍踏雪寻
- 00C9EF14 |. 84C0 TEST AL,AL ; 玉壁月华明
- 00C9EF16 |. 75 14 JNZ SHORT WinNc.00C9EF2C ; 谁家子弟谁家院?无计悔多情!
- 00C9EF18 |. E8 8785CAFF CALL WinNc.009474A4
- 00C9EF1D |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
- 00C9EF20 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
- 00C9EF23 |. E8 448BCAFF CALL WinNc.00947A6C
- 00C9EF28 |. 84C0 TEST AL,AL
- 00C9EF2A |. 74 72 JE SHORT WinNc.00C9EF9E
- 00C9EF2C |> 33D2 XOR EDX,EDX
- 00C9EF2E |. 8B83 D0030000 MOV EAX,DWORD PTR DS:[EBX+3D0]
- (省略部分代码)
- 00C9EF97 |. E8 2C117FFF CALL WinNc.004900C8
- 00C9EF9C |. EB 70 JMP SHORT WinNc.00C9F00E
- 00C9EF9E |> BA ACF0C900 MOV EDX,WinNc.00C9F0AC ; UNICODE "Please enter a valid key"
- 00C9EFA3 |. 8B83 D0030000 MOV EAX,DWORD PTR DS:[EBX+3D0]
- 00C9EFA9 |. E8 D28781FF CALL WinNc.004B7780
复制代码 哎~~
- 00C9EF09 |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; 输入的假码(UNICODE "1598753046")
- 00C9EF0C |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 00C9EF0F |. E8 588BCAFF CALL WinNc.00947A6C ; 莽苍踏雪寻
- 00C9EF14 |. 84C0 TEST AL,AL ; 玉壁月华明
- 00C9EF16 |. 75 14 JNZ SHORT WinNc.00C9EF2C ; 谁家子弟谁家院?无计悔多情!
复制代码
枯井底、污泥处 念枉求美眷良缘安在?元芳你怎么看?
二、 青衫磊落险峰行
好吧,莽苍踏雪寻!让我们轻踏“凌波微步”,到00C9EF0F CALL WinNc.00947A6C处
F7进入:
- 00947A6C /[ DISCUZ_CODE_67 ]nbsp; 55 PUSH EBP
- (省略部分代码)
- 00947A9C |. 33DB XOR EBX,EBX
- 00947A9E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 00947AA1 |. 85C0 TEST EAX,EAX
- 00947AA3 |. 74 05 JE SHORT WinNc.00947AAA
- 00947AA5 |. 83E8 04 SUB EAX,4
- 00947AA8 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 用户名长度,本例为5
- 00947AAA |> 85C0 TEST EAX,EAX
- 00947AAC |. 74 1A JE SHORT WinNc.00947AC8
- 00947AAE |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
- 00947AB1 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 00947AB4 |. E8 5FFFFFFF CALL WinNc.00947A18 ; 为谁开?茶花满路~
- 00947AB9 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; 千万里,我追寻着你~
- 00947ABC |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; 输入的假码("1598753046")
- 00947ABF |. E8 8026ACFF CALL WinNc.0040A144
- 00947AC4 |. 75 02 JNZ SHORT WinNc.00947AC8 ; 风骤紧,缥缈峰头云乱
- 00947AC6 |. B3 01 MOV BL,1 ; 却试问,几时把痴心?
- 00947AC8 |> 33C0 XOR EAX,EAX
- 00947ACA |. 5A POP EDX
- 00947ACB |. 59 POP ECX
- 00947ACC |. 59 POP ECX
- 00947ACD |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
- 00947AD0 |. 68 EA7A9400 PUSH WinNc.00947AEA
- 00947AD5 |> 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
- 00947AD8 |. BA 03000000 MOV EDX,3
- 00947ADD |. E8 E211ACFF CALL WinNc.00408CC4
- 00947AE2 \. C3 RETN
复制代码
显然,爆破的地方很明显~~,这也不是本文的目的。
昔时因、今日意、且自逍遥没谁管,输赢成败又争由人算?
三、杏子林中 商略平生义
看完第二部分我们很容易得出一个结论,那就是:
00947AB4处CALL WinNc.00947A18这里是我们必须进去的:
F7后:
- 00947A18 /[ DISCUZ_CODE_68 ]nbsp; 55 PUSH EBP
- 00947A19 |. 8BEC MOV EBP,ESP
- 00947A1B |. 51 PUSH ECX
- 00947A1C |. 53 PUSH EBX
- 00947A1D |. 8BDA MOV EBX,EDX
- 00947A1F |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
- 00947A22 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 00947A25 |. E8 1E13ACFF CALL WinNc.00408D48
- 00947A2A |. 33C0 XOR EAX,EAX
- 00947A2C |. 55 PUSH EBP
- 00947A2D |. 68 617A9400 PUSH WinNc.00947A61
- 00947A32 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
- 00947A35 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
- 00947A38 |. 53 PUSH EBX
- 00947A39 |. BA B899E700 MOV EDX,WinNc.00E799B8
- 00947A3E |. B9 0B000000 MOV ECX,0B ; 记住这个0B吧!
- 00947A43 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 00947A46 |. E8 39FEFFFF CALL WinNc.00947884 ; 赤手屠熊博虎~,金戈荡寇鏖兵!
- 00947A4B |. 33C0 XOR EAX,EAX
- 00947A4D |. 5A POP EDX
- 00947A4E |. 59 POP ECX
- 00947A4F |. 59 POP ECX
- 00947A50 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
- 00947A53 |. 68 687A9400 PUSH WinNc.00947A68
- 00947A58 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
- 00947A5B |. E8 0412ACFF CALL WinNc.00408C64
- 00947A60 \. C3 RETN
- 00947A61 .^ E9 FA07ACFF JMP WinNc.00408260
- 00947A66 .^ EB F0 JMP SHORT WinNc.00947A58
- 00947A68 . 5B POP EBX
- 00947A69 . 59 POP ECX
- 00947A6A . 5D POP EBP
- 00947A6B . C3 RETN
复制代码
四、 酒罢问君三语
不入虎穴,焉得虎子?我们再向虎山行:
- 00947884 /[ DISCUZ_CODE_69 ]nbsp; 55 PUSH EBP
- 00947885 |. 8BEC MOV EBP,ESP
- 00947887 |. 83C4 BC ADD ESP,-44
- 0094788A |. 53 PUSH EBX
- 0094788B |. 56 PUSH ESI
- 0094788C |. 57 PUSH EDI
- 0094788D |. 33DB XOR EBX,EBX
- 0094788F |. 895D BC MOV DWORD PTR SS:[EBP-44],EBX
- 00947892 |. 895D F8 MOV DWORD PTR SS:[EBP-8],EBX
- 00947895 |. 894D F0 MOV DWORD PTR SS:[EBP-10],ECX ; 0B,记住你了!
- 00947898 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
- 0094789B |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
- 0094789E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 009478A1 |. E8 A214ACFF CALL WinNc.00408D48
- 009478A6 |. 33C0 XOR EAX,EAX
- 009478A8 |. 55 PUSH EBP
- 009478A9 |. 68 F7799400 PUSH WinNc.009479F7
- 009478AE |. 64:FF30 PUSH DWORD PTR FS:[EAX]
- 009478B1 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
- 009478B4 |. BF 03020000 MOV EDI,203 ; 好吧,还要记着这个203H
- 009478B9 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 009478BC |. 85C0 TEST EAX,EAX
- 009478BE |. 74 05 JE SHORT WinNc.009478C5
- 009478C0 |. 83E8 04 SUB EAX,4
- 009478C3 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 用户名长度,本例为5
- 009478C5 |> 8BF0 MOV ESI,EAX
- 009478C7 |. 85F6 TEST ESI,ESI
- 009478C9 |. 7E 3E JLE SHORT WinNc.00947909
- 009478CB |. BB 01000000 MOV EBX,1 ; 计数器初始化为1
- 009478D0 |> 55 /PUSH EBP
- 009478D1 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 009478D4 |. 4B |DEC EBX
- 009478D5 |. 85C0 |TEST EAX,EAX
- 009478D7 |. 74 05 |JE SHORT WinNc.009478DE
- 009478D9 |. 3B58 FC |CMP EBX,DWORD PTR DS:[EAX-4] ; 用户名是否取完
- 009478DC |. 72 05 |JB SHORT WinNc.009478E3
- 009478DE |> E8 F9F4ABFF |CALL WinNc.00406DDC
- 009478E3 |> 43 |INC EBX
- 009478E4 |. 0FB74458 FE |MOVZX EAX,WORD PTR DS:[EAX+EBX*2-2>; 用户名依次每一位
- 009478E9 |. E8 4EFFFFFF |CALL WinNc.0094783C ; 来吧,来吧,一起舞蹈~~
- 009478EE |. 59 |POP ECX
- 009478EF |. 03F8 |ADD EDI,EAX ; 跳舞后的结果累加(EDI初始为203H)
- 009478F1 |. 71 05 |JNO SHORT WinNc.009478F8
- 009478F3 |. E8 ECF4ABFF |CALL WinNc.00406DE4
- 009478F8 |> 43 |INC EBX
- 009478F9 |. 4E |DEC ESI
- 009478FA |.^ 75 D4 \JNZ SHORT WinNc.009478D0 ; 循环结束,累加的结果为21D
- 009478FC |. EB 0B JMP SHORT WinNc.00947909
- 009478FE |> 8D45 FC /LEA EAX,DWORD PTR SS:[EBP-4]
- 00947901 |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
- 00947904 |. E8 4B26ACFF |CALL WinNc.00409F54
- 00947909 |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 用户名(UNICODE "gglhy")
- 0094790C |. E8 4B18ACFF |CALL WinNc.0040915C
- 00947911 |. 83F8 0C |CMP EAX,0C ; 用户名长度:12
- 00947914 |.^ 7C E8 \JL SHORT WinNc.009478FE ; 用户名自我复制到不小于12为止!!!!!
- 00947916 |. BB 01000000 MOV EBX,1
- 0094791B |. 8D75 C0 LEA ESI,DWORD PTR SS:[EBP-40]
- 0094791E |> 55 /PUSH EBP
- 0094791F |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] ; 自我复制后的用户名("gglhygglhygglhygglhy")
- 00947922 |. 4B |DEC EBX
- 00947923 |. 85C0 |TEST EAX,EAX
- 00947925 |. 74 05 |JE SHORT WinNc.0094792C
- 00947927 |. 3B58 FC |CMP EBX,DWORD PTR DS:[EAX-4] ; 自我复制后的用户名长度,本例=20取完没有
- 0094792A |. 72 05 |JB SHORT WinNc.00947931
- 0094792C |> E8 ABF4ABFF |CALL WinNc.00406DDC
- 00947931 |> 43 |INC EBX
- 00947932 |. 0FB74458 FE |MOVZX EAX,WORD PTR DS:[EAX+EBX*2-2>; 复制后的用户名依次每一位
- 00947937 |. 8BD3 |MOV EDX,EBX
- 00947939 |. 83EA 01 |SUB EDX,1 ; 计数器-1
- 0094793C |. 71 05 |JNO SHORT WinNc.00947943
- 0094793E |. E8 A1F4ABFF |CALL WinNc.00406DE4
- 00947943 |> 85D2 |TEST EDX,EDX
- 00947945 |. 7C 05 |JL SHORT WinNc.0094794C
- 00947947 |. 3B55 F0 |CMP EDX,DWORD PTR SS:[EBP-10] ; 在这里会看到熟人0B哦!
- 0094794A |. 7E 05 |JLE SHORT WinNc.00947951
- 0094794C |> E8 8BF4ABFF |CALL WinNc.00406DDC
- 00947951 |> 8B4D F4 |MOV ECX,DWORD PTR SS:[EBP-C]
- 00947954 |. 030491 |ADD EAX,DWORD PTR DS:[ECX+EDX*4] ; 用户名ASC相加,[]里查表,初始为37
- 00947957 |. 71 05 |JNO SHORT WinNc.0094795E
- 00947959 |. E8 86F4ABFF |CALL WinNc.00406DE4
- 0094795E |> 03C7 |ADD EAX,EDI ; 再次累加,还记得前面跳完舞的21D吗?
- 00947960 |. 71 05 |JNO SHORT WinNc.00947967
- 00947962 |. E8 7DF4ABFF |CALL WinNc.00406DE4
- 00947967 |> 99 |CDQ
- 00947968 |. 33C2 |XOR EAX,EDX ; 累加结果 XOR 0
- 0094796A |. 2BC2 |SUB EAX,EDX ; 再-0
- 0094796C |. 71 05 |JNO SHORT WinNc.00947973
- 0094796E |. E8 71F4ABFF |CALL WinNc.00406DE4
- 00947973 |> E8 C4FEFFFF |CALL WinNc.0094783C ; 又去前面的广场跳舞了~~
- 00947978 |. 59 |POP ECX
- 00947979 |. 8906 |MOV DWORD PTR DS:[ESI],EAX ; 每次跳完舞蹈后的结果保存起来
- 0094797B |. 43 |INC EBX
- 0094797C |. 83C6 04 |ADD ESI,4
- 0094797F |. 83FB 0D |CMP EBX,0D ; 12位运算完了吗?
- 00947982 |.^ 75 9A \JNZ SHORT WinNc.0094791E
- 00947984 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
- 00947987 |. E8 D812ACFF CALL WinNc.00408C64
- 0094798C |. BB 01000000 MOV EBX,1
- 00947991 |. 8D75 C0 LEA ESI,DWORD PTR SS:[EBP-40]
- 00947994 |> 8D55 BC /LEA EDX,DWORD PTR SS:[EBP-44]
- 00947997 |. 8B06 |MOV EAX,DWORD PTR DS:[ESI] ; 保存起来的12个结果
- 00947999 |. E8 C2DCADFF |CALL WinNc.00425660
- 0094799E |. 8B55 BC |MOV EDX,DWORD PTR SS:[EBP-44] ; 转字符形式
- 009479A1 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
- 009479A4 |. E8 AB25ACFF |CALL WinNc.00409F54
- 009479A9 |. 83FB 04 |CMP EBX,4
- 009479AC |. 74 05 |JE SHORT WinNc.009479B3 ; 分段
- 009479AE |. 83FB 08 |CMP EBX,8
- 009479B1 |. 75 0D |JNZ SHORT WinNc.009479C0 ; 分段
- 009479B3 |> 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
- 009479B6 |. BA 147A9400 |MOV EDX,WinNc.00947A14
- 009479BB |. E8 9425ACFF |CALL WinNc.00409F54
- 009479C0 |> 43 |INC EBX
- 009479C1 |. 83C6 04 |ADD ESI,4
- 009479C4 |. 83FB 0D |CMP EBX,0D
- 009479C7 |.^ 75 CB \JNZ SHORT WinNc.00947994 ; 12位平均分成3段,每段4位
- 009479C9 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
- 009479CC |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
- 009479CF |. E8 7016ACFF CALL WinNc.00409044
- 009479D4 |. 33C0 XOR EAX,EAX
- 009479D6 |. 5A POP EDX
- 009479D7 |. 59 POP ECX
- 009479D8 |. 59 POP ECX
- 009479D9 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
- 009479DC |. 68 FE799400 PUSH WinNc.009479FE
- 009479E1 |> 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
- 009479E4 |. E8 7B12ACFF CALL WinNc.00408C64
- 009479E9 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
- 009479EC |. BA 02000000 MOV EDX,2
- 009479F1 |. E8 CE12ACFF CALL WinNc.00408CC4
- 009479F6 \. C3 RETN
- 009479F7 .^ E9 6408ACFF JMP WinNc.00408260
- 009479FC .^ EB E3 JMP SHORT WinNc.009479E1
- 009479FE . 5F POP EDI
- 009479FF . 5E POP ESI
- 00947A00 . 5B POP EBX
- 00947A01 . 8BE5 MOV ESP,EBP
- 00947A03 . 5D POP EBP
- 00947A04 . C2 0400 RETN 4
复制代码
其实上面我已经注释的比较详细了~~~,这里小结一下:
a.第一个循环得到一个数值,并参与第三个循环的计算,其来历详见下面的第五部分。
b.第二个循环是对用户名的判断与处理。用户名长度不足12位则自我复制一直到不小于12位为止。
这里要说明的是,用户名的自我复制是以新用户名为准来复制。比如用户名"ABCD",则自我复制的过程为:
ABCD--->ABCDABCD--->ABCDABCDABCDABCD
这里需要大家注意下即可~~
不信,可以去这里看看:
- 00409F6C . 8B56 FC MOV EDX,DWORD PTR DS:[ESI-4]
- 00409F6F . 01FA ADD EDX,EDI ; 自己复制后再次复制~~~~!!!
- 00409F71 . F7C2 000000C0 TEST EDX,C0000000
复制代码
c.第三个循环其实是依次取用户名每一位的ASC,查表、计算,得到12位数值。
d.第四个循环就很简单了,数值转字符,格式化为“XXXX-XXXX-XXXX”的形式。没啥可说的,也不解释~~~
五、水榭听香 指点群豪戏
六、奈天昏地暗斗转星移
七、悄立雁门,绝壁无余字!
没什么需要说的了。
燕云十八骑 奔腾如虎风烟举:
实时验证通过~~~~~
OK了
reged!
PS:本文首发于飘云阁论坛。转载请注明出处。谢谢~~
|
评分
-
查看全部评分
|