【文章标题】: Zapline第十天算法分析
【文章作者】: samisgod
【作者邮箱】: 21gh@163.com
【下载地址】: http://bbs.52pojie.cn/thread-18642-1-1.html
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
关键点查找很简单,这里只简单贴下算法00401127 > /0FBE8E FE204000 movsx ecx,byte ptr ds:[esi+4020FE]
0040112E . |83F9 4D cmp ecx,4D
00401131 . |74 2F je short 00401162
00401133 . |890D 5E214000 mov dword ptr ds:[40215E],ecx 存入[40215E]
00401139 . |51 push ecx
0040113A . |FF75 08 push dword ptr ss:[ebp+8]
0040113D . |E8 D0010000 call 00401312
00401142 . |46 inc esi
00401143 . |83F8 00 cmp eax,0
00401146 ^ 74 DF je short 00401127
00401148 |A1 5E214000 mov eax,dword ptr ds:[40215E]
0040114D |0FBE8E FE204000 movsx ecx,byte ptr ds:[esi+4020FE]
00401154 |0FAFC1 imul eax,ecx
00401157 . |0FAFC6 imul eax,esi
0040115A . |0105 62214000 add dword ptr ds:[402162],eax
00401160 .^\EB C5 jmp short 00401127
00401162 > A1 62214000 mov eax,dword ptr ds:[402162]
00401167 . 6BC0 4D imul eax,eax,4D
0040116A . 3D 6654F300 cmp eax,0F35466
0040116F . 75 20 jnz short 00401191
00401171 . 68 00200000 push 2000
00401176 . 68 01204000 push 402001
0040117B . 68 17204000 push 402017
00401180 . 6A 00 push 0
00401182 . E8 55010000 call 004012DC
00401187 . B8 01000000 mov eax,1
0040118C .^ E9 69FFFFFF jmp 004010FA
00401191 > 68 00200000 push 2000
00401196 . 68 01204000 push 402001
0040119B . 68 68204000 push 402068
004011A0 . 6A 00 push 0
004011A2 . E8 35010000 call 004012DC
004011A7 . B8 00000000 mov eax,0
4020FE的表值如下
004020FE 16 49 5E 15 27 26 21 25 I^'&!%
00402106 1D 59 53 37 31 48 5D 0C YS71H].
0040210E 61 52 4D 00 00 00 00 00 aRM.....
整理一下得到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
16 49 5E 15 27 26 21 25 1D 59 53 37 31 48 5D 0C 61 52 4D
这里我们猥琐一下,把401146处的je给NOP掉,然后在40115A处下断(用完后记得恢复)
让程序帮我们计算出每次的值,之后得到下表
1.646
2.359C
3.1722
4.CCC
5.1CF2
6.1D64
7.2163
8.2188
9.5ABD
10.1208E
11.C427
12.7E54
13.B328
14.16E30
15.4164
16.48C0
17.21032
18.1BBF4
于是问题变成从这里面取出不定项的值相加等于0x328FE的问题..
我没写程序,直接将前面较小的几项相加,然后根据与后面值相加拼凑结果进行增减....
于是算了N长时间...
最后得出结果为
0x328FE=0x359C+0x1722+0xCCC+0x1CF2+0x1D64+0x2163+0xC427+0x16E30+0x4164
分别为2 3 4 5 6 7 11 14 15项
下面要计算到底要按哪个按钮
上面计算出了分别为2 3 4 5 6 7 11 14 15项
整理下可得对应按钮ID如下表所示
49 5E 15 27 26 21 53 48 5D
这时候可以随便掏出个工具查看下CM的每个框的ID了
我用了个Spy4Win
得到对应ID如下
61 49 5E 16 25 26 21 59 53
15 37 31 48 5D 0C 52 27 1D
最后即可计算出要打勾的框为
#1-2 #1-3 #2-1 #2-8 #1-6 #1-7 #1-9 #2-4 #2-5
注册成功
[ 本帖最后由 samisgod 于 2009-2-6 16:28 编辑 ] |