首页
社区
课程
招聘
[原创]第一阶段第二题:找规律玩填字游戏
发表于: 2008-10-7 12:24 7648

[原创]第一阶段第二题:找规律玩填字游戏

2008-10-7 12:24
7648

bp GetWindowTextA下断,运行后随便输入name和key点击“确定”,中断下来后ALT+F9返回到用户领空:
00403C22   call      <jmp.&MFC42.#3874_CWnd::GetWindowTextA>
00403C27   mov    ecx, dword ptr [ebp-4]
向下不远处:
00403C84   mov     edx, dword ptr [ebp-8]
00403C87   push      edx
00403C88    mov       eax, dword ptr [ebp-C]
00403C8B   push      eax
00403C8C   call      00401113
跟进就是处理name和key的。
由代码:
00403335    cmp     eax, 0C      ;  用户名长度必须是12
00403338    je      short 0040334E
知道用户名长度必须是12;从后面的分析还知道name串中不能有重复的字符。
向下跟到:
00403598    cmp     eax, 35      ;  key长度要大于35H
0040359B   jnb       short 004035B1
知道key长度要大于等于53,从后面的分析还知道key串中字符只可能取‘0’,‘1’,‘2’,‘3’中的一个。向下跟到:
00403615     push      ecx
00403616     lea       edx, dword ptr [ebp-100]
0040361C    push      edx
0040361D     lea       eax, dword ptr [ebp-2B0]
00403623    push      eax          ;  key每个字符减30H后按DWORD存放
00403624     call     00401087
……
00401087     jmp       004022A0
……
便到了主要部分了,sub_004022A0函数是用来验证key的,其复杂程度相当大!!!好多人在此放弃了,sub_004022A0函数共有三个参数,第一个dwKey是输入的key串逐个字符转换成整型后存储的内存地址;第二个参数buffer是存储生成的字符串的缓冲区,大小为24字节;第三个参数a3为:{0,1,2,3,4,5,6,7,8,9,0x0A,0x0B};现将整理后的C代码贴出来分析:

by  sing
2008-10-7

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 186
活跃值: (15)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
发帖的排版不和word一致,真乱!!!!发一次帖子真难!
2008-10-7 12:31
0
雪    币: 220
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主真利害,注册码那部分,我只跟了一半,放弃了,变量太多,感觉自己跟不来了,呵呵
2008-10-7 13:15
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
同3楼。。
感觉自己缺少经验和毅力。
还有是对搜索引擊的运用
2008-10-7 14:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
写的挺详细!!我只发了两个注册码,没有给说明呀。。。。。
2008-10-7 14:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
bp GetWindowTextA下断,这个OD载入,CTRL+N。中好像没有 GetWindowTextA这个函数呀|???请问下为什么???
2008-10-11 18:43
0
游客
登录 | 注册 方可回帖
返回
//