-
-
[求助]远程线程注入dll,dll中JMP目标函数,但dll中必须有MessageBox,否则不成功,为什么?
-
发表于:
2012-12-26 16:47
6400
-
[求助]远程线程注入dll,dll中JMP目标函数,但dll中必须有MessageBox,否则不成功,为什么?
远程线程注入dll,dll中JMP目标函数,但dll中必须有MessageBox,否则不成功,为什么?
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
JMP目标函数();
MessageBoxW(NULL,L"为什么一定要存在,否则不成功", L"hook",0 );
break;
……
}
没有这句MessageBoxW,就不成功
=======================================
我重新又尝试了几次,终于发现其实不加MessageBox,jmp目标函数()也是成功的,但jmp目标函数()中的用于表示成功的MessageBox被系统自动处理掉了(大概当异常给throw了)。
我想jmp目标函数()中只要和界面有关系的操作都会给throw。但有没有人能告诉我,为什么在前面加了一个MessageBox(dll加载时,主动调用),是不是系统自动为这个线程加了些什么,使之后能成功调用MessageBox(调用者是被hook的目标程序,被动调用)了?
MessageBox主动调用——成功
MessageBox被动调用——失败
==========================================
过了半个多月,差不多把这个问题忘了,毕竟除了MessageBox弹不出对话框,其他都正常。
今天突然又想到一个可能性——MessageBoxW的第一参数我用的是null,一般情况正常,但如果多线程可能就会有问题了
也不知道是不是这个原因?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!