- UID
- 37101
注册时间2007-11-4
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
发表于 2008-3-23 13:20:09
|
显示全部楼层
我追到注册码了
哈哈,用户名:unpack
注册码:630999170928464232629205790
算法我是这么认为的,分为四部分,中间直接相连,不要用其他什么符号。
像我的就是63099--第二次算的,作为注册码的第一部分;9170928---第三次算的,作为注册码的第二部分;4642326---第一次算的,作为注册码的第三部分;9205790--第四次算的,作为注册码的第四部分。但是我在跟第四算法是还是没有搞明白,把我的不完全算法发上:- 004015A6 53 push ebx
- 004015A7 55 push ebp
- 004015A8 56 push esi
- 004015A9 57 push edi
- 004015AA 8BD9 mov ebx, ecx
- 004015AC 6A 01 push 1
- 004015AE 895C24 18 mov [esp+18], ebx
- 004015B2 E8 59040000 call <jmp.&mfc42.#6334>
- 004015B7 8B53 60 mov edx, [ebx+60]
- 004015BA 83C9 FF or ecx, FFFFFFFF
- 004015BD 8BFA mov edi, edx
- 004015BF 33C0 xor eax, eax
- 004015C1 F2:AE repne scas byte ptr es:[edi]
- 004015C3 F7D1 not ecx
- 004015C5 2BF9 sub edi, ecx
- 004015C7 8DAC24 44010000 lea ebp, [esp+144]
- 004015CE 8BC1 mov eax, ecx
- 004015D0 8BF7 mov esi, edi
- 004015D2 8BFD mov edi, ebp
- 004015D4 8B52 F8 mov edx, [edx-8] ; 用户名长度等于edx
- 004015D7 C1E9 02 shr ecx, 2
- 004015DA F3:A5 rep movs dword ptr es:[edi], dword p>
- 004015DC 8BC8 mov ecx, eax
- 004015DE 83E1 03 and ecx, 3
- 004015E1 F3:A4 rep movs byte ptr es:[edi], byte ptr>
- 004015E3 0FBEB424 440100>movsx esi, byte ptr [esp+144] ; 用户名的第一位的十六进制给esi
- 004015EB 85D2 test edx, edx
- 004015ED 75 1D jnz short 0040160C
- 004015EF 52 push edx
- 004015F0 68 44304000 push 00403044 ; 提示
- 004015F5 68 34304000 push 00403034 ; 请输入完整信息!
- 004015FA 8BCB mov ecx, ebx
- 004015FC E8 09040000 call <jmp.&mfc42.#4224>
- 00401601 5F pop edi
- 00401602 5E pop esi
- 00401603 5D pop ebp
- 00401604 5B pop ebx
- 00401605 81C4 FC010000 add esp, 1FC
- 0040160B C3 retn
- 0040160C 8BC2 mov eax, edx ; 把用户名长度edx给eax
- 0040160E 6A 0A push 0A
- 00401610 0FAFC6 imul eax, esi ; 用户名第一位与长度相乘(75(u)*6=2BE)
- 00401613 8BC8 mov ecx, eax ; ecx=eax=2BE
- 00401615 8B3D D0214000 mov edi, [<&msvcrt.#353>] ; msvcrt._itoa
- 0040161B C1E1 04 shl ecx, 4 ; ecx左移四个字符,相当于十六进制左移一位,也就是乘以十,即2BE左移得到2BE0
- 0040161E 03C8 add ecx, eax ; ecx=ecx+eax=2BE0+2BE=2E9E
- 00401620 8D0C88 lea ecx, [eax+ecx*4] ; ecx=ecx+ecx*4=BD36
- 00401623 C1E1 03 shl ecx, 3 ; ecx*8=5E9B0
- 00401626 2BC8 sub ecx, eax ; ecx=ecx-eax=5E9B0-2BE=5E6F2
- 00401628 8D0C49 lea ecx, [ecx+ecx*2] ; ecx=ecx+ecx*2=ecx*3=11B4D6
- 0040162B 8D1C88 lea ebx, [eax+ecx*4] ; ebx=eax+ecx*4=46D616(到后面用作注册码第三部分相连)
- 注明:这是第一次算的的ebx,但是没有压栈,后面压栈的时候就做为注册码的第三部分。
- --------------------------------------------------------------------------------------------------------
- 0040162E 8D8424 AC010000 lea eax, [esp+1AC] ; eax=esp+1AC=13F6A8+1AC=13F854
- 00401635 50 push eax
- 00401636 8D0492 lea eax, [edx+edx*4] ; eax=edx*5=6*5=1E
- 00401639 C1E0 04 shl eax, 4 ; eax*10=1E0
- 0040163C 2BC2 sub eax, edx ; eax=eax-edx=1E0-6=1DA
- 0040163E 8D0C46 lea ecx, [esi+eax*2] ; ecx=(u)75+eax*2=429
- 00401641 03C1 add eax, ecx ; eax=eax+ecx=1DA+429=603
- 00401643 8D1480 lea edx, [eax+eax*4] ; edx=eax*5=603*5=1E0F
- 00401646 8D04D0 lea eax, [eax+edx*8] ; eax=eax+edx*8=eax*(1+5*8)=eax*(1+28)=F67B(二进制为63099做注册码的起始)
- 这是第二次算的,作为注册码的第一部分
- --------------------------------------------------------------------------------------------------------
- 00401649 50 push eax
- 0040164A FFD7 call edi
- 0040164C 8D04B6 lea eax, [esi+esi*4] ; eax=esi*5=249
- 0040164F 8D8C24 EC000000 lea ecx, [esp+EC] ; ecx=esp+EC=13F6A0+EC=13F78C
- 00401656 6A 0A push 0A
- 00401658 51 push ecx
- 00401659 8D1480 lea edx, [eax+eax*4] ; edx=eax*5=249*5=B6D
- 0040165C 8D0456 lea eax, [esi+edx*2] ; eax=esi+edx*2=(u)75+B6D*2=174F
- 0040165F C1E0 05 shl eax, 5 ; eax=eax*20=2E9E0
- 00401662 03C6 add eax, esi ; eax=eax+75=2E9E0+(u)75=2EA55
- 00401664 8D0440 lea eax, [eax+eax*2] ; eax=eax+eax*2=eax*3=8BEFF
- 00401667 C1E0 04 shl eax, 4 ; eax=eax*10=8BEFF0(二进制为9170928连在上面的注册码之后)
- 这是第三次算的,作为注册码的第二部分!
- --------------------------------------------------------------------------------------------------------
- 0040166A 50 push eax
- 0040166B FFD7 call edi
- 0040166D 8D8C24 94000000 lea ecx, [esp+94] ; ecx=esp+94=13F694+94=13F728
- 00401674 6A 0A push 0A
- 00401676 51 push ecx
- 00401677 53 push ebx ; ebx的值的二进制作为注册码的第三部分压栈(46D616=二进制4642326)
- 这个地方才把ebx压栈,作为注册码的第三部分!
- ------------------------------------------------------------------------------------------
- 00401678 FFD7 call edi
- 0040167A 81C3 20170000 add ebx, 1720 ; ebx=ebx+1720=46D616+1720=46ED36
- 00401680 8D5424 3C lea edx, [esp+3C] ; edx=esp+3C=13F688+3C=13F6C4
- 00401684 895C24 34 mov [esp+34], ebx
- 00401688 6A 0A push 0A
- 0040168A DB4424 38 fild dword ptr [esp+38] ; 装入整数到st(0)
- 0040168E 52 push edx
- 0040168F DC0D 38254000 fmul qword ptr [402538] ; 乘上一个实数
- 00401695 E8 D6030000 call <jmp.&msvcrt.#281> //这个跟进去后,然后出来,eax变成下面的1BDA51E,这个地方很是不懂!!!!!
- 0040169A 50 push eax ; 把eax=1BDA51E压栈
- 这个地方把eax压栈,作为注册码的第四部分,但是没有搞清楚怎么得到的!
- -------------------------------------------------------------------------------------
- 0040169B FFD7 call edi
- 0040169D 8D7C24 48 lea edi, [esp+48]
- 004016A1 83C9 FF or ecx, FFFFFFFF ; ecx值不变为13F6C7
- 004016A4 33C0 xor eax, eax ; eax清零
- 004016A6 8D9424 AC000000 lea edx, [esp+AC]
- 004016AD F2:AE repne scas byte ptr es:[edi]
- 004016AF F7D1 not ecx
- 004016B1 2BF9 sub edi, ecx
- 004016B3 8BF7 mov esi, edi
- 004016B5 8BD9 mov ebx, ecx
- 004016B7 8BFA mov edi, edx
- 004016B9 83C9 FF or ecx, FFFFFFFF
- 004016BC F2:AE repne scas byte ptr es:[edi]
- 004016BE 8BCB mov ecx, ebx
- 004016C0 4F dec edi
- 004016C1 C1E9 02 shr ecx, 2
- 004016C4 F3:A5 rep movs dword ptr es:[edi], dword p>
- 004016C6 8BCB mov ecx, ebx
- 004016C8 8D9C24 D8010000 lea ebx, [esp+1D8]
- 004016CF 83E1 03 and ecx, 3
- 004016D2 F3:A4 rep movs byte ptr es:[edi], byte ptr>
- 004016D4 8DBC24 10010000 lea edi, [esp+110]
- 004016DB 83C9 FF or ecx, FFFFFFFF
- 004016DE F2:AE repne scas byte ptr es:[edi]
- 004016E0 F7D1 not ecx
- 004016E2 2BF9 sub edi, ecx
- 004016E4 8BF7 mov esi, edi
- 004016E6 8BE9 mov ebp, ecx
- 004016E8 8BFB mov edi, ebx
- 004016EA 83C9 FF or ecx, FFFFFFFF
- 004016ED F2:AE repne scas byte ptr es:[edi]
- 004016EF 4F dec edi
- 004016F0 8BCD mov ecx, ebp
- 004016F2 C1E9 02 shr ecx, 2
- 004016F5 F3:A5 rep movs dword ptr es:[edi], dword p>
- 004016F7 8BCD mov ecx, ebp
- 004016F9 83E1 03 and ecx, 3
- 004016FC F3:A4 rep movs byte ptr es:[edi], byte ptr>
- 004016FE 8BFA mov edi, edx
- 00401700 83C9 FF or ecx, FFFFFFFF
- 00401703 F2:AE repne scas byte ptr es:[edi]
- 00401705 F7D1 not ecx
- 00401707 2BF9 sub edi, ecx
- 00401709 8BF7 mov esi, edi
- 0040170B 8BFB mov edi, ebx
- 0040170D 8BE9 mov ebp, ecx
- 0040170F 8BD7 mov edx, edi
- 00401711 83C9 FF or ecx, FFFFFFFF
- 00401714 52 push edx
- 00401715 F2:AE repne scas byte ptr es:[edi]
- 00401717 8BCD mov ecx, ebp
- 00401719 4F dec edi
- 0040171A C1E9 02 shr ecx, 2
- 0040171D F3:A5 rep movs dword ptr es:[edi], dword p>
- 0040171F 8BCD mov ecx, ebp
- 00401721 83E1 03 and ecx, 3
- 00401724 F3:A4 rep movs byte ptr es:[edi], byte ptr>
- 00401726 8B7424 48 mov esi, [esp+48]
- 0040172A 8B46 64 mov eax, [esi+64]
- 0040172D 50 push eax
- 0040172E FF15 C4214000 call [<&msvcrt.#391>] ; (initial cpu selection)
- 00401734 83C4 38 add esp, 38
- 00401737 85C0 test eax, eax
- 00401739 75 12 jnz short 0040174D
- 0040173B 50 push eax
- 0040173C 68 2C304000 push 0040302C ; 恭喜
- 00401741 68 20304000 push 00403020 ; 注册成功!
- 00401746 8BCE mov ecx, esi
- 00401748 E8 BD020000 call <jmp.&mfc42.#4224>
- 0040174D 6A 00 push 0
- 0040174F 8BCE mov ecx, esi
- 00401751 E8 BA020000 call <jmp.&mfc42.#6334>
- 00401756 5F pop edi
- 00401757 5E pop esi
- 00401758 5D pop ebp
- 00401759 5B pop ebx
- 0040175A 81C4 FC010000 add esp, 1FC
- 00401760 C3 retn
复制代码 |
|