使用vc将C的代码封装成为DLL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用vc将C的代码封装成为DLL相关的知识,希望对你有一定的参考价值。

mfc是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows
API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。有时人们说vc呢也指它的内部编译器,集成开发环境必须有一个编译器内核,要不有什么用,例如DevC++其中一个编译器内核就是gcc。
MFC除了是一个类库以外,还是一个框架,你应该试过,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率但是MFC的封装很浅,所以效率上损失不大,灵活性还可以,虽然也有很多缺陷,但还是一个比较好的东西,个人以为,不逊色于KFC
参考技术A VC新建
C++
win32
dynamic~link
library
然后粘贴里的代码.设置输出函数.==多的事情.
参考技术B 看孙鑫的VC++视频教程20集中的第19集里面有具体的方法.可以baidu下.

vc 无dll的代码注入

要用vc++实现:
利用writeprocessmemory()把要在远程执行的代码写入到目标进程空间中,然后使用createRemoteThread()运行;
可以在指定的进程中(比如explorer.exe)中注入我想要它执行的功能;
这一部分代码要加入到我的工程中,作为我的程序的一个功能。
谢谢,如果好用分数加倍

writeprocessmemory()不能写入代码。使用writeprocessmemory()和createRemoteThread()只能进行DLL注入。如果要进行无DLL注入的话,就得在硬盘上打开explorer.exe文件进行写入再运行。 参考技术A vc无dll实现不了远程注入。因为重定位没办法解决。但可以用汇编来做。我空间有代码。你可以参考下。追问

这里的重定位好像利用的是kernel32.dll中的函数的位置,因为这里面函数的地址所有程序都一样。
应该是可以做的,麻烦您再想想?

追答

不是说kernel里面的函数,那个可以解决。比如说你自己程序中的变量,函数,这个是没办法定位的。除非用汇编进行相对位置转换。
一句话,以目前的技术看来,vc中不用dll是无法注入的。这是罗云彬老师说的。你可以试着内嵌汇编,或者直接用汇编写。你看我空间里对变量的重定位,都是用汇编实现的,vc根本完成不了。

以上是关于使用vc将C的代码封装成为DLL的主要内容,如果未能解决你的问题,请参考以下文章

C++类封装成DLL动态链接库

资源封装进dll

怎么将qt的开源库封装成dll

c#如何将数据库连接封装成dll

dll封装,能否反编译破解呢?价格好说

如何将一个类库封装成DLL?