【发布时间】:2011-10-12 10:25:24
【问题描述】:
Hi to all....
////////////////////////////////////////////
PUSH 214D84DD // thread id address out
PUSH 0
PUSH 0
PUSH 214D84CD // my function address to run in the thread
PUSH 0
PUSH 0
CALL DWORD PTR DS:[4EBD1204] // KERNEL32.CreateThread
waiting_label:
NOP
JMP waiting_label
////////////////////////////////////////////
我在我的函数 (214D84CD) 上放置了一个断点,但是在 CreateThread 之后,在“等待循环”中我的函数没有被调用。 否则,如果我在 CreateThread 之后使用许多其他线程调用我的应用程序(而不是等待循环),则会调用我的函数。
为什么?有一些“DoEvents”api 强制在我的循环中调用我的线程函数?
线程 id (214D84DD) 和返回值 EAX 不为空。 我在调试器(OllyDbg)中运行我的应用程序。而且我没有使用任何编译器。
非常感谢, 里卡多
【问题讨论】:
-
您以错误的顺序排列参数。使用编译器。
-
我认为顺序是正确的,因为在调试器中我看到:|pSecurity = NULL |StackSize = 0 |ThreadFunction = 214D84CD |pThreadParm = NULL |CreationFlags = 0 \pThreadId = 214D84DD
标签: multithreading x86 assembly disassembly kernel32