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

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

2019-2-22 17:06
5020

 

######

 

如题如何设置可以让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  893K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4K6i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8X3y4H3M7q4)9J5c8X3u0#2K9h3I4V1i4K6u0r3M7Y4g2F1i4K6u0V1N6r3W2E0k6g2)9J5k6r3I4A6j5Y4u0S2M7Y4W2Q4x3X3c8T1k6h3S2S2N6X3W2G2M7W2)9K6c8Y4k6A6k6i4N6Q4x3@1c8$3M7#2)9J5k6o6t1H3x3e0N6Q4x3U0y4V1k6h3k6S2N6h3I4@1i4K6u0V1k6r3I4D9i4K6u0V1k6h3&6@1M7Y4W2Q4x3X3c8H3L8$3W2F1N6q4)9J5k6q4)9#2k6X3c8D9L8r3#2S2K9h3&6U0M7Y4c8K6N6r3q4J5N6s2g2H3i4K6t1$3L8X3u0K6M7q4)9K6b7R3`.`.
最简单的方法就是在Release环境下在link中入口点设置为DllMain 就可以了
2019-2-26 14:28
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
我知道
2019-2-26 18:25
0
雪    币: 1787
活跃值: (345)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不用C++。把CRT代码去掉,就没多余的导入了。
上传的附件:
2019-2-28 10:49
0
雪    币: 7319
活跃值: (3421)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
6
因为C++编译出来的东西是有头部代码的,头部代码里面使用了系统函数,就会被写进导入表里面,如果不需要导入表,可以考虑直接用汇编进行写,自己动手搜寻Kernel32.dll
2019-2-28 11:10
0
雪    币: 1078
活跃值: (296)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
楼上说得很对,用C++编译环境编译时,会编译进很多系统DLL,若不想要这些导入表,用汇编搜索获得Kernerl32.dll的基址,然后其他一切API的地址也就都有了
2019-3-26 07:05
0
雪    币: 1349
活跃值: (4213)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回