首页
社区
课程
招聘
下面是我用Ollydbg1.10中文版调试一个需要光盘的考试系统时,出现的问题,[求助]
发表于: 2004-12-7 12:39 5918

下面是我用Ollydbg1.10中文版调试一个需要光盘的考试系统时,出现的问题,[求助]

2004-12-7 12:39
5918
下面是我用Ollydbg1.10中文版调试一个需要光盘的考试系统时,出现的问题,请大家看看这些怪事,很奇怪...

004027F4 H> $  68 70294000       push HYExam.00402970   ;程序的运行起点
004027F9       E8 F0FFFFFF       call <jmp.&MSVBVM60.#100>  ;这是调用什么?好像是调用VB的初始化信息,对吗?
.
.
.
77F3526B     8B1C24              mov ebx,dword ptr ss:[esp]  ;然后到了这里
77F3526E     51                  push ecx
77F3526F     53                  push ebx
77F35270     E8 BE380200         call ntdll.77F58B33     ;这个函数会弹出光盘,并提示一个模式对话框:请插入光盘(下面列有这个函数的代码)
77F35275     0AC0                or al,al                ;如果不放光盘的话,永远也到不了这里.我在这设了断点,一直到不了
77F35277     74 0C               je short ntdll.77F35285
77F35279     5B                  pop ebx
77F3527A     59                  pop ecx
77F3527B     6A 00               push 0
77F3527D     51                  push ecx                                    ; fghfg
77F3527E     E8 D0FFFFFF         call ntdll.ZwContinue     ;依我看,真正弹出光盘的代码在这里面
77F35283     EB 0B               jmp short ntdll.77F35290
77F35285     5B                  pop ebx
77F35286     59                  pop ecx
77F35287     6A 00               push 0
77F35289     51                  push ecx
77F3528A     53                  push ebx
77F3528B     E8 EA000000         call ntdll.ZwRaiseException
77F35290     83C4 EC             add esp,-14
77F35293     890424              mov dword ptr ss:[esp],eax
77F35296     C74424 04 01000000  mov dword ptr ss:[esp+4],1
77F3529E     895C24 08           mov dword ptr ss:[esp+8],ebx
77F352A2     C74424 10 00000000  mov dword ptr ss:[esp+10],0
77F352AA     54                  push esp
77F352AB     E8 08000000         call ntdll.RtlRaiseException
77F352B0     C2 0800             retn 8

ntdll.77F58B33 子函数的代码如下:
77F58B33     55                  push ebp
77F58B34     8BEC                mov ebp,esp
77F58B36     83EC 60             sub esp,60
77F58B39     56                  push esi
77F58B3A     FF75 0C             push dword ptr ss:[ebp+C]
77F58B3D     8B75 08             mov esi,dword ptr ss:[ebp+8]
77F58B40     56                  push esi
77F58B41     E8 ED000000         call ntdll.77F58C33
77F58B46     84C0                test al,al
77F58B48   ^ 0F85 23FFFFFF       jnz ntdll.77F58A71
77F58B4E     53                  push ebx
77F58B4F     57                  push edi
77F58B50     8D45 F8             lea eax,dword ptr ss:[ebp-8]
77F58B53     50                  push eax
77F58B54     8D45 FC             lea eax,dword ptr ss:[ebp-4]
77F58B57     50                  push eax
77F58B58     E8 9FFFFFFF         call ntdll.77F58AFC
77F58B5D     E8 BAFFFFFF         call ntdll.77F58B1C
77F58B62     8365 08 00          and dword ptr ss:[ebp+8],0
77F58B66     8BD8                mov ebx,eax
77F58B68     83FB FF             cmp ebx,-1
77F58B6B   ^ 74 BA               je short ntdll.77F58B27
77F58B6D     3B5D FC             cmp ebx,dword ptr ss:[ebp-4]
77F58B70   ^ 72 B1               jb short ntdll.77F58B23
77F58B72     8D43 08             lea eax,dword ptr ds:[ebx+8]
77F58B75     3B45 F8             cmp eax,dword ptr ss:[ebp-8]
77F58B78   ^ 77 A9               ja short ntdll.77F58B23
77F58B7A     F6C3 03             test bl,3
77F58B7D   ^ 75 A4               jnz short ntdll.77F58B23
77F58B7F     8B43 04             mov eax,dword ptr ds:[ebx+4]
77F58B82     3B45 FC             cmp eax,dword ptr ss:[ebp-4]
77F58B85     72 05               jb short ntdll.77F58B8C
77F58B87     3B45 F8             cmp eax,dword ptr ss:[ebp-8]
77F58B8A   ^ 72 97               jb short ntdll.77F58B23
77F58B8C     50                  push eax
77F58B8D     E8 BDFDFFFF         call ntdll.77F5894F
77F58B92     84C0                test al,al
77F58B94   ^ 74 8D               je short ntdll.77F58B23
77F58B96     F605 2E31FB77 80    test byte ptr ds:[77FB312E],80
77F58B9D   ^ 0F85 D5FEFFFF       jnz ntdll.77F58A78
77F58BA3     FF73 04             push dword ptr ds:[ebx+4]
77F58BA6     8D45 F0             lea eax,dword ptr ss:[ebp-10]
77F58BA9     50                  push eax
77F58BAA     FF75 0C             push dword ptr ss:[ebp+C]
77F58BAD     53                  push ebx
77F58BAE     56                  push esi
77F58BAF     E8 E8000000         call ntdll.77F58C9C          ;到这里弹出光盘,下面同样列有这个函数的代码,不过这里有个怪事,如果我按F8,则会弹出光盘,
77F58BB4     F605 2E31FB77 80    test byte ptr ds:[77FB312E],80  ;如果上面的函数用F7跟进去,则不弹出光盘,并在返回到这句时,上面那句代码变为:call ntdll.77F58F8C,上面明明是call ntdll.77F58C9C,为什么会变呢?
77F58BBB     8BF8                mov edi,eax
77F58BBD   ^ 0F85 CBFEFFFF       jnz ntdll.77F58A8E
77F58BC3     395D 08             cmp dword ptr ss:[ebp+8],ebx
77F58BC6   ^ 0F84 D0FEFFFF       je ntdll.77F58A9C
77F58BCC     8BC7                mov eax,edi
77F58BCE     33C9                xor ecx,ecx
77F58BD0     2BC1                sub eax,ecx
77F58BD2     75 13               jnz short ntdll.77F58BE7
77F58BD4     F646 04 01          test byte ptr ds:[esi+4],1
77F58BD8   ^ 0F85 CBFEFFFF       jnz ntdll.77F58AA9
77F58BDE     B0 01               mov al,1
77F58BE0     5F                  pop edi
77F58BE1     5B                  pop ebx
77F58BE2     5E                  pop esi
77F58BE3     C9                  leave
77F58BE4     C2 0800             retn 8

按F7跟进来的代码如下,ntdll.77F58C9C
77F58C9C     BA D08AF577         mov edx,ntdll.77F58AD0
77F58CA1     53                  push ebx
77F58CA2     56                  push esi
77F58CA3     57                  push edi
77F58CA4     33C0                xor eax,eax
77F58CA6     33DB                xor ebx,ebx
77F58CA8     33F6                xor esi,esi
77F58CAA     33FF                xor edi,edi
77F58CAC     FF7424 20           push dword ptr ss:[esp+20]
77F58CB0     FF7424 20           push dword ptr ss:[esp+20]
77F58CB4     FF7424 20           push dword ptr ss:[esp+20]
77F58CB8     FF7424 20           push dword ptr ss:[esp+20]
77F58CBC     FF7424 20           push dword ptr ss:[esp+20]
77F58CC0     E8 0B000000         call ntdll.77F58CD0
77F58CC5     5F                  pop edi
77F58CC6     5E                  pop esi
77F58CC7     5B                  pop ebx
77F58CC8     C2 1400             retn 14

大家能看出是什么原因吗?为什么在虚拟地址里的指令,会改变呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有兴趣的兄弟可以下载来试试:
一个练手的考试软件
2004-12-7 12:53
0
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人来一下吗?
2004-12-7 18:11
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
怎么跟进系统的dll中去了?还是在主程序中找信息。如查找“插入光盘”之类的信息,看看怎么跳过去。
2004-12-7 23:11
0
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
to:楼上的,
如果是用MessageBox出现的对话框,也能在字符串中找到提示文本吧,~~
再试试,

上面我传了那个软件,你可否下载试试,,我都搞了一周了,还没出结果,郁闷~~
2004-12-8 10:50
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
7C3C0A 处的call检查是否是光驱。因为我的电脑没有光驱,所以出现大量异常,程序关闭。好不容易躲过异常,程序进入主界面后就没反应了。
2004-12-9 01:26
0
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你的程序能进入主界面吗?
我一直进不去啊
2004-12-9 15:06
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
8
我把7C3C0A处的call NOP掉,然后将后面的一个跳转改向,就出现主界面,然后消失没反应了,查看进程还是存在的。
2004-12-9 18:35
0
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
莫非他读取光盘里的什么文件了不成?
可是你下载的就是光盘中的所有文件啊
2004-12-10 12:35
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可能还有隐藏的文件没发现吧,不妨把光盘作成镜象文件试试,记得提供下载啊.
2004-12-10 19:48
0
雪    币: 194
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
没有隐藏文件,我看了,
2004-12-21 12:10
0
雪    币: 1790
活跃值: (3535)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
会不会是NOP掉后造成的堆栈数据没有对齐.至于查看是否检测光盘里的文件直接用FILEMON看下就知道了

有能帮我解决下这个问题吗

http://bbs.pediy.com/showthread.php?s=&threadid=8713
2004-12-21 13:16
0
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
call ntdll.ZwContinue     有没有进去过?
2004-12-21 13:21
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 xiangding 发布
没有隐藏文件,我看了,


我想最简单的方法还是做一个光盘镜像,在vpc等虚拟系统里试试看能否正常运行,用winrar打开镜像文件能看到隐藏的文件,另我说的隐藏文件不是说文件属性是隐藏的,如果用ultraiso做过光盘就知道,它隐藏起来的文件夹在光盘里完全看不到的,但在dos下却可用cd命令进入。
2004-12-21 14:21
0
游客
登录 | 注册 方可回帖
返回
//