
WindowsC++编程
文章平均质量分 81
WindowsC++编程,在Windows下面的编程,包含系统编程,内存编程,文件编程,网络编程,安全编程,驱动编程等等。
尹成
尹成微信18510341407,助理微信18514203048
展开
-
基于VC++实现PE的修改编程
在Windows系统下的可执行文件的一种(还有NE、LE),是微软设计、TIS(Tool Interface Standard,工具接口标准)委员会批准的一种可执行文件格式。PE的意思是Portable Executable(可移植可执行)。所有Windows下的32位或64位可执行文件都是PE文件格式,其中包括DLL、EXE、FON、OCX、LIB和部分SYS文件。 DOS-stub(DOS-头原创 2012-05-11 18:08:35 · 4587 阅读 · 0 评论 -
基于VC++实现APC注入
请见代码,向指定进程插入钩子#include "stdafx.h"#define _WIN32_WINNT 0x0400#include #include #include #include using namespace std;#define DEF_BUF_SIZE 1024// 用于存储注入模块DLL的路径全名char szDllPa原创 2012-05-11 18:17:57 · 3882 阅读 · 0 评论 -
VC++实现DLL注入
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 PROCESS_VM_OPERATION | //允许远程VM操作 PROCESS_VM_WRITE, //允许远程VM写 FAL原创 2012-05-28 21:46:54 · 4891 阅读 · 0 评论 -
VC++ 实现线程注入
在基于黑客软件、杀毒软件、系统应用软件开发过程中,需要使用一种方式:将外部DLL通过线程形式注入到其他进程中。这样的过程就叫注入线程或者叫线程注入。 #include "stdafx.h" #include "windows.h" // ========== 定义一个代码结构,本例为一个对话框============ struct MyData { cha原创 2012-05-29 15:42:17 · 3086 阅读 · 0 评论 -
基于Visual C++实现输入法拦截
我们想知道用户输入了什么吗,那么我们可以拦截输入法吗,当然可以我们先实现钩子#include "windows.h"#include "imm.h"#include "stdio.h"//#define HOOK_API __declspec(dllexport) HHOOK g_hHook = NULL; //hook句柄原创 2012-06-08 14:29:05 · 6518 阅读 · 1 评论 -
VC++实现IE定向劫持跳转
建立黑名单,防范钓鱼网站#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAb原创 2012-06-08 15:55:37 · 4698 阅读 · 0 评论 -
VC++实现U盘开机锁
请见代码分析#include #include #include #include #include #include #define MAX_DEVICE 256wchar_t USBSerial[5][100] = {TEXT("")};int gTag = 0;DEFINE_GUID(UsbClassGuid, 0xa5dcbf10L, 0x6530, 0x11d2,原创 2012-07-16 15:50:11 · 6380 阅读 · 0 评论 -
VC++实现无进程无dll线程注射技术
请见代码分析,实现线程注射#include "stdafx.h"#include "windows.h"#include "stdio.h"#include "Psapi.h"#include "Tlhelp32.h"//获得加载的DLL模块的信息,主要包括模块基地址和模块大小BOOL GetThreadInformation(DWORD ProcessID,char* Dllfu原创 2012-07-16 15:52:35 · 5144 阅读 · 1 评论 -
VC++实现浏览器自动填表
#include "stdafx.h"#include "EnumFormVal.h"#include CComModule _Module; // 由于要使用 CComDispatchDriver ATL的智能指针, // 所以声明它是必须的#include // 所有 IHTMLxxxx 的接口声明#include #ifdef _D原创 2012-07-26 17:43:07 · 10196 阅读 · 3 评论 -
VC++另类实现进程插入
// WaiGuaTestDlg.cpp : implementation file//#include "stdafx.h"#include "WaiGuaTest.h"#include "WaiGuaTestDlg.h"#include "Tlhelp32.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstati原创 2012-08-02 11:47:39 · 2724 阅读 · 0 评论 -
vC++实现遍历桌面和快速启动里的所有快捷方式,判断快捷方式是不是浏览器,如果是则删除快捷方式参数
#include "stdafx.h" #include "svchost.h" #include "svchostDlg.h" #include #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框原创 2012-08-15 13:16:32 · 5784 阅读 · 0 评论 -
VC++实现感染文件式加载DLL文件
源码分析如下 #include "windows.h" #include "stdio.h" //判断文件是否为合法PE文件 BOOL CheckPe(FILE* pFile) { fseek(pFile,0,SEEK_SET); BOOL bFlags=FALSE; WORD IsMZ原创 2012-08-15 13:25:25 · 3252 阅读 · 0 评论 -
VC++1.5K字节实现下载并远程注入
#pragma comment(linker,"/BASE:0x13140000 /ENTRY:InjectPro /FILEALIGN:0x200 /MERGE:.data=.text /MERGE:.rdata=.text /SECTION:.text,EWR /IGNORE:4078") #pragma comment(lib, "urlmon.lib") #includ原创 2012-08-15 14:12:50 · 3220 阅读 · 0 评论 -
VC++实现禁止上网
1、使用windows Hook,监视IE或其他浏览器的地址栏,发现有www或http字样的,则更改这些url,使之不能访问相应的url。这种方法实现可能相对容易,但是不准确,不能限制所有的上网软件。糊弄未成年小孩可能比较有效。 2、基于SPI的数据包过滤。通过编写自己的Winsock服务提供者(SPI),过滤掉不符合规则的包,如过滤访问Internet的数据包。下面会详述此方法。 3、使用W原创 2012-08-15 14:42:59 · 5401 阅读 · 2 评论 -
VC++实现获取DNS服务器
代码如下,我们进行软路由编程的时候,必须获取DNS解析服务器#include #include #include #pragma comment(lib, "Iphlpapi.lib")int main(){ FIXED_INFO fi; ULONG ulOutBufLen = sizeof(fi); // 获取本地电脑的网络参数 if(::Ge原创 2012-09-04 16:54:40 · 3519 阅读 · 0 评论 -
VC++实现获取所有的TCP与UDP链接
我们亲自来实现获取所有的TCP与UDP的网络链接。 /*定义协议格式定义协议中使用的宏 */#ifndef __PROTOINFO_H__#define __PROTOINFO_H__#define ETHERTYPE_IP 0x0800#define ETHERTYPE_ARP 0x0806typedef struct _ETHeader // 1原创 2012-09-04 16:57:04 · 3770 阅读 · 0 评论 -
VC++基于LSP拦截数据封包
LSP即分层服务提供商,Winsock 作为应用程序的 Windows 的网络套接字工具,可以由称为“分层服务提供商”的机制进行扩展。Winsock LSP 可用于非常广泛的实用用途,包括 Internet 家长控制 (parental control) 和 Web 内容筛选。在以前版本的 Windows XP 中,删除不正确的(也称为“buggy”)LSP 可能会导致注册表中的 Winsock原创 2012-09-04 17:00:35 · 8333 阅读 · 2 评论 -
VC++在局域网基于winpcap实现QQ号码IP嗅探
在局域网上,理论上所有传输的数据会经过每个机器,所以这就为我们嗅探提供了遍历。、下面我来编程实现QQ号码的IP嗅探。#include "stdafx.h"#include "pcap.h"#include #include "Iphlpapi.h"#include "protocol.h"#pragma comment(lib,"wpcap.lib")#pragma c原创 2012-09-04 17:22:33 · 4580 阅读 · 2 评论 -
VC++实现改变网关
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求原创 2012-09-04 18:08:27 · 5196 阅读 · 1 评论 -
VC++实现获取本地主机网卡信息
我们在进行网络编程的时候,经常需要获取本地主机,网卡的信息,我们代码实现如下。#include "../common/initsock.h"#include #include #include #include "protoutils.h"#include "ProtoPacket.h"#pragma comment(lib, "Iphlpapi.lib")DWORD W原创 2012-09-04 18:10:03 · 4419 阅读 · 1 评论 -
VC++实现ip数据包解包TCP解包HTTP
我们需要监控用户的互联网行为,则需要检测HTTP如何在网络层截取HTTP呢,众所周知,网站是80号端口代码实现如下#include "../common/initsock.h"#include "../common/protoinfo.h" #include #include #pragma comment(lib, "Advapi32.lib")CInitSock theSoc原创 2012-09-04 18:12:14 · 3004 阅读 · 1 评论 -
VC++实现软路由层面的ping
大家都知道ping ,如果是网络层该怎么实现呢,代码实现如下#include "../common/initsock.h"#include "../common/protoinfo.h"#include "../common/comm.h"#include CInitSock theSock;typedef struct icmp_hdr{ unsigned char原创 2012-09-04 18:14:58 · 3002 阅读 · 0 评论 -
VC++实现遍历所有进程的TCP与UDP链接
VC++实现遍历所有进程的TCP与UDP链接代码如下,请见注释讲解#include #include #include #include #pragma comment(lib, "Iphlpapi.lib")#pragma comment(lib, "WS2_32.lib")typedef struct { DWORD dwState; // 连接原创 2012-09-04 18:17:54 · 4414 阅读 · 0 评论 -
VC++实现IP与ARP信息获取,可以同理实现APR攻击
ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认 其物理地址的应答,这样的数据包才能被传送出去。RARP(逆向ARP)经常在无盘工作站上使用,以获得它的逻辑IP地址。地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址原创 2012-09-04 18:21:02 · 5132 阅读 · 7 评论 -
基于VC++用 Detours实现SendPtr的拦截HTTP
---- Detours是微软开发的一个函数库(源代码可在http://research.microsoft.com/sn/detours 免费获得), 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是: 拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为一个已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本原创 2012-09-04 19:14:05 · 3198 阅读 · 0 评论 -
VC++实现全局钩子勾住消息对话框
#ifndef _HOOKAPI_H #define _HOOKAPI_H class CHOOKAPI { public: LPVOID pOldFunEntry, pNewFunEntry ; // 初始函数地址、HOOK后的函数地址 BYTE bOldByte[5], bNewByte[5] ; // 原始字节、目标字节 public: CHOOKAPI (原创 2012-10-09 20:19:17 · 4440 阅读 · 0 评论 -
VC++实现全局钩子勾住textout金山快译的原理实现
大家都对金山快译可以讲英文软件翻译成中文软件感到惊奇其实就是全局钩子勾住textout函数钩子头文件如下void __declspec(dllexport) WINAPI InstallHook(BOOL,DWORD); BOOL WINAPI UnInstallHook(); LRESULT CALLBACK GetMsgProC(int code,WPARAM wParam,LPARAM原创 2012-10-09 20:23:49 · 7308 阅读 · 3 评论 -
基于VC++开发InlineHook网络数据发送接收函数
大家都懂,很多时候开发项目需要修改网络数据,代码如下,请柬代码分析#include "stdafx.h" #include #include #include #ifdef _MANAGED #pragma managed(push, off) #endif #define HOOK_API extern "C" _decls原创 2012-10-09 20:31:31 · 4986 阅读 · 4 评论 -
VC++实现注册表监控
//监视HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run项#include //定义一个监视注册表启动项的函数int reg(){ HANDLE hNotify; HKEY hKeyx; //DWORD dwRes; hNotify = CreateEvent(NULL, //不使原创 2012-10-24 15:22:20 · 5216 阅读 · 0 评论 -
VC++分析数据包实现分析http协议
超文本传送协议 (HTTP-Hypertext transfer protocol) 是分布式,协作式,超媒体系统应用之间的通信协议。是万维网(world wide web)交换信息的基础。 它允许将超文本标记语言 (HTML) 文档从 Web 服务器传送到 Web 浏览器。HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。您可以单击一个链接来访问其它文档、图像或多媒体对象,原创 2012-11-07 18:06:02 · 3338 阅读 · 1 评论 -
VC++分析数据包实现TCP协议的分析
TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。 TCP作用 TCP建立连接时的三次握手在因特网协原创 2012-11-07 18:10:27 · 3814 阅读 · 0 评论 -
VC++分析数据包实现UDP协议分析
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。用户数据报协议 UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台原创 2012-11-07 18:16:14 · 3920 阅读 · 0 评论 -
VC++实现ip数据包分析
IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。另外,IP还有进入原创 2012-11-07 18:19:49 · 4679 阅读 · 1 评论 -
VC++分析数据包实现ICMP协议分析
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP协议是一种面向非连接的协议,用于传输出错报告控制信息。它是一个非原创 2012-11-07 18:24:15 · 3658 阅读 · 0 评论 -
VC++分析数据包实现POP3协议分析
POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是原创 2012-11-07 18:31:03 · 4033 阅读 · 1 评论 -
VC++分析数据包实现FTP协议分析
FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。 FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端-服务器协议,能操作原创 2012-11-07 18:26:30 · 3381 阅读 · 1 评论 -
VC++分析数据包实现Telnet协议分析
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务原创 2012-11-07 18:28:26 · 4453 阅读 · 0 评论 -
VC++分析数据包实现SMTP协议分析
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用原创 2012-11-07 18:33:18 · 5628 阅读 · 0 评论 -
VC++基于winpcap实现数据包分析
winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面。 Winpcap是一原创 2012-11-07 18:46:44 · 9200 阅读 · 2 评论 -
VC++实现遍历所有网络端口
在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。协议端口 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!端口是通原创 2012-11-07 18:52:13 · 5665 阅读 · 3 评论