首页
社区
课程
招聘
简单调试MFC遇到的问题
发表于: 2010-5-29 10:51 3296

简单调试MFC遇到的问题

2010-5-29 10:51
3296
我在
MFC程序里建立一个函数StopStart
void CMyDlg::StopStart()
{
  HANDLE HMutex;
  char *MutexInfo = "WWWWWWW";
  HMutex = OpenMutex(MUTEX_ALL_ACCESS,false,MutexInfo);
  if (HMutex != NULL) ExitProcess(0);
  HMutex = CreateMutex(NULL,false,MutexInfo);
}

用来检测的。
之后在程序的OnInitDialog写入调用,之后编译后OD载入,我下了OpenMutex断点,通过OD
进行跟踪,发现程序跟着跟着就跟丢了。

按我的理解是应该有个main函数调用这个StopStart函数,可是并没有和我想的一样,跟到最后的代码是这里
00401019   . /E9 62060000   JMP 防多开.00401680
0040101E   . |E9 1D060000   JMP 防多开.00401640
00401023   . |E9 D8060000   JMP 防多开.00401700
00401028   $ |E9 13010000   JMP 防多开.00401140
0040102D   . |E9 6E010000   JMP 防多开.004011A0
00401032   . |E9 69010000   JMP 防多开.004011A0
00401037   . |E9 14050000   JMP 防多开.00401550
0040103C   . |E9 BF000000   JMP 防多开.00401100
00401041   . |E9 CA050000   JMP 防多开.00401610
00401046   $ |E9 C5010000   JMP 防多开.00401210
0040104B   . |E9 70050000   JMP 防多开.004015C0
00401050   . |E9 2B080000   JMP 防多开.00401880
00401055   . |E9 76000000   JMP 防多开.004010D0
0040105A   $ |E9 91080000   JMP 防多开.004018F0
0040105F   $ |E9 2C040000   JMP 防多开.00401490

00401019   . /E9 62060000   JMP 防多开.00401680

这是调用open的代码。在往上就没了
00401000   .  CC            INT3
00401001   .  CC            INT3
00401002   .  CC            INT3
00401003   .  CC            INT3
00401004   .  CC            INT3

这里并不是main函数。

这是怎么进行调用的呢?OD载入应该就是OEP的位置,然而并未找到openmutex也是就StopStart函数的调用,这里怎么解释呢?

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
也就是怎么跟踪到OnInitDialog这个函数里面!?
2010-5-29 10:53
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也是有点不明白
2010-5-31 19:02
0
雪    币: 2513
活跃值: (615)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
OEP并不等于main()/winMain()之类的
另外有一点,你有源码,用VC自带的调试器调试比用OD方便的多
2010-5-31 19:36
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
多谢了,明白应该如何做了!
2010-6-1 16:03
0
游客
登录 | 注册 方可回帖
返回
//