fork函数

流沙 | C/C++ | 2018-09-07
 1、fork入门 计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。 fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了 该应用程序的两个副本。 需要注意的是:(1)当调用fork()函数时,在该位置进程一分为二,一个是父进程,一个是子进程。(2)若调用成功返回的是两个值,父进程返回的值为子进程标志,子进程返回的值为0,不成功返回为-1。 为什...

阅读全文>>

ė65次浏览 60条评论 0

Linux下编译动态链接库与使用详解

流沙 | C/C++ | 2018-09-06
linux下库的简介 两种库 静态库 动态库  区别:在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小 库的存储位置和命名规范 存储:一般放在/usr/lib和/lib下  命名规范:  1. 静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称  2. 动态库的名字一般为libxxxx.so.major.minor,xxxx是该...

阅读全文>>

ė272次浏览 60条评论 0

mfc多线程

流沙 | C/C++ | 2018-08-30
BOOL g_bWillExit = FALSE; //线程函数 DWORD WINAPI ThreadFunc(PVOID param) { while(g_bWillExit == FALSE) { if(MessageBox(NULL,_T("退出线程吗?"),_T("这是线程"),MB_YESNO)==IDYES) { CmyfirstmfcDlg *pDlg = (CmyfirstmfcDlg*)param; CButton *pButton = (CButton *)pDlg->GetDlgItem(IDC_BUTTON_T...

阅读全文>>

ė79次浏览 60条评论 0

mfc 托盘设置

流沙 | C/C++ | 2018-08-30
//放在主界面对话框对应的位置 OnInitDialog() {        NOTIFYICONDATA m_tnid; m_tnid.cbSize=sizeof(NOTIFYICONDATA);//设置结构大小//  m_tnid.hWnd=this->m_hWnd;//设置图标对应的窗口  m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;//图标属性  m_tnid.uCallbackMessage=WM_ICON_NOTIFY;//应用程序定...

阅读全文>>

ė67次浏览 60条评论 0

MFC控件使用小结

流沙 | C/C++ | 2018-08-29
CComoboBox: CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO_TEST); pCombo->InsertString(0, _T("男")); pCombo->InsertString(1, _T("女")); pCombo->InsertString(2, _T("秘密")); pCombo->SetCurSel(1); CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO_COUNTRY); for(int ...

阅读全文>>

ė139次浏览 60条评论 0

c语言mysql编程

流沙 | C/C++ | 2018-08-02
直接套用框架 1\ VS的环境需要注意 2\ 头文件的顺序需要注意 // mysqldemo.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <WinSock2.h> //Socket,连接MySQL也需要用的 #pragma comment(lib,"ws2_32.lib") #include <mysql...

阅读全文>>

ė154次浏览 60条评论 0

WSAAsyncSelect 实例Demo

流沙 | C/C++ | 2018-07-25
参考文章: https://www.cnblogs.com/hgwang/p/6093976.html 测试可以 WSAAsyncSelect模型也称异步选择模型,其核心函数是WSAAsyncSelect。它可以用来在一个socket上接收以windows消息为基础的网络事件。它提供了读写数据的异步通知功能,但不提供异步数据传送。WSAAsyncSelect模型的优势在于只需要一个主线程即可。缺点是必须要绑定窗口句柄。 1:WSAAsyncSelect函数定义 Description:The WSAAsyncSelect func...

阅读全文>>

ė139次浏览 60条评论 0

网卡流量探测器

流沙 | C/C++ | 2018-07-23
只是一个简单的demo 可以优化的更好 (思路: 上行展示, 下行展示) // NetSpeed.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <pcap.h> #include <remote-ext.h> #include <Winsock2.h> #pragma comment(lib,"wpcap.lib") #pragma comment(lib,"...

阅读全文>>

ė182次浏览 60条评论 0

IP包解析测试

流沙 | C/C++ | 2018-07-23
在字节序转换上, 卡的比较久, 其他,有点类似于PE的编写 直接贴上代码 // GetInterfaceInfo.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <pcap.h> #include <remote-ext.h> #include <Winsock2.h> #pragma comment(lib,"wpcap.lib") #pragma comm...

阅读全文>>

ė157次浏览 60条评论 0

利用winpcap模块 监听网卡数据

流沙 | C/C++ | 2018-07-22
主要利用了帮助文档的模块,自己只是修改了一部分 #include "stdafx.h" #include <pcap.h> #include <remote-ext.h> #include <Winsock2.h> #pragma comment(lib,"wpcap.lib") #pragma comment(lib,"ws2_32.lib") /* packet handler 函数原型 */ void packet_handler(u_char *param, const struct pcap_pkthdr ...

阅读全文>>

ė122次浏览 60条评论 0

WinPcap 常见安装和运行错误

流沙 | C/C++ | 2018-07-22
说明:WinPcap共有安装程序和开发包 如果只运行基于WinPcap的应用程序,只须安装WinPcap安装程序; 如果要编写和调试基于WinPcap的应用程序,除安装WinPcap,还须指定开发包中的头文件目录(Include)和 静态链接库目录(Lib)   1.运行WinPcap 程序,出现"无法找到组件"对话框错误: 没有找到wpcap.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。 解决方法:安装WinPcap   2.在VC6.0中编译WinPcap程序,出现下面错误: fatal err...

阅读全文>>

ė143次浏览 60条评论 0

Select 多线程通信,模型实例

流沙 | C/C++ | 2018-07-22
主要理解select函数,涉及到一些 宏和 数组定义 分为两端 Server端: // soctet_server.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string.h> #include <stdlib.h> #include <Winsock2.h> #pragma comment(lib,"Ws2_32.lib"...

阅读全文>>

ė113次浏览 60条评论 0

CreateThread()之后又马上CloseHandle()

流沙 | C/C++ | 2018-07-21
很多程序在创建线程都这样写的:  ............  ThreadHandle = CreateThread(NULL,0,.....);  CloseHandel(ThreadHandle );  。。。。。  这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closing a thread handle does not terminate the associated thread. To remove ...

阅读全文>>

ė84次浏览 60条评论 0

sockaddr和sockaddr_in

流沙 | C/C++ | 2018-07-21
sockaddr结构体 struct sockaddr {  unsigned short sa_family; // 地址族, AF_xxx  char sa_data[14]; //14字节的协议地址 };  上面是通用的socket地址 sockaddr_in的结构体 struct sockaddr_in {  short int sin_family; //地址族,AF_xxx 在socket编程中只能是AF_INET  unsigned short...

阅读全文>>

ė95次浏览 60条评论 0

SetWindowsHookEx 测试

流沙 | C/C++ | 2018-07-05
LRESULT CALLBACK GameProc( int code, WPARAM wParam, LPARAM lParam ) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if((wParam == VK_HOME)&&(lParam&(1<<31))) { //AfxMessageBox("www.gyarmy.com"); //展示对话框 if(m_dialog == NULL) { m_dialog...

阅读全文>>

ė181次浏览 60条评论 0

硬编码——经典定长指令

流沙 | C/C++ | 2018-02-08
经典定长指令上(修改寄存器) 1、PUSH/POP 特点: 0x50 PUSH EAX 1、记住32位、16、8位的通用寄存器,按照顺序记住. 0x51 PUSH ECX 0x52 PUSH EDX 2、将操作数编码到指令当中 0x53 PUSH EBX 0x54 PUSH ESP 0x55 PUSH EBP 0x56 PUSH ESI 0x57 PUSH EDI 0x58 POP EAX 0x59 POP ECX 0x5A POP EDX 0x5B POP EBX 0x5C POP...

阅读全文>>

ė398次浏览 60条评论 0

进程通信 - 匿名管道

流沙 | C/C++ | 2018-02-06
0x01 核心代码 父进程: HANDLE hRead; HANDLE hWrite; SECURITY_ATTRIBUTES sa; sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; sa.nLength = sizeof(SECURITY_ATTRIBUTES); if(!CreatePi...

阅读全文>>

ė202次浏览 60条评论 0

进程通信 - 共享内存

流沙 | C/C++ | 2018-02-06
0x01 核心代码 发送端代码: HANDLE hMapObject; HANDLE hMapView; //创建FileMapping对象 hMapObject = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,TEXT("shared")); if(!hMapObject) { MessageBox(NULL,TEXT("共享内存失败"),TEXT("Error"),MB_OK); ...

阅读全文>>

ė236次浏览 60条评论 0

进程通信 - SendMessage

流沙 | C/C++ | 2018-02-06
核心代码: 发送端代码: HWND hwnd = ::FindWindow(NULL,TEXT("接收端窗口名")); if(hwnd == NULL) { MessageBox(0,TEXT("没找到窗口"),TEXT("ERROR"),MB_OK); } else { // 发送消息 //SendMessage(hwnd,WM_USER+0x1,NULL, (LPARAM)100...

阅读全文>>

ė214次浏览 60条评论 0

测试InlineHook

流沙 | C/C++ | 2018-02-04
0x01主要是针对内部函数的hook 这里有需要注意的地方 内部含糊的地址 HOOK的位置 保存现场: pushfd  pushad 原本硬编码的恢复 extern "C" _declspec(naked)void HookProc() { //保存现场 _asm { pushad pushfd } //获取寄存器 _asm { mov reg.Eax,eax mov reg.Ecx,ecx mov reg.Ebx,ebx mov ...

阅读全文>>

ė247次浏览 60条评论 0

Ɣ回顶部