摘要:#include using namespace std; template Type maxx(Type a,Type b) { return (a > b)?a:b; } int main() { char a[] = "yifiii"; char b[] = "aifii"; cout << maxx(a,b) <<endl; }
阅读全文
摘要:VEH:向量化异常处理程序(进程相关)VCH:向量化异常处理程序,总是在最后调用(进程相关)SEH:结构化异常处理程序,fs:[0](线程相关)UEF:TopLevalEH,基于SEH的 EH全称就是ExceptionHandler,中文意为异常处理器。EH(异常处理程序)是做什么的呢,就是当程序发
阅读全文
摘要:typedef struct _LDR_DATA_TABLE_ENTRY32S { LIST_ENTRY32 InLoadOrderLinks; LIST_ENTRY32 InMemoryOrderLinks; LIST_ENTRY32 InInitializationOrderLinks; ULONG DllBase; ULONG EntryPoint...
阅读全文
摘要:指针 存地址 引用 变量别名 (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元; 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p
阅读全文
摘要:/* Name: 循环队列 Copyright: Author: yifi Date: 23/03/17 15:12 Description: */ #include #include using namespace std; template class CycleQueue{ private: unsigned ...
阅读全文
摘要:/* Name: 模拟鼠标点击事件 Copyright: Author: yifi Date: 23/03/17 14:31 Description: mouse_event(MOUSEEVENTF_XDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_XUP,0,0,0,0); */ #include ...
阅读全文
摘要:/* Name: 模拟鼠标点击事件 Copyright: Author: yifi Date: 23/03/17 14:31 Description: mouse_event(MOUSEEVENTF_XDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_XUP,0,0,0,0); */ #include ...
阅读全文
摘要:第一:匿名管道只能实现本地进程之间的通信,不能实现跨网络之间的进程间的通信。 第二:匿名管道只能实现父进程和子进程之间的通信,而不能实现任意两个本地进程之间的通信。 第三:所需要的系统的开销也就比命名管道小很多,这也许是匿名管道存在的价值吧。
阅读全文
摘要:参考链接:http://bbs.pediy.com/thread-144492.htm LPC即是”本地过程调用(Local Procedure Call)”。 端口是一种面向连接的通信机制,通信的双方需要先建立起“连接”。这种连接一般建立在用户进程之间。在建立了连接的双方之间有几种交换报文的方法:
阅读全文
摘要:#include "NamedPipeServer.h" #include using namespace std; CNamedPipeServer::CNamedPipeServer() { } CNamedPipeServer::~CNamedPipeServer() { } void CNamedPipeServer::CreateNamedPipeInServer() ...
阅读全文
摘要:/*邮槽(Mailslot)也称为邮件槽,其是 Windows 提供的一种用来实现进程间通信的手段, 其提供的是基于不可靠的,并且是单向数据传输的服务。 邮件槽只支持单向数据传输,也就是服务器只能接收数据,而客户端只能发送数据, 何为服务端?何为客户端? 服务端就是创建邮槽的那一端,而客户端就是已存在的邮件槽的那一端。 还有需要提及的一点是,客户端在使用邮槽发送数据的时候只有当数据的长...
阅读全文
摘要:原理:Windows系统支持剪贴板IPC的基本机制是由系统预留的一块全局共享内存,可用于被各进程暂时存储数据。写入进程首先创建一个全局内存块,并将数据写到该内存块;接受数据的进程通过剪贴板机制获取此内存块的句柄,并完成对该内存块数据的读取。 Windows系统在USER32.dll中为剪贴板提供了一
阅读全文
摘要:星辰大海才是真正想要的,纠结了好半天,终于想通了。
阅读全文
摘要:在VMCS架构中,当发生VMX operation模式的Root 与 non Root环境切换时VMCS用来配置当前发生切换的逻辑处理器的状态及执行环境 一个逻辑处理器管理着多个VMCS 同一时刻 一个逻辑处理器只有一个VMCS是current-VMCS VMCS三种状态 1) activity属性
阅读全文
摘要:Intel提供3个层面的虚拟化技术(Intel Virtualization Technology) 1.基于处理器的虚拟化技术(Intel VT-X) 全称为 Virtualization Technology for x86 2.基于PCI总线域设备实现的I/O虚拟化技术(Intel VT-D)
阅读全文
摘要:在系统平台里两个重要的数据结构: PCB 每个逻辑处理器对应一个PCB结构 Processor Control Block 处理器控制块 struc PCB ;; ;; 系统管理区域基址, gs:[0] 取得 PCB 管理区基址,这个基址是 virtual address ;; 而 PhysicalBase 记录着物理地址!...
阅读全文
摘要:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3862&konwledgeId=42 https://hihocoder.com/problemset/problem/1482
阅读全文
摘要:堆栈的区别: 一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 二、堆栈缓存方式区别: 1、栈使用
阅读全文
摘要:/*************************************************************************************** * AUTHOR : yifi * DATE : 2016-1-20 * MODULE : EnumKernelModules.H * * IOCTRL Sample Driver * * Description: ...
阅读全文
摘要:// SoftWareManagerDlg.cpp : 实现文件 // #include "stdafx.h" #include "SoftWareManager.h" #include "SoftWareManagerDlg.h" #include "afxdialogex.h" #include "MyList5.h" #ifdef _DEBUG #define new DEBUG_NEW...
阅读全文
摘要://////////////leo/////////// ///////IE information/////// bool SoftInfo(SOCKET s,WSAEVENT hEvent) { SOFTINFO softinfo; DWORD retLen; HKEY m_key,m_key2; char m_SubKey[255]="SOFTWA...
阅读全文
摘要:#ifndef USE_H_ #define USE_H_ #include #include #include using namespace std; //字符类型 wchar_t char //获取字符长度 wcslen() strlen() //连接两个字符串 wcscat() strcat() //复制字符...
阅读全文
摘要:USN是Update Service Number Journal or Change Journal的英文缩写,直译为“更新序列号”,是对NTFS卷里所修改过的信息进行相关记录的功能。当年微软发布Windows 2000时,建立NTFS 5.0的同时,加入了一些新功能和改进了旧版本的文件系统,为它
阅读全文
摘要:void CAAADlg::OnSysrise() { // TODO: 在此添加命令处理程序代码 ::ShowWindow(m_hWnd, SW_HIDE); // 2. 获取当前程序路径 WCHAR szApplication[MAX_PATH] = { 0 }; DWORD cchLength = _countof(szApplication); ...
阅读全文
摘要://****************************************************************************************/ //获取DNS #include "DNS.h" //全局变量 PDNSADDRANDURL global_pwsadata; NTSTATUS DriverEntry( PDRIVER_OBJ...
阅读全文
摘要:/*************************************************************************************** * AUTHOR : yifi * DATE : 2016-10-8 * MODULE : ObjectDir.C * * Command: * Source of IOCTRL Sample Driver...
阅读全文
摘要:// PE注入.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include #pragma comment (lib, "winmm.lib") #pragma comment (lib, "kernel32.lib") /*获取进程ID号*/ DWORD GetP...
阅读全文
摘要:#include "x64Inject.h" HANDLE WINAPI ThreadProc(PTHREAD_DATA data) { data->fnRtlInitUnicodeString(&data->UnicodeString,data->DllName); data->fnLdrLoadDll(data->DllPath,data->Flags,&data->Un...
阅读全文
摘要:Windows中的2种类型的APC: 用户模式 APC执行在用户模式下的线程的上下文中,必须得到线程的允许才能得到执行 同时用户APC还需要目标进程处在Alertable等待状态才能被成功的调度执行 在内核模式中 可以执行KeWaitForSingleObject.....,在用户模式下可以调用SleepEx..... 当用户APC 投递到线程中 调用上面函数 执行条件满足时去执行...
阅读全文
摘要:// Inject.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "Inject.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 唯一的应用程序对象 CWinApp theApp; using namespace std; int main() { int nRet...
阅读全文
摘要:HHOOKWINAPISetWindowsHookExW( __in int idHook, //HookType __in HOOKPROC lpfn, //HOOkProcedure 钩子程序 __in_opt HINSTANCE hmod, // __in DWORD dwThreadId);
阅读全文
摘要:BOOL EnableDebugPri64() { typedef long (__fastcall *pfnRtlAdjustPrivilege64)(ULONG,ULONG,ULONG,PVOID); pfnRtlAdjustPrivilege64 RtlAdjustPrivilege; DWORD dwRetVal = 0;...
阅读全文
摘要://读取操作系统的名称 void CPCHunterDlg::GetSystemName(CString& osname) { SYSTEM_INFO info; //用SYSTEM_INFO结构判断64位AMD处理器 GetSystemInfo(&info); //调用GetSystemInfo函数填充结构 OSVERSIONINFOEX os;...
阅读全文
摘要:在内核中 进程是靠EPROCESS来识别的 dt _EPROCESS fffffa801aaecb30 nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x160 ProcessLock : _EX_PUSH_LOCK +0x168 CreateTime : _LARGE_INTEGER 0x1d298d...
阅读全文
摘要:参考链接:http://www.cnblogs.com/HsinTsao/p/6399459.html 自己感觉这个方法不行
阅读全文
摘要:Github上看到的一个Demo:https://github.com/cetfor/AntiDBG 检测一个Demo是否被调试 无非就是从四个方面进行入手: 内存 通过查询窗口、父进程、PEB、DbgPort等标志位检测 CPU 通过CTX标志位进行判断 时间 通过比较时间确定是否被调试 异常 各
阅读全文
摘要:断断续续看了两个月,终于基本上理解了VT,这个理解能力也是够了。 参考程序:VT_demo、HyperBone、VirtualDbg、VirtualDbgHide 这几个程序在Github上都可以下到 由于阅读别人的源码 就不放了 今天终于程序中悟出了VT的皮毛 纪念一下。
阅读全文
摘要:http://www.pediy.com/kssd/pediy11/111876.html 三种断点分别对应的异常类型及处理: 1. 软件断点(INT3):对应的异常是 EXCEPTION_BREAKPOINT,处理方式为恢复代码为原来字节,并将EIP减一,并设置单步以便进入单步后重新设置这个一般断
阅读全文
摘要:一、套接字模型 Winsock以两种模式执行I/O操作:阻塞和非阻塞。 在阻塞模式下,执行 I/O 的 Winsock 调用(如 send 和 recv) 直到操作完成才返回。在非阻塞模式下,Winsock 函数会立即返回。 1)阻塞模式 套接字创建时,默认工作在阻塞模式下。例如,对 recv 函数
阅读全文
摘要:1 #include "../common/InitSock.h" 2 #include <stdio.h> 3 CInitSock initSock; // 初始化Winsock库 4 int main() 5 { 6 // 创建套接字 7 SOCKET sListen = ::socket(AF
阅读全文