windows 11 远程线程注入
远程线程注入信号12CreateSemaphoreReleaseSemaphore
CreateSemaphore
创建或打开命名或未命名的信号量对象。
要指定对象的访问掩码,请使用CreateSemaphoreEx函数。
参数lpSemaphoreAttributes指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则子进程无法继承句柄。
结构的lpSecurityDescriptor成员为新信号量指定安全描述符。如果此参数为NULL,则信号量将获取默认安全描述符。信号量的默认安全描述符中的ACL来自创建者的主要或模拟令牌。
*lInitialCount信号量对象的初始计数。该值必须大于或等于零且小于或等于lMaximumCount。信号量的状态在其计数大于零时发出信号,在信号为零时发出信号。只要wait函数释放等待信号量的线程,计数就会减1。通过调用ReleaseSemaphore函数将计数增加指定的量。
*lMaximumCount信号量对象的最大计数。该值必须大于零。
*lpName信号量对象的名称。名称仅限于MAX_PATH个字符。名称比较区分大 ...
windows 9-10 同步
同步多线程共享资源同步原因 新建控制台项目
Counter1.cpp
123456789101112131415161718192021222324252627282930313233343536373839404142// Counter1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <windows.h>#include <iostream>using namespace std;int g_nCounter = 0;DWORD WINAPI ThreadFunc(LPVOID lpParam){ for (int i = 0; i < 0x10000; ++i) { ++g_nCounter; } printf("tid:%08X counter:%08X \r\n", GetCurrentThreadId(), g_nCounter); return 0;}int main( ...
windows 8 线程的创建和退出
线程的创建和退出概念区分
程序-磁盘上的可执行文件
进程-程序执行代码所需资源的集合,不活泼的,懒惰的
线程-程序执行代码的最小单位,活泼的,勤奋的
线程的运行(调度)原理cpu时间切片
线程的创建UI线程(主线程)-一般不做繁重的任务
非UI线程(工作线程)-一般做较繁重的任务
新建Windows桌面应用程序
设计Dialog
示例编辑框的ID为EDT_COUNTER
四个按钮的ID分别为BTN_START、BTN_PAUSE、BTN_STOP、BTN_CONTINUE
Sleep函数可以在暂停的时候减少线程对CPU的占用
暂停线程SuspendThread
恢复线程ResumeThread
一个线程无法自己恢复自己,但是可以自己把自己挂起
Counter.cpp
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737 ...
windows 7 文件加密
文件加密新建MFC应用程序
选择MFC EditBrowse Control
修改ID
添加新建项目
Encrypt.cpp
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417 ...
windows 6 管道、进程遍历
管道命名管道
匿名管道-父子进程之间的数据传输
创建:CreatePipe
读:ReadFile
写:WriteFile
获取句柄:GetStdHandle
查看管道是否有数据可读:PeekNamedPipe
新建两个MFC应用程序
ParentDlg.h
123456789101112131415161718192021222324252627282930313233343536373839// ParentDlg.h: 头文件//#pragma once// CParentDlg 对话框class CParentDlg : public CDialogEx{// 构造public: CParentDlg(CWnd* pParent = nullptr); // 标准构造函数// 对话框数据#ifdef AFX_DESIGN_TIME enum { IDD = IDD_PARENT_DIALOG };#endif protected: virtual void DoDataExchange(CDataExchange* ...
windows 5 进程间通信
进程间通信发送消息一般是自定义消息,使用SendMessage发送
新建项目
123456#define MS_TEST WM_USER+1 //自定义消息void CA1Dlg::OnBnClickedButton1(){ HWND hWndB = ::FindWindow(NULL, "B1"); ::SendMessage(hWndB, MS_TEST, 0x12456789, 0x98745612);}
添加自定义消息,确定后点击编辑代码
1234567afx_msg LRESULT CB1Dlg::OnMsTest(WPARAM wParam, LPARAM lParam){ CString strFmt; strFmt.Format("w:%08x,l:%08x", wParam, lParam); AfxMessageBox(strFmt); return 0;}
在头文件处要添加定义
在B1初始化处要给窗口添加名字
123456789101112 ...
windows 4 跨进程使用句柄、操作内存
跨进程使用句柄
A进程拿到句柄,把值给B进程,B进程能不能直接使用?
继承方式创建MFC应用
新建按钮
使用多字节字符集
新建编辑框,修改ID
1234567891011121314151617181920212223242526272829303132333435void CADlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); SECURITY_ATTRIBUTES sa = {}; sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE;//进程句柄允许被继承 //Start the child process. if (!CreateProcess(NULL, "B. ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment