能力值:
( LV4,RANK:50 )
|
-
-
2 楼
头次听说
|
能力值:
( LV12,RANK:340 )
|
-
-
3 楼
Debug和Release版都有,导出名称为空,地址都一样
|
能力值:
( LV12,RANK:200 )
|
-
-
4 楼
您写个Demo, 将工程发上来,大家一起给你实验.
口说无凭啊
///
现下了一个vs2010, 验证了您说的问题, 没有您说的问题
有可能是您除了def文件里面定义的函数, 在别的函数的定义中, 还出现过导出的定义.
您看看我生成dll的工程和您的有啥不同?
我这可是有图有码有真相啊~
DLL工程: srcDllForTest.rar
DLL Bin文件: DllForTestBin.rar
看到楼下2位同学都说没问题,我大概猜到您那咋出的问题了。
您的工程里,包含了第三方的实现, 在那个实现中, 有的函数是导出声明的.
否则已经不能解释这个问题~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我也没发现这个问题,是不是楼主工程文件太混乱了? 或者中什么PE感染鸟~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
没发现有这问题
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
可能其他地方有导出__declspec(dllexport) 存在于.h文件或者你导入的lib文件.
|
能力值:
( LV12,RANK:340 )
|
-
-
8 楼
图片:
如果是第三方的导出函数的话,导出的地址不应该不存在啊,而且序号是固定的,我修改def中的序号跟未知函数的序号一样了,编译出来居然有2个导出序号一样的函数。
我的工程中只包含了3个头文件
#include <SDKDDKVer.h>
#include <stdlib.h>
#include <windows.h>
|
能力值:
( LV12,RANK:200 )
|
-
-
9 楼
您好:
问题已经查到, 您将.def文件写错了...
您原来的写法:
LIBRARY MakeObject_IA32
EXPORTS
CreateObjectHandle @1
CreateSection @2
UpdateSection @3
CopySymbol @4
AddSymbol @5
AddStringTable @6
LockObjectHandle @7
UnLockObjectHandle @8
ReleaseObjectHandle @9
CopyByteToSection @51
Asm_Push_Val @52
正确的写法有2种:
* 将@1, @2... @51, @52 都去掉
* 将@51, @52 改成 @10, @11
我采用的是方法1
LIBRARY MakeObject_IA32
EXPORTS
CreateObjectHandle
CreateSection
UpdateSection
CopySymbol
AddSymbol
AddStringTable
LockObjectHandle
UnLockObjectHandle
ReleaseObjectHandle
CopyByteToSection
Asm_Push_Val
效果图:
我开始将您的工程编译了一下,看了导出函数列表, 觉得奇怪.
又去看您的def文件, 才发现, 空的那些导出函数正好是您定义的那些标号之间的.
就试了一下去掉导出函数序号, 搞定, 嘿嘿
|
能力值:
( LV12,RANK:200 )
|
-
-
10 楼
DLL 使用序号导出的目的, 是不让人看到导出函数的名称。
有资料,可以查下.
如果不是为了隐藏导出函数名称, 可以不用指定导出函数序号.
|
能力值:
( LV12,RANK:340 )
|
-
-
11 楼
还真是,本来想预留点序号给别的函数的,但为什么会多这几个莫名其妙的函数呢?
还是谢谢你了~
|
|
|