首页
社区
课程
招聘
[求助]新手请教高手一个问题
发表于: 2008-5-20 23:13 5131

[求助]新手请教高手一个问题

2008-5-20 23:13
5131
这个文件是看雪论坛早先的帖子.作为一个新手,试了试.没成功.现在把我的调试方法简单的写出来,请高手帮助纠正.
1.我先尝试输入了一些数字,测试了弹出对话框.
2.用Olldbg打开了.exe文件,用右键菜单search for---->all referenced text strings,找到刚才测试时的报错字段:"wrong key!".然后对"wrong key"字段使用右键的Follow in Disassamble定位到反汇编窗口中.
3.我定位的地址是:00401A97.我再向上看了一段代码,定位在00401A87的地方.因为根据代码,我觉得从地址:00401A87到地址:00401A91这段代码可能是比较判断,然后跳转.

之后,我想在地址:00401A87的地方打上断点,用F7单步跟踪.但是我打上断点后,运行到输入密码后弹出对话框,我再想用F7运行就不行了.

我的调试也终止了.请问高手我的问题出在什么地方?想请教高手指点一下正确的具体详细调试步骤.
谢谢!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
关键call在401c1c,f7跟进里面很清楚的
2008-5-21 00:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
回复楼上的高手。我有个疑问:
如何确定关键call?
谢谢
2008-5-21 10:23
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
楼主与二楼定位都正确,二楼的比楼主的外一层,
楼主的定位在二楼的call里面

这个程序在楼主断点的前一个循环有异常产生
如果key:123456789 ,可以到楼主的断点,如果key:001002003004 ,就异常退出.

没有仔细研究这个异常是作者故意设计的还是程序bug.但楼主的断点思想还是没有错误的
2008-5-21 13:21
0
雪    币: 10936
活跃值: (3293)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
5
可以参考下代码:http://bbs.pediy.com/showthread.php?t=63701&page=3
2008-5-21 17:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我还有一个问题就是,当我把断点加在00401A87的地方,然后F9运行程序,当我输入aaaaaaa的时候,程序弹出对话框,当我关闭对话框以后,我想再用F7单步调试时,发现按F7没有反应,这是为什么呢?
2008-5-21 18:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
00401844  |> /8B4D 0C       /mov     ecx, dword ptr [ebp+C]
00401847  |. |034D B8       |add     ecx, dword ptr [ebp-48]
0040184A  |. |0FBE11        |movsx   edx, byte ptr [ecx]
0040184D  |. |83EA 30       |sub     edx, 30
00401850  |. |85D2          |test    edx, edx
00401852  |. |7C 1C         |jl      short 00401870
00401854  |. |8B45 0C       |mov     eax, dword ptr [ebp+C]
00401857  |. |0345 B8       |add     eax, dword ptr [ebp-48]
0040185A  |. |0FBE08        |movsx   ecx, byte ptr [eax]
0040185D  |. |83E9 30       |sub     ecx, 30
00401860  |. |83F9 09       |cmp     ecx, 9                                //asc码(16进制的)-30与9比较
00401863  |. |7F 0B         |jg      short 00401870                    //大于则跳
00401865  |. |8B55 B8       |mov     edx, dword ptr [ebp-48]
00401868  |. |83C2 01       |add     edx, 1
0040186B  |. |8955 B8       |mov     dword ptr [ebp-48], edx
0040186E  |.^\EB D4         \jmp     short 00401844
00401870  |>  837D B8 07    cmp     dword ptr [ebp-48], 7   //循环次数与7比较
00401874  |.  7D 23         jge     short 00401899                  //大于等于7就没事
00401876  |.  6A 00         push    0
00401878  |.  6A 00         push    0
0040187A  |.  68 68354000   push    00403568                         ;  ASCII "wrong key!"
也就是说前7位的asc码要小于39
2008-5-21 22:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请教高手,我从什么地方能看出输入码与最后结果之间的比较呢?
2008-5-21 23:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还有,我觉得二楼的断点(401c1c)找的比较好(我找的是00401A87),易于测试.请问一般这种入口断点该如何确定呢?
2008-5-21 23:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我的第三个疑问就是:堆栈[ebp+C]  [ebp-48]的内容我在什么地方能够看到呢?
2008-5-21 23:43
0
游客
登录 | 注册 方可回帖
返回
//