好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 shenaset 于 2009-3-13 16:10 编辑
【文章标题】: 里诺仓库管理软件(单机版)3.70 算法分析
【文章作者】: .........
【作者邮箱】: .........
【作者主页】: .........
【作者QQ号】: .........
【软件名称】: 里诺仓库管理软件(单机版)3.70
【下载地址】: http://www.lenosoft.net/download/depot370.zip
【作者声明】: 无聊呀无聊,好无聊
--------------------------------------------------------------------------------
【详细过程】
006E3225 . 51 PUSH ECX
006E3226 . 51 PUSH ECX
006E3227 . 51 PUSH ECX
006E3228 . 51 PUSH ECX
006E3229 . 51 PUSH ECX
006E322A . 53 PUSH EBX
006E322B . 56 PUSH ESI
006E322C . 57 PUSH EDI
006E322D . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
006E3230 . 33C0 XOR EAX,EAX
006E3232 . 55 PUSH EBP
006E3233 . 68 71336E00 PUSH Depot.006E3371
006E3238 . 64:FF30 PUSH DWORD PTR FS:[EAX]
006E323B . 64:8920 MOV DWORD PTR FS:[EAX],ESP
006E323E . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006E3241 . E8 AE020000 CALL Depot.006E34F4 ; #1算法(进去)
006E3246 . 84C0 TEST AL,AL
006E3248 . 0F84 DB000000 JE Depot.006E3329 ; 关键跳
006E324E . 33C0 XOR EAX,EAX
006E3250 . 55 PUSH EBP
006E3251 . 68 0D336E00 PUSH Depot.006E330D
006E3256 . 64:FF30 PUSH DWORD PTR FS:[EAX]
#1
006E34F4 /$ 55 PUSH EBP
006E34F5 |. 8BEC MOV EBP,ESP
006E34F7 |. B9 04000000 MOV ECX,4
006E34FC |> 6A 00 /PUSH 0
006E34FE |. 6A 00 |PUSH 0
006E3500 |. 49 |DEC ECX
006E3501 |.^ 75 F9 \JNZ SHORT Depot.006E34FC
006E3503 |. 51 PUSH ECX
006E3504 |. 53 PUSH EBX
006E3505 |. 56 PUSH ESI
006E3506 |. 8BF0 MOV ESI,EAX
006E3508 |. 33C0 XOR EAX,EAX
006E350A |. 55 PUSH EBP
006E350B |. 68 09366E00 PUSH Depot.006E3609
006E3510 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006E3513 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006E3516 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
006E3519 |. 8B86 08030000 MOV EAX,DWORD PTR DS:[ESI+308]
006E351F |. E8 CC83DAFF CALL Depot.0048B8F0
006E3524 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
006E3527 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
006E352A |. E8 FD65D2FF CALL Depot.00409B2C
006E352F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006E3532 |. 50 PUSH EAX ; 注册码(假码)入栈
006E3533 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
006E3536 |. 8B86 04030000 MOV EAX,DWORD PTR DS:[ESI+304]
006E353C |. E8 AF83DAFF CALL Depot.0048B8F0
006E3541 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
006E3544 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
006E3547 |. E8 E065D2FF CALL Depot.00409B2C
006E354C |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
006E354F |. 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C]
006E3552 |. 8BC6 MOV EAX,ESI
006E3554 |. E8 FF000000 CALL Depot.006E3658 ; #1-1算法(进去)
006E3559 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; 注册码(真码)放到EDX里
006E355C |. 58 POP EAX ; 注册码(假码)出栈
006E355D |. E8 7619D2FF CALL Depot.00404ED8 ; 这个CALL就很好理解了,比较
006E3562 |. 75 50 JNZ SHORT Depot.006E35B4 ; 关键跳
006E3564 |. B3 01 MOV BL,1
#1-1
006E3658 /$ 55 PUSH EBP
006E3659 |. 8BEC MOV EBP,ESP
006E365B |. 51 PUSH ECX
006E365C |. B9 04000000 MOV ECX,4
006E3661 |> 6A 00 /PUSH 0
006E3663 |. 6A 00 |PUSH 0
006E3665 |. 49 |DEC ECX
006E3666 |.^ 75 F9 \JNZ SHORT Depot.006E3661
006E3668 |. 51 PUSH ECX
006E3669 |. 874D FC XCHG DWORD PTR SS:[EBP-4],ECX
006E366C |. 53 PUSH EBX
006E366D |. 56 PUSH ESI
006E366E |. 57 PUSH EDI
006E366F |. 8BF9 MOV EDI,ECX
006E3671 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
006E3674 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 机器码送给EAX
006E3677 |. E8 0019D2FF CALL Depot.00404F7C
006E367C |. 33C0 XOR EAX,EAX
006E367E |. 55 PUSH EBP
006E367F |. 68 19386E00 PUSH Depot.006E3819
006E3684 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006E3687 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006E368A |. 8BC7 MOV EAX,EDI
006E368C |. E8 2B14D2FF CALL Depot.00404ABC
006E3691 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006E3694 |. E8 F316D2FF CALL Depot.00404D8C ; 取机器码位数
006E3699 |. 8BF0 MOV ESI,EAX ; 机器码位数放到ESI里
006E369B |. 85F6 TEST ESI,ESI
006E369D |. 7E 26 JLE SHORT Depot.006E36C5
006E369F |. BB 01000000 MOV EBX,1 ; 1放到EBX里
006E36A4 |> 8D4D EC /LEA ECX,DWORD PTR SS:[EBP-14]
006E36A7 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] ; 机器码放到EAX里
006E36AA |. 0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] ; 机器码各位ASCII码放到EAX里
006E36AF |. 33D2 |XOR EDX,EDX ; EDX清零
006E36B1 |. E8 AA6AD2FF |CALL Depot.0040A160
006E36B6 |. 8B55 EC |MOV EDX,DWORD PTR SS:[EBP-14] ; 机器码各位ASCII码放到EDX里
006E36B9 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
006E36BC |. E8 D316D2FF |CALL Depot.00404D94
006E36C1 |. 43 |INC EBX
006E36C2 |. 4E |DEC ESI
006E36C3 |.^ 75 DF \JNZ SHORT Depot.006E36A4 ; a1=机器码转成ASCII码
006E36C5 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; a1放到EAX
006E36C8 |. E8 BF16D2FF CALL Depot.00404D8C ; 取a1位数
006E36CD |. 8BF0 MOV ESI,EAX ; a1位数放到ESI里
006E36CF |. 85F6 TEST ESI,ESI
006E36D1 |. 7E 2C JLE SHORT Depot.006E36FF
006E36D3 |. BB 01000000 MOV EBX,1 ; 1放到EBX里
006E36D8 |> 8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8] ; a1放到EAX里
006E36DB |. E8 AC16D2FF |CALL Depot.00404D8C ; 取a1位数
006E36E0 |. 2BC3 |SUB EAX,EBX ; a1位数-1
006E36E2 |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8] ; a1放到EDX里
006E36E5 |. 8A1402 |MOV DL,BYTE PTR DS:[EDX+EAX] ; a1倒序放到DL里
006E36E8 |. 8D45 E8 |LEA EAX,DWORD PTR SS:[EBP-18]
006E36EB |. E8 B415D2FF |CALL Depot.00404CA4
006E36F0 |. 8B55 E8 |MOV EDX,DWORD PTR SS:[EBP-18] ; 机器码放到EDX里
006E36F3 |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
006E36F6 |. E8 9916D2FF |CALL Depot.00404D94
006E36FB |. 43 |INC EBX
006E36FC |. 4E |DEC ESI
006E36FD |.^ 75 D9 \JNZ SHORT Depot.006E36D8 ; a2=a1倒序
006E36FF |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
006E3702 |. 50 PUSH EAX
006E3703 |. B9 04000000 MOV ECX,4
006E3708 |. BA 01000000 MOV EDX,1
006E370D |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; a2放到EAX里
006E3710 |. E8 D718D2FF CALL Depot.00404FEC
006E3715 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
006E3718 |. 50 PUSH EAX
006E3719 |. B9 04000000 MOV ECX,4 ; 4放到ECX里
006E371E |. BA 05000000 MOV EDX,5 ; 5放到EDX里
006E3723 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; a2放到EAX里
006E3726 |. E8 C118D2FF CALL Depot.00404FEC ; 可以进去看看,从a2的第5位开始取4位,结果设为n2
006E372B |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; n1=取a2前4位放到EAX里
006E372E |. E8 5916D2FF CALL Depot.00404D8C ; 取n1长度
006E3733 |. 83F8 04 CMP EAX,4 ; 与4比较
006E3736 |. 7D 2F JGE SHORT Depot.006E3767 ; 大于等于则跳
006E3738 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
006E373B |. E8 4C16D2FF CALL Depot.00404D8C
006E3740 |. 8BD8 MOV EBX,EAX
006E3742 |. 83FB 03 CMP EBX,3
006E3745 |. 7F 20 JG SHORT Depot.006E3767
006E3747 |> 8D4D E4 /LEA ECX,DWORD PTR SS:[EBP-1C]
006E374A |. 8BC3 |MOV EAX,EBX
006E374C |. C1E0 02 |SHL EAX,2
006E374F |. 33D2 |XOR EDX,EDX
006E3751 |. E8 0A6AD2FF |CALL Depot.0040A160
006E3756 |. 8B55 E4 |MOV EDX,DWORD PTR SS:[EBP-1C]
006E3759 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
006E375C |. E8 3316D2FF |CALL Depot.00404D94
006E3761 |. 43 |INC EBX
006E3762 |. 83FB 04 |CMP EBX,4
006E3765 |.^ 75 E0 \JNZ SHORT Depot.006E3747
006E3767 |> 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; n2放到EAX里
006E376A |. E8 1D16D2FF CALL Depot.00404D8C ; 取n2长度
006E376F |. 83F8 04 CMP EAX,4 ; 与4比较
006E3772 |. 7D 2F JGE SHORT Depot.006E37A3 ; 大于等于则跳
006E3774 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
006E3777 |. E8 1016D2FF CALL Depot.00404D8C
006E377C |. 8BD8 MOV EBX,EAX
006E377E |. 83FB 03 CMP EBX,3
006E3781 |. 7F 20 JG SHORT Depot.006E37A3
006E3783 |> 8D4D E0 /LEA ECX,DWORD PTR SS:[EBP-20]
006E3786 |. 8BC3 |MOV EAX,EBX
006E3788 |. C1E0 02 |SHL EAX,2
006E378B |. 33D2 |XOR EDX,EDX
006E378D |. E8 CE69D2FF |CALL Depot.0040A160
006E3792 |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]
006E3795 |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
006E3798 |. E8 F715D2FF |CALL Depot.00404D94
006E379D |. 43 |INC EBX
006E379E |. 83FB 04 |CMP EBX,4
006E37A1 |.^ 75 E0 \JNZ SHORT Depot.006E3783
006E37A3 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
006E37A6 |. BA 30386E00 MOV EDX,Depot.006E3830 ; DEPw245d54k放到EDX里
006E37AB |. E8 A413D2FF CALL Depot.00404B54
006E37B0 |. 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
006E37B3 |. 50 PUSH EAX
006E37B4 |. B9 04000000 MOV ECX,4 ; 4放到ECX里
006E37B9 |. BA 01000000 MOV EDX,1 ; 1放到EDX里
006E37BE |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; a3=DEPw245d54k
006E37C1 |. E8 2618D2FF CALL Depot.00404FEC ; 可以进去看看,从a3的第1位开始取4位数,结果设为n3
006E37C6 |. FF75 DC PUSH DWORD PTR SS:[EBP-24] ; n3=a3前4位
006E37C9 |. 68 44386E00 PUSH Depot.006E3844 ; -
006E37CE |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; n1
006E37D1 |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
006E37D4 |. 50 PUSH EAX
006E37D5 |. B9 05000000 MOV ECX,5 ; 5放到ECX里
006E37DA |. BA 05000000 MOV EDX,5 ; 5放到EDX里
006E37DF |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; DEPw245d54k放到EAX里
006E37E2 |. E8 0518D2FF CALL Depot.00404FEC ; 可以进去看看,从a3的第5位开始取5位数,结果设为n4
006E37E7 |. FF75 D8 PUSH DWORD PTR SS:[EBP-28]
006E37EA |. 68 44386E00 PUSH Depot.006E3844 ; -
006E37EF |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
006E37F2 |. 8BC7 MOV EAX,EDI
006E37F4 |. BA 06000000 MOV EDX,6
006E37F9 |. E8 4E16D2FF CALL Depot.00404E4C ; #1-1-1合并(进去)
006E37FE |. 33C0 XOR EAX,EAX
006E3800 |. 5A POP EDX
006E3801 |. 59 POP ECX
006E3802 |. 59 POP ECX
006E3803 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
006E3806 |. 68 20386E00 PUSH Depot.006E3820
006E380B |> 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
006E380E |. BA 0A000000 MOV EDX,0A
006E3813 |. E8 C812D2FF CALL Depot.00404AE0
006E3818 \. C3 RETN
006E3819 .^ E9 1E0BD2FF JMP Depot.0040433C
006E381E .^ EB EB JMP SHORT Depot.006E380B
006E3820 . 5F POP EDI
006E3821 . 5E POP ESI
006E3822 . 5B POP EBX
006E3823 . 8BE5 MOV ESP,EBP
006E3825 . 5D POP EBP
006E3826 . C3 RETN
#1-1-1
00404E4C $ 53 PUSH EBX
00404E4D . 56 PUSH ESI
00404E4E . 57 PUSH EDI
00404E4F . 52 PUSH EDX
00404E50 . 50 PUSH EAX
00404E51 . 89D3 MOV EBX,EDX
00404E53 . 31FF XOR EDI,EDI
00404E55 . 8B4C94 14 MOV ECX,DWORD PTR SS:[ESP+EDX*4+14] ; n3放到ECX里
00404E59 . 85C9 TEST ECX,ECX
00404E5B . 74 0C JE SHORT Depot.00404E69
00404E5D . 3908 CMP DWORD PTR DS:[EAX],ECX
00404E5F . 75 08 JNZ SHORT Depot.00404E69
00404E61 . 89CF MOV EDI,ECX
00404E63 . 8B41 FC MOV EAX,DWORD PTR DS:[ECX-4]
00404E66 . 4A DEC EDX
00404E67 . EB 02 JMP SHORT Depot.00404E6B
00404E69 > 31C0 XOR EAX,EAX ; EAX清零
00404E6B > 8B4C94 14 MOV ECX,DWORD PTR SS:[ESP+EDX*4+14] ; n3,n1,n4,n2
00404E6F . 85C9 TEST ECX,ECX
00404E71 . 74 09 JE SHORT Depot.00404E7C
00404E73 . 0341 FC ADD EAX,DWORD PTR DS:[ECX-4] ; EAX+n3,n1,n4,n2的位数
00404E76 . 39CF CMP EDI,ECX
00404E78 . 75 02 JNZ SHORT Depot.00404E7C
00404E7A . 31FF XOR EDI,EDI
00404E7C > 4A DEC EDX
00404E7D .^ 75 EC JNZ SHORT Depot.00404E6B ; 这个循环说明取n3,n1,n4,n2的位数放到EAX里,设位数为b2
00404E7F . 85FF TEST EDI,EDI
00404E81 . 74 17 JE SHORT Depot.00404E9A
00404E83 . 89C2 MOV EDX,EAX
00404E85 . 8B0424 MOV EAX,DWORD PTR SS:[ESP]
00404E88 . 8B77 FC MOV ESI,DWORD PTR DS:[EDI-4]
00404E8B . E8 88020000 CALL Depot.00405118
00404E90 . 8B3C24 MOV EDI,DWORD PTR SS:[ESP]
00404E93 . FF37 PUSH DWORD PTR DS:[EDI]
00404E95 . 0337 ADD ESI,DWORD PTR DS:[EDI]
00404E97 . 4B DEC EBX
00404E98 . EB 08 JMP SHORT Depot.00404EA2
00404E9A > E8 E1FCFFFF CALL Depot.00404B80 ; 这里就不进去了,这里说下就行了(b2+0A) AND FFFFFFFE,设结果为b3
00404E9F . 50 PUSH EAX ; 上面CALL就是取a1(b3位)
00404EA0 . 89C6 MOV ESI,EAX
00404EA2 > 8B449C 18 MOV EAX,DWORD PTR SS:[ESP+EBX*4+18] ; n3,n1,n4,n2放到EAX里
00404EA6 . 89F2 MOV EDX,ESI ; b3放到EDX里
00404EA8 . 85C0 TEST EAX,EAX
00404EAA . 74 0A JE SHORT Depot.00404EB6
00404EAC . 8B48 FC MOV ECX,DWORD PTR DS:[EAX-4] ; n3,n1,n4,n2位数放到ECX里
00404EAF . 01CE ADD ESI,ECX
00404EB1 . E8 EADCFFFF CALL Depot.00402BA0 ; 这个CALL就替换文本
00404EB6 > 4B DEC EBX
00404EB7 .^ 75 E9 JNZ SHORT Depot.00404EA2 ; 循环,就是合并
00404EB9 . 5A POP EDX
00404EBA . 58 POP EAX
00404EBB . 85FF TEST EDI,EDI
00404EBD . 75 0C JNZ SHORT Depot.00404ECB
00404EBF . 85D2 TEST EDX,EDX
00404EC1 . 74 03 JE SHORT Depot.00404EC6
00404EC3 . FF4A F8 DEC DWORD PTR DS:[EDX-8]
00404EC6 > E8 45FCFFFF CALL Depot.00404B10
00404ECB > 5A POP EDX
00404ECC . 5F POP EDI
00404ECD . 5E POP ESI
00404ECE . 5B POP EBX
00404ECF . 58 POP EAX
00404ED0 . 8D2494 LEA ESP,DWORD PTR SS:[ESP+EDX*4]
00404ED3 . FFE0 JMP EAX
--------------------------------------------------------------------------------
【经验总结】
算法:
文本: DEPw245d54k
a1=机器码ASCII码倒序
n1=a1前4位
n2=a1第5位开始到4位
n3=文本前4位
n4=文本第5位开始取5位
合并:n3-n1n4-n2
注册机:
里诺仓库管理软件(单机版)3.70 注册机.rar
(514.55 KB, 下载次数: 158)
--------------------------------------------------------------------------------
【版权声明】: 怎么会有版权,没版权,但禁止用偶的用户名
2009-3-13
-------------------------------------------------------------------------------- |
|