Windows核心编程
code_greenhand
这个作者很懒,什么都没留下…
展开
-
进程间通信方式-文件映射
1. 文件映射 将文件映射到进程指定内存,对内存的操作,就是对文件的操作, 从而避免频繁的对文件进行读写的操作.并且操作效率比文件读写效率高很多,也能通过文件映射进行进程通信文件映射步骤使用:1创建有文件的文件映射 1. 打开文件 CreateFile 2. 创建文件映射对象 CreateFileMapping 3. 创建映射视图,把文件映射到内存 M...原创 2019-07-18 16:41:17 · 655 阅读 · 0 评论 -
进程遍历和进程间的操作
进程遍历前先获取进程快照代码例子如下:具体API使用查csdn //创建进程快照(获取系统正在运行的进程信息,线程信息等) //第二个参数一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取当前进程快照时可以设为0 HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);...原创 2019-07-16 15:35:29 · 145 阅读 · 0 评论 -
windows下c/s数据传输中文乱码方式个人理解
众所周知,乱码的根本的原因都是编码方式和解码方式不同所造成的,你用的是ANSI编码方式传输的数据,我用的是utf-8方式解析这就造成了文本乱码所以记住一点基本不会乱码,也是废话,用什么方式编码的文本就用什么方式的文件解码例子:如我的平台是windows,对方客户端要的是utf-8解码,所以我必须把中文文本编码成utf-8,windows下有两个接口WideCharToMultiByte...原创 2018-06-25 17:08:06 · 651 阅读 · 0 评论 -
windows钩子函数
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递相关APISetWindowsHookEx安装钩子 如果钩子需要关联当前系统所有窗口。则需要在DLL动态库中安装钩子 Unhook...原创 2019-07-27 02:01:54 · 265 阅读 · 0 评论 -
windows中的DLL注入
概念远程线程:另一个进程中的线程。 注入:别的进程中执行自己的代码 远程线程注入:指一个进程在另一个进程中创建线程的技术设计思路在DLL的dllmain里写自己的代码,利用系统共享库(系统dll是所有进程共享)的函数动态加载自己的DLL,来运行自己的代码,系统dll里面的LoadLiabrary函数地址在不同进程中的地址是相同的,把这个地址当做远程线程的函数回调,那线程执行的就是这个...原创 2019-07-27 01:47:13 · 218 阅读 · 0 评论 -
windwos线程同步的几种方式
大家都知道开多线程的的目的是为了提高程序的处理效率,但是多线程会存在访问同一个资源会出现数据混乱,当然多个线程只读这一个共享资源肯定是没有问题的,但是修改的话肯定会有问题,所以需要同步的概念windows提供了多个同步对象同步模式有两种: 1三环(用户模式):原子操作, 关键段 2内核同步对象:事件, 信号, 互斥体 三环的同步手段,效率明显高于内核同步对象...原创 2019-07-27 01:21:11 · 191 阅读 · 0 评论 -
windwos跨进程使用句柄
windows是通过句柄对进程中的各种内核对象进行引用。实际上windows句柄就是一个索引,索引对应对象的地址,拿到地址就可以获取对象本身了句柄表存放的三个值1句柄是否有继承权限2句柄(索引)3对象的地址110x11111111跨进...原创 2019-07-26 23:37:50 · 1406 阅读 · 0 评论 -
windows创建线程
程序(.EXE文件):磁盘上的可执行文件,属性是文件 进程:可执行文件在内存中的映射,进程本身无法执行代码,需要交由线程执行,进程可以概括为可执行文件执行所需要的资源总和: 4G虚拟内存 可执行文件映射到内存 加载的的DLL模块 环境变量 句柄表 进程的内核对象 线程:操作系统分配cpu时间的最小单位。 进程启动时,操作系统会自动创建这个进程的第一个线程(主线程),...原创 2019-07-22 15:35:15 · 601 阅读 · 0 评论 -
进程间通信-匿名管道
匿名管道一般用于父子间进程通信注意:匿名管道不允许异步操作,所以如在一个管道中写入数据,且缓冲区已满,那么除非另一个进程从管道中读出数据,从而腾出了缓冲区的空间,否则写入函数不会返回,还有如果管道中没有数据的话,读端那边会一直等待数据读取,会操作堵塞所以要用PeekNamedPipe这个api去获取管道中的数据,如果有数据的话就读取因为匿名管道是单向的,只能一端读一端写,所以父子进程中能有...原创 2019-07-20 13:50:49 · 253 阅读 · 0 评论 -
进程间通信—共享段和自定义消息与vm_copy消息
进程间通信 1 自定义消息和WM_COPYDATA 1) 自定义消息缺点--参数不够用 2) WM_COPYDATA 通过WM_COPYDATA传递消息,操作系统会首先将发送的数据拷贝到高2GB共享区,然后再拷贝到接收方的用户空间中,所以会有两次拷贝,因此在数据量不大的时候,可以使用此方法,缺点就是拷贝两次效率低// 发送方发送消息H...原创 2019-07-16 17:39:29 · 399 阅读 · 0 评论 -
windows中使用Createprocess创建进程和创建注册表
CreateprocessCreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件(相当于打开一个已经存在的父进程)语法创建进程//基本语法//注意如果第一第二个参数都不为空的话,那创建进程会以第一个为准,而第二个只会当前命令行参数BOOL CreateProcess( LPCTSTR lpApplicationName, ...原创 2019-07-14 22:41:14 · 694 阅读 · 0 评论 -
windows中dllmain,创建进程和转发dll
dllmaindll模块的函数入口BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ /* DLL_PROCESS_ATTACH 用途:用于初始化资...原创 2019-07-14 22:19:17 · 947 阅读 · 0 评论 -
Windows下静态库和动态库的制作与使用
静态库:静态库:指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。静态库生成的lib文件:多个obj文件的合集使用静态库步骤,配置工程属性链接静态库1拷贝头文件,包含头文件到要使用的工程项目中2把lib添加到工程,下面2种方式都可以2.1 添加工程引用的lib文件名:...原创 2017-05-17 20:48:45 · 942 阅读 · 0 评论