首页
社区
课程
招聘
未解决 VS编译 一个空DLL 为什么如此多的导入表 怎样可以不导入不必要的函数 66.00雪花
发表于: 2019-2-22 17:06 4850

未解决 VS编译 一个空DLL 为什么如此多的导入表 怎样可以不导入不必要的函数 66.00雪花

2019-2-22 17:06
4850

 

######

 

如题如何设置可以让DLL 没有多余的导入函数


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 189
活跃值: (267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的VS是2017 企业版本
2019-2-22 17:06
0
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
参考这里 因为有默认的 _DllMainCRTStartup  https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior?view=vs-2017#default-dll-entry-point-_dllmaincrtstartup 
最简单的方法就是在Release环境下在link中入口点设置为DllMain 就可以了
2019-2-26 14:28
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
我知道
2019-2-26 18:25
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不用C++。把CRT代码去掉,就没多余的导入了。
上传的附件:
2019-2-28 10:49
0
雪    币: 7059
活跃值: (3091)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
6
因为C++编译出来的东西是有头部代码的,头部代码里面使用了系统函数,就会被写进导入表里面,如果不需要导入表,可以考虑直接用汇编进行写,自己动手搜寻Kernel32.dll
2019-2-28 11:10
0
雪    币: 1573
活跃值: (198)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
楼上说得很对,用C++编译环境编译时,会编译进很多系统DLL,若不想要这些导入表,用汇编搜索获得Kernerl32.dll的基址,然后其他一切API的地址也就都有了
2019-3-26 07:05
0
雪    币: 739
活跃值: (3390)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
8
使用自定义入口可以达到你的需求。
但是自定义入口的话,使用c语言库函数会崩,只能使用API,除非自己手动初始化c运行库
2019-3-28 16:09
0
雪    币: 184
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
来围观一下
2019-12-4 22:13
0
游客
登录 | 注册 方可回帖
返回
//