1、
《Windows核心编程》中用CreateRemoteThread注入Dll,代码如下:
// Create a remote thread that calls LoadLibraryW(DLLPathname)
hThread = CreateRemoteThread(hProcess, NULL, 0,
pfnThreadRtn, pszLibFileRemote, 0, NULL);
if (hThread == NULL) __leave;
请问,如何调用已注入的Dll中的函数???2、
用MFC编写Dll时InitInstance函数是怎么调用的?
和普通的DllMain有什么区别?
《Windows核心编程》中用CreateRemoteThread注入Dll,代码如下:
// Create a remote thread that calls LoadLibraryW(DLLPathname)
hThread = CreateRemoteThread(hProcess, NULL, 0,
pfnThreadRtn, pszLibFileRemote, 0, NULL);
if (hThread == NULL) __leave;
请问,如何调用已注入的Dll中的函数???2、
用MFC编写Dll时InitInstance函数是怎么调用的?
和普通的DllMain有什么区别?
解决方案 »
- 求过来人指点.......学了c/c++ ,mfc 越来越迷茫,工作也不知道在哪.....
- 个人原创基于X86的小型操作系统PiscisOS阶段性完成,和大家交流一下
- 提問一下OpenGL中座標變換的問題
- VC++6.0 Find in Files 功能失效!
- winCE中用evc怎么读文本然后显示在对话框里呢?怎么解决换行时出现的乱码?
- 感谢RockHwnd(0 error(s), 0 warning(s), Many bugs)帮我解决了问题,请进接分!
- 如何判断cstring字符为空?
- 100分放送!请教有关atl入门资料!
- 如何知道打包的程序需要用到哪些DLL?
- CMemDC类使用问题//怎么实现俩个类的绘制图形到对话框HDC里?
- 用什么方法读取其它应用程序的所产生的文件
- 有关Michael Dunn的Shell Extension教程源程序的编译问题
you can call CreateRemoteThread again!
second:
InitInstance is the initializing function,DllMain is the function's entry, I think InitInstance is used to initialize some members!
请问楼上,
那在MFC编写Dll时DllMain 是如何实现的呢?(因为,DllMain 会有不同的调用,即在装载,卸载等情况时执行不同的代码)
假设注入的Dll叫hodll.dll
需要调用hodll.dll中的函数func(),参数为空,
请问该如何写代码????????????
(分不够可以加,^_^)
注入Dll和,一般的LoadLibrary有什么不同之处?
我LoadLibrary后可以设置键盘钩子,但是注入的Dll设置键盘钩子老是不成功,为什么啊????????
扩展DLL没有一个从CWinApp派生的对象;
扩展DLL必须有一个DllMain函数;
使用扩展DLL的MFC应用程序必须有一个从CWinApp派生的类,而且,一般在InitInstance里调用扩展DLL的初始化函数。
:)
// Get the real address of LoadLibraryW in Kernel32.dll
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");
if (pfnThreadRtn == NULL) __leave; // Create a remote thread that calls LoadLibraryW(DLLPathname)
hThread = CreateRemoteThread(hProcess, NULL, 0,
pfnThreadRtn, pszLibFileRemote, 0, NULL);
if (hThread == NULL) __leave;LoadLibraryW的返回值如何得到啊???
重新调用CreateRemoteThread那么函数入口如何得到???
看了不少相关文章,估计是用GetProcAddress得到,那么,GetProcAddress中的第一个参数,模块句柄如何得到,本来我想用LoadLibrary的返回值,现在返回值也不知道去哪里取,没辙了。
typedef BOOL (CALLBACK *inshook)();
inshook instkbhook;
instkbhook=(inshook)GetProcAddress(GetModuleHandle(TEXT("hodll")), "installhook");
instkbhook();那么,如果dll插入在远程进程中的话,那么必须设置一个函数,然后用CreateRemoteThread激活。
那么,如何改造上边这段代码呢?
上边哪些函数、参数需要作为插入到远程进程中的线程函数的参数呢?
GetProcAddress?GetModuleHandle?"hodll"?"installhook"?烦请高手不吝赐教。
http://community.csdn.net/Expert/topic/3380/3380560.xml?temp=.1671259
可以“在case DLL_PROCESS_ATTACH:后面加入这个函数”
但是,设置钩子不能成功。我想问的是如何通过CreateRemoteThread创建新线程来调用已注入的dll中的函数。
为什么没人能解?