![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序设计
tutucoo
这个作者很懒,什么都没留下…
展开
-
detours钩子库的简单使用
detours是微软的钩子库,以下是简单的使用#include "pch.h"#include <Windows.h>#include "detours.h"#include <stdio.h>#pragma comment(lib,"detours.lib")static int(WINAPI* OLD_MessageBoxW)(HWND hWnd, LP...原创 2018-12-24 16:37:43 · 4395 阅读 · 0 评论 -
Google C++ 命名约定
通用命名规则函数命名, 变量命名, 文件命名要有描述性; 少用缩写.int price_count_reader; // 无缩写int num_errors; // "num" 是一个常见的写法int num_dns_connections; // 人人都知道 "DNS" 是什么int n; // 毫无意义.int...原创 2018-12-20 14:14:05 · 270 阅读 · 0 评论 -
Vcpkg使用方法
概观Vcpkg可帮助您管理Windows,Linux和MacOS上的C和C ++库。这个工具和生态系统在不断发展; 您的参与对其成功至关重要!开始使用管理员身份打开powershell后,依次执行以下指令git clone https://github.com/Microsoft/vcpkg.gitcd vcpkg.\bootstrap-vcpkg.bat.\vcpkg integr...原创 2018-12-18 14:37:04 · 8915 阅读 · 0 评论 -
Windows网络编程(九):消息选择模型
概述这种模型的使用需要在调用完socket()函数以后调用WSAAsyncSelect(),这个函数的声明如下:int WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,long lEvent)s:需要使用异步模式的套接字wMsg:用户自定义的消息,这个自定义消息可以是WM_USER+ 200,通过将这个消息跟回调函数映射,可以在接...原创 2018-11-26 15:57:10 · 401 阅读 · 1 评论 -
Windows网络编程(八):非阻塞模式(异步模式)
前面几篇文章介绍的无论是TCP通信还是UDP通信都是阻塞式的,它们在执行recv或recvfrom时会在线程中等待,直到接收到信息为止,所以在应用的时候一般都需要开辟子线程,在子线程里专门做这类事情,不然它会影响主线程的运行。&nbsp;系统提供三种网络模型去处理这类需求,它们都基于异步模式,在异步模式下执行recv或recvfrom时不会在线程中等待,它会接着执行下去,当接收到消息时,系...原创 2018-11-26 15:55:35 · 645 阅读 · 0 评论 -
Windows网络编程(七):原始套接字开发
在调用socket()函数时,如果将第二个参数填为SOCK_RAW,代表创建的是原始套接字类型,第三个参数可以选择IPPROTO_ICMP、IPPROTO_TCP、IPPROTO和IPPROTO_RAW。#include &lt;winsock2.h&gt;#pragma comment (lib, "ws2_32")struct icmp_header{ unsigned char...原创 2018-11-25 22:27:27 · 1887 阅读 · 0 评论 -
Windows网络编程(六):IP Helper
IP Helper是Windows系统与IP配置和管理的重要接口,通过IP Helper 可以获得很多跟网络配置相关的信息。比如说本机IP、网关设置、网卡数量和连接信息。#include &lt;windows.h&gt;#include "iphlpapi.h"/* 全局变量 */ULONG ulOutBufLen;DWORD dwRetVal;HANDLE hHeap = GetP...原创 2018-11-25 22:25:33 · 1033 阅读 · 0 评论 -
Windows网络编程(五):多线程消息处理
对于服务端来说,调用accept()函数同意客户端连接的请求后,需要处理完与这个客户端的通信后回到accept()继续等待下一个客户端的连接,如果一个客户端请求连接时服务端并没有在accept()处等待,客户端是无法成功连上服务端的,因此并发客户端连接的服务端必然是多线程的。服务端:#include &lt;WinSock2.h&gt;#include &lt;windows.h&gt;...原创 2018-11-25 22:24:24 · 315 阅读 · 0 评论 -
Windows网络编程(四):建立UDP连接和收发消息
UDP消息的发送和接收需要UDP连接,所以,上面的TCP连接已经不适用了,具体的区别主要有:创建Socket时参数不同创建服务端时不需要listen和accept操作创建客户端时不需要connect操作服务器需要bind操作,客户端不需要。发送和接收UDP消息要用到sendto和recvfrom两个函数。先来看看接收消息,当执行recvfrom时,线程会进入等待,直到接收到UDP消息为止。...原创 2018-11-25 22:21:18 · 1657 阅读 · 0 评论 -
Windows网络编程(三):建立TCP连接和收发消息
先看服务端:// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define _WINSOCK_DEPRECATED_NO_WARNINGS //这个声明要在stdafx.h的后面,但要在其他头文件的前面#include &lt;winsock2.h&gt;#include &lt;stdio...原创 2018-11-25 22:17:37 · 1810 阅读 · 0 评论 -
Windows网络编程(二):Socket简介
Socket简介Socket被称为套接字,描述了IP和端口等信息,是一个通信链的句柄。微软专门开发了一套支持多种网络协议的网络编程接口,叫做Winsock,Winsock是Windos SDK的一部分,全称Windows Sockets API。它对多种协议做了封装,Socket就是Winsock对TCP协议的封装。vc++是微软开发的一套开发工具,它不仅支持C和C++,还提供一套可视化编程...原创 2018-11-25 22:14:45 · 283 阅读 · 0 评论 -
Windows网络编程(一):TCP/IP协议
概述这个协议是一个四层协议:应用层,主要协议有HTTP、FTP等传输层,主要协议有TCP、UDP等网络层,主要协议有IP等链路层,主要协议有ICMP等下层中的协议总是为上层中的协议服务的,比如说应用层的HTTP、FTP协议都是基于TCP协议的,应用层的DNS协议基于UDP协议。网络层的IP协议中记录了网络主机的IP地址,TCP协议中记录了端口号,通过这两个数据可以定位到某台主机上的...原创 2018-11-25 22:11:05 · 745 阅读 · 0 评论 -
代码重定位技术
代码重定位技术一般用于远程线程注入和病毒感染技术当中,当注入和感染的代码使用了全局变量,全局变局的地址就需要进行重定位,否则代码无法正常执行。这是因为,代码注入其他进程空间以后,注入的位置跟原来程序中的位置不一样,而全局变量在汇编层其实就是一个偏移,因此无法再通过原来的偏移找到全局变量了。既然如此,我们只要找到注入位置的差值,我们就能一直准确定位到我们想要的全局变量了。所以写入到目标进程的代码...原创 2018-12-14 17:16:31 · 408 阅读 · 0 评论 -
一种简单的PE压缩算法(Win32汇编)
这种算法的核心逻辑是:在对PE进行压缩的时候,如果碰到连续的多个0,比如说0000 0000,会将它变成0 8,0后面的8用来记录0的个数。.386.model flat,stdcalloption casemap:noneinclude windows.incinclude user32.incincludelib user32.libinclude kernel32.incin...原创 2018-12-12 11:23:13 · 1193 阅读 · 0 评论 -
病毒分析报告模板
基本信息报告名称:作者:报告更新日期:样本发现日期:样本类型:样本文件大小/被感染文件变化长度:样本文件MD5 校验值:样本文件SHA1 校验值:壳信息:可能受到威胁的系统:相关漏洞:已知检测名称:简介本节的主要目的是简单介绍样本的目的,类型,一两句画龙点睛即可。例如:[样本名称 ]是一个针对FTP软件用户,窃取系统及个人信息的木马。被感染系统及网络症状本节的主...转载 2018-12-07 00:21:10 · 3558 阅读 · 0 评论 -
手动获取函数地址
编写病毒程序时,由于各种原因不能直接调用函数,所以需要手动获取到函数然后调用它。最常见手动获取函数地址的方法是通过获取kernel32.dll句柄,然后遍历kernel32.dll的导出表找到它的GetProcAddress()函数,再通过向这个函数传递函数名就可以获取函数的地址了,最后通过一个函数指针就可以调用获取的函数。主要步骤1.通过fs寄存器获取到TEB的地址2.通过teb+0x30...原创 2018-11-27 15:36:12 · 2951 阅读 · 0 评论 -
Win32程序命名约定
原创 2018-11-11 11:49:52 · 374 阅读 · 0 评论 -
vc++常见编码规范及其应用
概述对于众多的编码规范一直没有一个清晰的认识,本文旨在理清这些编码规范的定义和特点。ASCIIASCII全称是美国国家信息交换标准码,它是用于字符转换的一个标准,长度是7位,可以标记128个不同的字符,但是这个标准极其有限,比如说它就无法支持中文的编码,甚至连其他英语国家的需求也无法满足,比如说英国的英镑符号。ANSIANSI是美国的一家非营利制定国家标准的机构,ANSI也被称为微软的扩...原创 2018-11-11 18:28:13 · 325 阅读 · 0 评论 -
Windows程序和消息机制(一):窗口程序的创建
Windows窗口程序的实现上面介绍了Windows下的消息机制,系统发送消息到程序,程序接收到消息后的处理统称为窗口过程。要实现窗口过程当然需要先创建一个窗口程序了。窗口程序的创建很简单,主要分为以下几个步骤:注册窗口类创建窗口及显示窗口创建消息循环编写窗口过程函数接下来详细说下细节。注册窗口类注册窗口要做的事情主要是设定窗口的属性和特征,通过调用Regist...原创 2018-11-25 21:59:39 · 1079 阅读 · 0 评论 -
Windows程序和消息机制(二):消息有关的函数
不同窗口程序可以通过消息进行交互,主要用到的函数如下:FindWindow获取一个窗口的句柄。HWND FindWindow( LPCTSTR lpClassName,// 类名 LPCTSTR lpWindowName// 窗口名 );通过在参数中传递一个类名或者窗口名就可以返回一个窗口的句柄,类名可以通过spy++获取,窗口名是指窗口的标题。SendMessag...原创 2018-11-25 22:00:33 · 199 阅读 · 0 评论 -
Windows程序和消息机制(三):消息与进程间通信
自定义消息与进程间通信窗口程序可以接收自定义的消息类型,前提是通信的进程声明了这种消息类型,声明的方法很简单,WM_USER加一个值就可以了,一般加的值从0x400开始,其他的值已经被系统使用了。实现一个完整的自定义消息需要进行以下步骤:1.声明自定义消息类型: WM_UMSG+0x4002.添加消息映射: BEGIN_MESSAGE_MAP(CUserWMD...原创 2018-11-25 22:02:48 · 1246 阅读 · 0 评论