MFC编程如何把dll封装入exe中 5

dll是我找到来现成的,没有源代码..把程序交给别人的时候不想让对方知道我用过这个dll..请问有什么办法把这个dll封装入exe里,这样我交给别人的就单独是一个exe文... dll是我找到来现成的,没有源代码..
把程序交给别人的时候不想让对方知道我用过这个dll..
请问有什么办法把这个dll封装入exe里,这样我交给别人的就单独是一个exe文件..
展开
 我来答
469234425
2013-08-26
知道答主
回答量:27
采纳率:0%
帮助的人:15.4万
展开全部
可以把dll以二进制形式写入到exe文件后面(exe允许后边添加任意长度数据 不影响程序的运行)长度为dll大小 在程序初始化的中读取自身文件后偏移dll大小的数据 然后创建这个dll 再loadlibrary 程序退出前deletefile把dll删除 如果不想被发现的话 还可以把dll的属性设置为隐藏或者直接将dll写入到windows目录下
追问
请问具体该怎么做呢?或者给个教程链接也成..多谢!
追答
这个简单啊 给你具体说说吧
你先在程序用dll的地方打开文件 就是把自己打开 路径是自己的用 GetModule FileName(具体用法上网上查查)然后打开文件 seek到文件末尾 再读取文件 长度就是dll的大小 这个你查看一下dll的属于就知道了 现在程序编译好 再写一个程序 这个程序负责将dll写入到你原来那个程序后边 这个更简单 打开exe文件(以ab+方式) 然后在打开dll文件 读取dll全部数据到exe中 此时的exe就是你想要的了
lokily2010
2013-08-26 · TA获得超过284个赞
知道小有建树答主
回答量:776
采纳率:100%
帮助的人:585万
展开全部
具体怎么加入、释放资源这个就不必多说了吧

加入资源:Insert-Resource-Import

要求填入类型名称,随便填个即可,比如“EXEANDDLL”

释放资源:

////////////////////////////////////////////

// 加载资源、生成文件

//定位我们的自定义资源,这里因为我们是从本模块定位资源,所以将句柄简单地置为NULL即可

HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_XXXXXX),
TEXT("EXEANDDLL"));//IDR_XXXXXX就是你刚才导入的a.exe或b.dll的ID了

if (NULL == hRsrc)

return FALSE;

//获取资源的大小

DWORD dwSize = SizeofResource(NULL, hRsrc);

if (0 == dwSize)

return FALSE;

//加载资源

HGLOBAL gl = LoadResource(NULL, hRsrc);

if (NULL == gl)

return FALSE;

//锁定资源

LPVOID lp = LockResource(gl);

if (NULL == lp)

return FALSE;

CString filename="a.exe";//保存的临时文件名

// CREATE_ALWAYS为不管文件存不存在都产生新文件。

HANDLE fp= CreateFile(filename
,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

DWORD a;

//sizeofResource 得到资源文件的大小

if (!WriteFile (fp,lp,dwSize,&a,NULL))

return false;

CloseHandle (fp);//关闭句柄

FreeResource (gl);//释放内存
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgao622
2015-07-23 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6550
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
  1. exe要想讲dll 直接编译进去,只需要dll 是被静态编译生成的就行了。

  2. dll分动动态和静态编译,动态换言之就是程序在运行时才查找所需的dlI,然后将其加载到内存中;静态在编译时就会将代码加入到exe中,运行时就不再需要该dll文件了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-08-27 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1202万
展开全部
有个软件叫MoleBox
专门用来干这种事的
你可以拿来试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-26
展开全部
dll没有源代码的话不能用吧,你不知道里面的接口,怎么调用它呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式