-
-
[已解决]
[求助]超级简单的问题。这个messageBox为啥不执行?
50.00雪花
-
发表于:
2021-6-14 00:06
4330
-
[已解决] [求助]超级简单的问题。这个messageBox为啥不执行?
50.00雪花
bool testBz = false;
UINT testThread1(LPVOID para)
{
1 2 3 4 5 6 7 8 9 10 11 | while ( 1 )
{
if (testBz)
{
MessageBoxA( 0 , "as" , "cc" , 0 );
testBz = false;
}
/ / Sleep( 1 );
}
return 2 ;
|
}
UINT testThread2(LPVOID para)
{
while (1)
{
testBz = true;
Sleep(1000);
}
return 2;
}
随便在哪个地方让他们跑起来
CreateThread(0,0,(LPTHREAD_START_ROUTINE)testThread1, NULL,0,0);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)testThread2, NULL, 0, 0);
奇怪的是testThread1里的MessageBox永远不会被执行到 理论上应该是一秒会弹出一次 百思不得其解。随后打开OD逆向 发现线程1里只会取一次testBz的值。以后都是无限循环判断 ax的值是否为1 根本不去给ax赋值。如果加上Sleep(1)或者加上其它一些任何对环境有所改变的代码就会正常执行messagebox。这是什么原因?你们电脑能否正常执行。还是我电脑中毒了?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)