社区
进程/线程/DLL
帖子详情
DLL的包含问题,能否在A.DLL中包含B.DLL,使之最终能够具备B.DLL中的全部功能?
mechiland
2003-10-18 08:49:14
请教高手一个问题:原来写有一个B.DLL,后来我发现这个B.DLL功能不足,但是源代码也不见了,现在我想写一个A.DLL来封装他,并且提供更多的函数。外界表现仅为一个A.DLL,那个B.DLL已经不需要了。能实现吗?
...全文
99
8
打赏
收藏
DLL的包含问题,能否在A.DLL中包含B.DLL,使之最终能够具备B.DLL中的全部功能?
请教高手一个问题:原来写有一个B.DLL,后来我发现这个B.DLL功能不足,但是源代码也不见了,现在我想写一个A.DLL来封装他,并且提供更多的函数。外界表现仅为一个A.DLL,那个B.DLL已经不需要了。能实现吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mechiland
2003-10-20
打赏
举报
回复
我试着用了一下DLL2LIB工具,发现他导出的LIB并不是很尽人意啊
microran2000
2003-10-19
打赏
举报
回复
如果你知道函数名称,而不知道参数类型和返回值类型,(参数名称没有用),我想这个DLL肯定不是你编写的.我不知道,你既然不知道函数有几个参数,各个参数对应什么类型,返回值是怎么定义的.那么你怎么调用呢?
函数转发器是通过编译器来实现的,当然你可以手工来转发,自己编写一个代理函数.但是无论是手工还是自动转发都需要你知道函数的定义规范,否则这个DLL无法使用.比如你想拦截这个DLL中的某个函数,让它调用前先执行你的代码,然后在调用自身.如果你不知道函数有几个参数.怎么实现.
尽管对代码反汇编可以知道每个函数究竟有几个参数.(通过堆栈指针来察看),也可以跟踪加载程序,来发现入栈参数的个数来确定参数的个数.一般地,DLL输出函数都是通过EAX寄存器来返回结果的,但是这个寄存器究竟存放的是数值还是指针,你只有跟踪代码才能得到.
所以你在使用这个DLL之前首先需要得到或者整理一个文档说明,才能实现A.DLL.
poweruser
2003-10-19
打赏
举报
回复
关注ing^^^^^
mechiland
2003-10-19
打赏
举报
回复
虽然比较晕,但是大概能够明白意思。
“比如你想拦截这个DLL中的某个函数,让它调用前先执行你的代码,然后在调用自身”,我不明白,我只想将B.DLL中的方法原封不动的迁移到A.DLL中而已,从而使A.DLL更加强大并且不依赖B.DLL,也不需要调用前执行我的代码啊?
microran2000
2003-10-19
打赏
举报
回复
可以试一下Dll2LIB工具,以链接静态库方式代替动态链接库:
http://www.winportal.com/file.asp?ObjectID=6333
MilitaryMiniatures
2003-10-19
打赏
举报
回复
Windows核心编程这本书上,关于Dll的部分,有很好的解释!
mechiland
2003-10-18
打赏
举报
回复
高手啊高手!!
这个问题困扰我很久……感动
1 我现在知道输出函数的名称,但是不知道具体的参数名称,影响使用吗?如果照那种“函数转发器”的思路,应该是能够用的吧?
2 嵌入到A.DLL中的B.DLL如何解压?如果采用届压的办法,那么在写“函数转发器”时路径岂不是不能确定?
microran2000
2003-10-18
打赏
举报
回复
这个问题相对比较复杂,首先尽管B的代码不见了,但是你必须知道B的输出函数的声明,否则在A中也是没有办法用的.
如果你知道函数的所有声明,这个问题应该是很容易解决的.你可以在A中编写与B声明一样的函数,在这些函数中调用B的函数.也可以在A中直接作为函数转发器,当应用程序调用A的输出函数时,会自动调用B的函数.就像Windows 2000的Kernel32.dll一样,尽管这个函数输出了许多API函数,但是实际上它采用函数转发器,真正的函数实现在NTDLL.DLL中.比如HeapAlloc HeapFree等函数
如果你想制作自己的函数转发器可以采用
#pragma comment (linker,"/export:FuncName=B_DLL.FuncName")
其中FuncName是函数名称
B_DLL是B动态链接库的名字.
当然如果你想完全隐藏B,你可以把B.DLL作为一个资源嵌入到A.dll中.在运行是动态把它解压到一个临时目录.调用结束后在把它删掉.
当然你还可以实现动态延迟加载
易语言开发通达信DLL公式接口
本系列课程将从数据结构,底层原理讲起,一步步分析并用易语言来编写通达信
DLL
公式接口接口,以及用编写的接口来编写各种公式。 学会了用易语言做通达信DLL接口的方法,其它的股票软件也可以按些方法做出来。
Windows进程常用
DLL
模块注入技术
进程调试级注入,涉及调试器相关
功能
调用知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。 导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入...
火山软件开发通达信
DLL
公式
用现在行的
中
文编程软件 火山软件来开发通达信的
DLL
扩展公式接口 火山编译出来的
DLL
,运行效率更高,不易报毒。
Unity ILRuntime框架设计
重点:希望通过它,帮助你学习、了解ILRuntime真正在项目
中
的应用. 框架的将提供以下这些接口,这些接口将从0开始,在Unity里将C#脚本编译成
dll
,然后将
dll
放到服务器上,再将
dll
下载下来,进行加载,到最后从Unity主工程...
VC++动态链接库(
dll
)编程视频教学
动态链接库的开发编译属于VC++程序员技能。 本课程学习之后
能够
理解动态链接库原理,学会编译静态库、动态库,学会通过lib和头文件链接动态库,学会直接通过代码访问
dll
中
函数
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章