能力值:
( LV2,RANK:10 )
|
-
-
2 楼
那就换GCC或者LLVM编译,
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
柒雪天尚
那就换GCC或者LLVM编译,
mfc这种纯正微软血统的东西能用gcc?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
为何要改入口?
|
能力值:
( LV1,RANK:0 )
|
-
-
5 楼
aheadlib你值得拥有
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
xuddk
为何要改入口? 原来的不能处理线程事件,所以要改 当然,我不想按常规出牌也行,就是想改.
最后于 2021-1-10 18:12
被yukihotaru编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
你直接用标准的DLL 加上MFC的支持 静态编译不就是你要的了? InitInstance 里面本来就有DllMain 肯定编译不过去的.
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
Mxixihaha
你直接用标准的DLL 加上MFC的支持 静态编译不就是你要的了? InitInstance 里面本来就有DllMain 肯定编译不过去的.
我用MFC明显就是想要用各种方便的封装类,比如窗口,对话框,那么只要调用MFC库不管使用静态还是动态都是一样必须使用库中的main函数,结果只能是冲突.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
我都说过了 标准的接口也可以加入MFC的使用. Win32 DLL 的入口就很简单的使用各种,包括MFC的类,你只要在IDE里面设置有MFC的支持就行了
有时候吧,都告诉你了还不动脑筋实践. 现在我给你直接MFC DLL的处理方法.
在CPP中加入
#pragma comment(linker,"/ENTRY:MyDllMain") 在 theApp 下一行加入 extern "C"{
BOOL WINAPI
_DllMainCRTStartup(
HANDLE hDllHandle,
DWORD dwReason,
LPVOID lpreserved
);
}
BOOL WINAPI MyDllMain( HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved )
{
MessageBox(0,L"MFC DLL INIT!",NULL,0x40);
BOOL Ret = _DllMainCRTStartup( hDllHandle , dwReason , lpreserved);
AfxMessageBox(L"MFC DLL INIT OK!");
return Ret;
} 同样InitInstance() 也是正常可以调用的.可以在 InitInstance 代码中加入提示看到 BOOL CTestMFCDllApp::InitInstance()
{
AfxMessageBox(L"MFC InitInstance()");
CWinApp::InitInstance();
return TRUE;
}
方法都是人想出来的.
最后于 2021-1-14 08:25
被Mxixihaha编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
看大神指点
最后于 2021-1-14 12:10
被vblank编辑
,原因: 技术不到家
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
vblank
指定了入口之后就不会链接默认的那些库了,找不到符号是肯定的。如果是非MFC,可以把缺少的函数手动加上。MFC的话就难搞了哦,一大堆符号。结论是你这个操作行不通
麻烦不要把答案覆盖. 谁说MFC不可以指定入口? 不仅可以指定入口,还可以正常的像标准DLL一样初始化. 上面已经给出方法了. 不要误导. 搜索不到的,不代表就没有. 主要在于你有没有研究方法.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
Mxixihaha
麻烦不要把答案覆盖. 谁说MFC不可以指定入口? 不仅可以指定入口,还可以正常的像标准DLL一样初始化. 上面已经给出方法了. 不要误导. 搜索不到的,不代表就没有. 主要在于你有没有研究方法.
我是的思路确实是按照替换入口函数这个方式走的,但是书上都是介绍DLL的入口函数是`DllMain,`你可以看到也是这么做的.但是确实不知道有`_DllMainCRTStartup`这么一个C函数 在我替换了入口函数后,更是出现找不到memset这种C运行库最常用的函数的错误,我都不知道到底发了什么诡异的操作才能让link出现这种错误. 高手,受教了.虽然问题解决了,但是最开始link错误的原因依旧不明.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
yukihotaru
我是的思路确实是按照替换入口函数这个方式走的,但是书上都是介绍DLL的入口函数是`DllMain,`你可以看到也是这么做的.但是确实不知道有`_DllMainCRTStartup`这么一个C函数
在 ...
不可以,因为初始化MFC有很多库, 如果你在之前包含头文件和库 就会重复指定 如果你移除就会找不到. 因为已经封装了 你必须另寻他路. 并且我也是看到你的问题之后,看源代码操作的,我并没有这种需求. 实际上做为一名Cracker 你就得自己找突破点, 你用OD载入就是这个入口 , 所以你可以在外层包一层实现, 搜索引擎不一定有人研究过,找不到正常.
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
改了入口, 你所用到的C库函数都没法初始化, 除非你不用. 你自己手动去写
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
礁石的爱
改了入口, 你所用到的C库函数都没法初始化, 除非你不用. 你自己手动去写
今天又来看了下这个诡异的问题,说实话就是有个心结在,为啥换个入口就未定义了,连用的机会都不给你. 无意中又发现个和我一样问题的帖子,人家的更加直接,貌似是新版vs才有... https://www.v2ex.com/amp/t/366594
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
加入#pragma comment(lib, "msvcrtd.lib") #pragma comment(lib, "vcruntimed.lib") #pragma comment(lib, "ucrtd.lib")可以解决
|
|
|