好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 shenaset 于 2009-3-14 10:52 编辑
【文章标题】: MAKE in H&Y算法分析
【文章作者】: .........
【作者邮箱】: .........
【作者主页】: .........
【作者QQ号】: .........
【软件名称】: MAKE in H&Y
【下载地址】: http://bbs.52pojie.cn/thread-20354-1-1.html
【作者声明】: 有些地方可能分析的不是很好,请大虾指点
--------------------------------------------------------------------------------
【详细过程】
004016C0 /. 55 PUSH EBP
004016C1 |. 8BEC MOV EBP,ESP
004016C3 |. 83E4 F8 AND ESP,FFFFFFF8
004016C6 |. 83EC 20 SUB ESP,20
004016C9 |. 53 PUSH EBX
004016CA |. 55 PUSH EBP
004016CB |. 56 PUSH ESI
004016CC |. 57 PUSH EDI
004016CD |. 6A 01 PUSH 1
004016CF |. 8BF9 MOV EDI,ECX
004016D1 |. E8 98700000 CALL cm2.0040876E
004016D6 |. 8DAF 20010000 LEA EBP,DWORD PTR DS:[EDI+120]
004016DC |. 8BF5 MOV ESI,EBP
004016DE |. E8 1D020000 CALL cm2.00401900
004016E3 |. 84C0 TEST AL,AL
004016E5 |. 0F85 4E010000 JNZ cm2.00401839 ; 第一处不能为空
004016EB |. 8DB7 CC010000 LEA ESI,DWORD PTR DS:[EDI+1CC]
004016F1 |. E8 0A020000 CALL cm2.00401900
004016F6 |. 84C0 TEST AL,AL
004016F8 |. 0F85 3B010000 JNZ cm2.00401839 ; 第二处不能为空
004016FE |. 8D9F 24020000 LEA EBX,DWORD PTR DS:[EDI+224]
00401704 |. 8BF3 MOV ESI,EBX
00401706 |. E8 F5010000 CALL cm2.00401900
0040170B |. 84C0 TEST AL,AL
0040170D |. 0F85 26010000 JNZ cm2.00401839 ; 第三处不能为空
00401713 |. 8DB7 7C020000 LEA ESI,DWORD PTR DS:[EDI+27C]
00401719 |. E8 E2010000 CALL cm2.00401900
0040171E |. 84C0 TEST AL,AL
00401720 |. 0F85 13010000 JNZ cm2.00401839 ; 第四处不能为空
00401726 |. 8B1B MOV EBX,DWORD PTR DS:[EBX] ; 第三个框数值放到EBX里
00401728 |. 53 PUSH EBX ; /Arg1
00401729 |. E8 76D60100 CALL cm2.0041EDA4 ; \eax=1EA0
0040172E |. DD5424 2C FST QWORD PTR SS:[ESP+2C] ; 保存第三个框
00401732 |. DD05 B8A24300 FLD QWORD PTR DS:[43A2B8] ; 装入430
00401738 |. 83C4 04 ADD ESP,4
0040173B |. D8D9 FCOMP ST(1) ; 430与第三个框数值比较
0040173D |. DFE0 FSTSW AX ; 把FST放入AX
0040173F |. F6C4 05 TEST AH,5
00401742 |. 0F8A E0000000 JPE cm2.00401828
00401748 |. DD05 B0A24300 FLD QWORD PTR DS:[43A2B0] ; 装入612
0040174E |. D8D9 FCOMP ST(1) ; 612与第三个框数值比较
00401750 |. DFE0 FSTSW AX ; 把FST放入AX
00401752 |. F6C4 41 TEST AH,41
00401755 |. 0F85 CD000000 JNZ cm2.00401828 ; 430<第三个框数值<612
0040175B |. D9E8 FLD1
0040175D |. B8 02000000 MOV EAX,2
00401762 |. DD5424 20 FST QWORD PTR SS:[ESP+20] ; 保存1
00401766 |> A8 01 /TEST AL,1
00401768 |. 74 02 |JE SHORT cm2.0040176C
0040176A |. D8C9 |FMUL ST,ST(1)
0040176C |> D1E8 |SHR EAX,1
0040176E |. 74 06 |JE SHORT cm2.00401776
00401770 |. D9C1 |FLD ST(1) ; 装入第三个框数值
00401772 |. DECA |FMULP ST(2),ST ; 第3个框数值*第3个框数值
00401774 |.^ EB F0 \JMP SHORT cm2.00401766
00401776 |> 8B45 00 MOV EAX,DWORD PTR SS:[EBP] ; 第一个框放到EAX里
00401779 |. DDD9 FSTP ST(1) ; 装入第3个框数值*第3个框数值
0040177B |. 50 PUSH EAX ; /Arg1
0040177C |. DD5C24 24 FSTP QWORD PTR SS:[ESP+24] ; |
00401780 |. E8 48D60100 CALL cm2.0041EDCD ; \第一个框转成十六进制
00401785 |. 8BD8 MOV EBX,EAX ; 第一个框放到EBX里
00401787 |. 8D83 6BFDFFFF LEA EAX,DWORD PTR DS:[EBX-295] ; FA放到EAX里
0040178D |. 83C4 04 ADD ESP,4
00401790 |. 895C24 1C MOV DWORD PTR SS:[ESP+1C],EBX
00401794 |. 3D FA000000 CMP EAX,0FA ; 第一个框的数值转成十六进制与0FA比较
00401799 |. 0F87 8B000000 JA cm2.0040182A ; 第一个框数值(H)-295<0FA
0040179F |. 8B06 MOV EAX,DWORD PTR DS:[ESI] ; 第4个框放到EAX
004017A1 |. 50 PUSH EAX ; /Arg1
004017A2 |. E8 26D60100 CALL cm2.0041EDCD ; \第4个框转成十六进制
004017A7 |. 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
004017AB |. 05 F8FDFFFF ADD EAX,-208 ; 第4个框-208
004017B0 |. 83C4 04 ADD ESP,4
004017B3 |. 3D C8000000 CMP EAX,0C8 ; 与C8比较
004017B8 |. 0F87 AF000000 JA cm2.0040186D ; 第四个框数值(H)-208<0C8
004017BE |. 8B87 CC010000 MOV EAX,DWORD PTR DS:[EDI+1CC] ; 第二个框数值放到EAX
004017C4 |. 50 PUSH EAX ; /Arg1
004017C5 |. E8 DAD50100 CALL cm2.0041EDA4 ; \cm2.0041EDA4
004017CA |. DD05 A8A24300 FLD QWORD PTR DS:[43A2A8] ; 装入480
004017D0 |. D8D9 FCOMP ST(1) ; 480与第二个框数值比较
004017D2 |. 83C4 04 ADD ESP,4
004017D5 |. DFE0 FSTSW AX
004017D7 |. F6C4 41 TEST AH,41
004017DA |. 0F84 8B000000 JE cm2.0040186B
004017E0 |. DD05 A0A24300 FLD QWORD PTR DS:[43A2A0] ; 装入690
004017E6 |. D8D9 FCOMP ST(1) ; 690与第二个框数值比较
004017E8 |. DFE0 FSTSW AX ; FST放入AX
004017EA |. F6C4 05 TEST AH,5
004017ED |. 7B 7C JPO SHORT cm2.0040186B ; 480<第二个框数值(D)<690
004017EF |. 8BCB MOV ECX,EBX ; 第一个框数值转成十六进制放到ECX里
004017F1 |. 0FAFCB IMUL ECX,EBX ; g=第一个框数值*第一个框数值
004017F4 |. 894C24 14 MOV DWORD PTR SS:[ESP+14],ECX ;
004017F8 |. DB4424 14 FILD DWORD PTR SS:[ESP+14] ; g转成十进制
004017FC |. DC6424 20 FSUB QWORD PTR SS:[ESP+20] ; d=g-第3个框数值*第3个框数值
00401800 |. DB4424 18 FILD DWORD PTR SS:[ESP+18] ; 第4个框装入
00401804 |. DEC2 FADDP ST(2),ST ; a=第二个框+第4个框
00401806 |. DB4424 1C FILD DWORD PTR SS:[ESP+1C] ; 第一个框装入
0040180A |. DC6424 28 FSUB QWORD PTR SS:[ESP+28] ; b=第一个框-第三个框
0040180E |. DECA FMULP ST(2),ST ; c=a*b
00401810 |. DAE9 FUCOMPP ; c与d比较
00401812 |. DFE0 FSTSW AX ; 把FST放到AX
00401814 |. F6C4 44 TEST AH,44
00401817 |. 7A 54 JPE SHORT cm2.0040186D
00401819 |. 8BCF MOV ECX,EDI
0040181B |. E8 60000000 CALL cm2.00401880
00401820 |. 5F POP EDI
00401821 |. 5E POP ESI
00401822 |. 5D POP EBP
00401823 |. 5B POP EBX
00401824 |. 8BE5 MOV ESP,EBP
00401826 |. 5D POP EBP
00401827 |. C3 RETN
00401828 |> DDD8 FSTP ST
0040182A |> 8BCF MOV ECX,EDI
0040182C |. E8 9F000000 CALL cm2.004018D0
00401831 |. 5F POP EDI
00401832 |. 5E POP ESI
00401833 |. 5D POP EBP
00401834 |. 5B POP EBX
00401835 |. 8BE5 MOV ESP,EBP
00401837 |. 5D POP EBP
00401838 |. C3 RETN
00401839 |> 6A 00 PUSH 0 ; /Arg1 = 00000000
0040183B |. 8D4F 78 LEA ECX,DWORD PTR DS:[EDI+78] ; |
0040183E |. E8 0BA70000 CALL cm2.0040BF4E ; \cm2.0040BF4E
00401843 |. 8DB7 CC000000 LEA ESI,DWORD PTR DS:[EDI+CC]
00401849 |. 6A 00 PUSH 0 ; /Arg1 = 00000000
0040184B |. 8BCE MOV ECX,ESI ; |
0040184D |. E8 FCA60000 CALL cm2.0040BF4E ; \cm2.0040BF4E
00401852 |. 6A 64 PUSH 64 ; /Timeout = 100. ms
00401854 |. FF15 A8424300 CALL DWORD PTR DS:[<&KERNEL32.Sleep>] ; \Sleep
0040185A |. 6A 05 PUSH 5 ; /Arg1 = 00000005
0040185C |. 8BCE MOV ECX,ESI ; |
0040185E |. E8 EBA60000 CALL cm2.0040BF4E ; \cm2.0040BF4E
00401863 |. 5F POP EDI
00401864 |. 5E POP ESI
00401865 |. 5D POP EBP
00401866 |. 5B POP EBX
00401867 |. 8BE5 MOV ESP,EBP
00401869 |. 5D POP EBP
0040186A |. C3 RETN
--------------------------------------------------------------------------------
【经验总结】
算法:
第一个框数值(H)-295<0FA '661-910之间的数都行
480<第二个框数值(D)<690
430<第三个框数值(D)<612
第四个框数值(H)-208<0C8 '521-719之间的数都行
最后一步:第一个框数值*第一个框数值-第三个框数值*第三个框数值=(第二个框数值+第四个框数值)*(第一个框数值-第三个框数值)
附注册码一个:900-650-431-681
--------------------------------------------------------------------------------
【版权声明】: 怎么会有版权呢,没版权,只要不用偶名字乱来就行了
2009-3-14 |
|