中华灯谜 破文
Blackk第十轮第一课作业中级作业··
如果错误,希望各位大大指出~~谢谢·
0054EF19|.E8 6A8CEFFF call 00447B88 ;取订单号位数
0054EF1E|.8B85 64FFFFFF mov eax, dword ptr ;订单号入EAX
0054EF24|.E8 DBA6EBFF call 00409604 ;订单号转为十六进制
0054EF29|.B9 3A000000 mov ecx, 3A ;ECX=3A
0054EF2E|.99 cdq
0054EF2F|.F7F9 idiv ecx
0054EF31|.8BC2 mov eax, edx ;订单号/3A 余数送EAX 设为(Y)
0054EF33|.8D95 68FFFFFF lea edx, dword ptr
…………
省略一些代码
0054EF51|.E8 328CEFFF call 00447B88
0054EF56|.8B85 58FFFFFF mov eax, dword ptr ;订单号入EAX
0054EF5C|.E8 A3A6EBFF call 00409604 ;订单号转16进制
0054EF61|.8D95 5CFFFFFF lea edx, dword ptr
0054EF67|.E8 80DCFFFF call 0054CBEC 关键CALL1
0054EF6C|.8B85 5CFFFFFF mov eax, dword ptr
0054EF72|.E8 8DA6EBFF call 00409604
0054EF77|.8D95 60FFFFFF lea edx, dword ptr
0054EF7D|.E8 4ADDFFFF call 0054CCCC 关键CALL2
0054EF82|.8B95 60FFFFFF mov edx, dword ptr
0054EF88|.58 pop eax
0054EF89|.E8 E25CEBFF call 00404C70 ;把Y和P拼凑 即为注册码
0054EF8E|.8B95 68FFFFFF mov edx, dword ptr
进入关键CALL1
0054CC09|.81F3 F1250B00 xor ebx, 0B25F1 ;订单号十六进制和B25F1异或
0054CC0F|.8BC3 mov eax, ebx
0054CC11|.33D2 xor edx, edx
0054CC13|.52 push edx
0054CC14|.50 push eax
0054CC15|.8D45 FC lea eax, dword ptr
0054CC18|.E8 B3C9EBFF call 004095D0 ;异或结果转十进制(设为K)
0054CC1D|.8B45 FC mov eax, dword ptr
0054CC20|.0FB600 movzx eax, byte ptr
0054CC23|.8B55 FC mov edx, dword ptr
0054CC26|.0FB652 01 movzx edx, byte ptr
0054CC2A|.03C2 add eax, edx ;K的+=A
0054CC2C|.B9 05000000 mov ecx, 5
0054CC31|.99 cdq
0054CC32|.F7F9 idiv ecx
0054CC34|.80C2 34 add dl, 34 ;A/5的余数加上34
0054CC37|.8855 F8 mov byte ptr , dl ;保存
0054CC3A|.8B45 FC mov eax, dword ptr
0054CC3D|.0FB640 02 movzx eax, byte ptr
0054CC41|.8B55 FC mov edx, dword ptr
0054CC44|.0FB652 03 movzx edx, byte ptr
0054CC48|.03C2 add eax, edx ;K的+=B
0054CC4A|.B9 05000000 mov ecx, 5
0054CC4F|.99 cdq
0054CC50|.F7F9 idiv ecx
0054CC52|.8BDA mov ebx, edx
0054CC54|.80C3 33 add bl, 33 ;B/5的余数加33
0054CC57|.885D F9 mov byte ptr , bl ;保存
0054CC5A|.8D45 F4 lea eax, dword ptr
…………
省略一些代码
0054CC85|.B9 19000000 mov ecx, 19
0054CC8A|.E8 B982EBFF call 00404F48 ;结果和K拼凑起来结果设为R
CALL2
0054CCEB|.81F3 8776FBDD xor ebx, DDFB7687 ;R和DDFB7687异或
0054CCF1|.8BC3 mov eax, ebx
0054CCF3|.33D2 xor edx, edx
0054CCF5|.52 push edx
0054CCF6|.50 push eax
0054CCF7|.8D45 FC lea eax, dword ptr
0054CCFA|.E8 D1C8EBFF call 004095D0 ;异或的结果转10进制(设为L)
0054CCFF|.8B45 FC mov eax, dword ptr
0054CD02|.0FB600 movzx eax, byte ptr
0054CD05|.8B55 FC mov edx, dword ptr
0054CD08|.0FB652 01 movzx edx, byte ptr
0054CD0C|.03C2 add eax, edx ;L的+=E
0054CD0E|.B9 05000000 mov ecx, 5
0054CD13|.99 cdq
0054CD14|.F7F9 idiv ecx
0054CD16|.80C2 66 add dl, 66 ;E/5的余数加66
0054CD19|.8855 F8 mov byte ptr , dl ;保存
0054CD1C|.8B45 FC mov eax, dword ptr
0054CD1F|.0FB640 02 movzx eax, byte ptr
0054CD23|.8B55 FC mov edx, dword ptr
0054CD26|.0FB652 03 movzx edx, byte ptr ;L的+=F
0054CD2A|.03C2 add eax, edx
0054CD2C|.B9 05000000 mov ecx, 5
0054CD31|.99 cdq
0054CD32|.F7F9 idiv ecx
0054CD34|.80C2 75 add dl, 75 ;F/5的余数加75
0054CD37|.8855 F9 mov byte ptr , dl ;保存
0054CD3A|.8B45 FC mov eax, dword ptr
0054CD3D|.0FB640 04 movzx eax, byte ptr
0054CD41|.8B55 FC mov edx, dword ptr
0054CD44|.0FB652 05 movzx edx, byte ptr ;L的+=G
0054CD48|.03C2 add eax, edx
0054CD4A|.B9 05000000 mov ecx, 5
0054CD4F|.99 cdq
0054CD50|.F7F9 idiv ecx
0054CD52|.80C2 7A add dl, 7A ;G/5的余数加上7A
0054CD55|.8855 FA mov byte ptr , dl ;保存
0054CD58|.8B45 FC mov eax, dword ptr
0054CD5B|.0FB640 06 movzx eax, byte ptr
0054CD5F|.8B55 FC mov edx, dword ptr
0054CD62|.0FB652 07 movzx edx, byte ptr
0054CD66|.03C2 add eax, edx
0054CD68|.8B55 FC mov edx, dword ptr
0054CD6B|.0FB652 08 movzx edx, byte ptr ;L的++=H
0054CD6F|.03C2 add eax, edx
0054CD71|.B9 05000000 mov ecx, 5
0054CD76|.99 cdq
0054CD77|.F7F9 idiv ecx
0054CD79|.80C2 69 add dl, 69 ;H/5的余数加上69
0054CD7C|.8855 FB mov byte ptr , dl ;保存
…………
省略一些代码
0054CDE1|.B9 09000000 mov ecx, 9
0054CDE6|.E8 5D81EBFF call 00404F48 ;和L一起拼凑结果 设为P
算法总结:
订单号的16进制 / 3A取余数设为Y 假设是123123 Y=1E0F3 Mod 3A=2F(16)=47(10)
订单号的16进制 XorB25F1(定值)转换 10进制 设为k k=1E0F3 Xor B25F1=AC502=705794(10)
(k的第一位和第二位的ASCII码值 Mod5)+34 我这里为 7保存
(k的第三位和第四位的ASCII码值 Mod5)+33 我这里为 6保存
依次拼凑到K的后面 设为RR=70579476
R 的16进制和定值 DDFB7687异或结果转为10进制设为L L=3654255507(10)
(L 十进制的第1位和第2位的ASCII码值相加 MOD5 )+66 结果换成字符,保存我这里为f
(L 十进制的第3位和第4位的ASCII码值相加后 MOD5 )+75 结果换成字符,保存我这里为u
(L 十进制的第5位和第6位的ASCII码值相加后 MOD5 )+7A 结果换成字符,保存我这里为}
(L 十进制的第7位和第8位第9位的ASCII值相加后 MOD5 ) +上69 结果换成字符,保存我这里为m
结果最后拼凑为
36m5u425}f5507=p
p 和 Y 拼凑 即为最后的注册码 = 4736m5u425}f5507
所以注册信息为:
订单号:123123
注册码:4736m5u425}f5507 楼主啊,
交作业是不是应该到软件调试的那个区啊,不是疑难交流的专区啊,我看人家都是在上一级的软件调试区交的作业。万一老师没看到楼主的作业,楼主就白写了。
是不是。 回复 2# whdl
谢谢提醒··不过这个是在好几天发的了··
我早已在软件调试区发了作业。。只是这个帖子没删除··
因为有杀大的加威望啊··呵呵·/:017 交了就好!!!
我也是瞎操心。呵呵!
祝楼主开心。再见! 看不明白,感觉很深. 不错啊,楼主很用心 很复杂的样子 回复 6# cz245
呵呵,在努力学习··
尽量自己分析得细一点 回复 7# 傻瓜
慢慢看就可以看懂了,这样的算法并不复杂··
可能 是我写的太复杂了·/:017 谢谢分享~ 算法分析好累的感觉
页:
[1]
2