我在
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直播授课