![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows
文章平均质量分 69
jiangqin115
这个作者很懒,什么都没留下…
展开
-
WinHttp编程步骤
WinHttpOpenWinHttpConnectWinHttpOpenRequestWinHttpAddRequestHeadersWinHttpSendRequestWinHttpReceiveResponseWinHttpQueryHeadersWinHttpReadDataWinHttpCloseHandleintcontextLengthId...原创 2020-03-13 19:51:49 · 697 阅读 · 0 评论 -
Sessions, Window Stations and Desktops(GetDesktopWindow函数得到的桌面句柄, 是Csrss.exe创建的一个窗口)
由于不是搞安全的,对这块的东西一直不是很清楚,今天特意整理下。总的来说,他们的关系如下:我们知道Windows是支持多用户的,Session可以理解为每个用户登录,比如当前登录和远程登陆。Window Stations可以理解为登陆后的不同用户组,我们在任务管理器中可以看到不同的用户名(比如 Richard, system, local service等),其中只有一个活动Station...原创 2019-12-03 23:03:16 · 353 阅读 · 0 评论 -
base64
Base64是一种用64个字符来表示任意二进制数据的方法。Base64的加密原理是将3个8位二进制转换为4个6位二进制,不足6位时高位补0 ,以确保其值为64个可能,这就是Base64来源。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制原创 2017-10-28 18:13:38 · 193 阅读 · 0 评论 -
MD5和SHA1算法的C++实现和使用
MD5算法:MD5.H[cpp] view plain copy#ifndef MD5_H #define MD5_H typedef struct { unsigned int count[2]; unsigned int state[4]; unsigned char b原创 2017-09-13 10:28:45 · 2603 阅读 · 0 评论 -
http协议里的chunked编码与测试
如果有写过http下载的人,或多或少了解一点chunked编码的传输方式。例如笔者最初不知道这个http传输方式,以前能行的代码有一天就突然不行了,抓包才发现数据异样。chunked编码 分块传输编码(Chunked transfer encoding)是只在HTTP协议1.1版本(HTTP/1.1)中提供的一种数据传送机制。以往HTTP的应答中数据是整个一起发送原创 2017-08-24 19:29:31 · 845 阅读 · 1 评论 -
GZIP文件格式简介
GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常 使用GZIP压缩技术来让用户感受更快的速度。原创 2017-08-24 17:45:00 · 1107 阅读 · 0 评论 -
VC 刷新桌面图标和任务栏图标
刷新任务栏图标:[cpp] view plain copySHChangeNotify(SHCNE_ASSOCCHANGED ,SHCNF_IDLIST ,NULL, NULL); 刷新桌面图标:[cpp] view plain copyint nS原创 2016-10-17 23:49:32 · 2586 阅读 · 0 评论 -
设置桌面壁纸时 'IActiveDesktop' : undeclared identifier 的处理
//Added by jiangqin 2016-09-10//修改桌面壁纸的相关接口虽在shlobj.h中定义,但却又依赖宏开关_WININET_//而宏_WININET_在wininet.h定义,必须要将wininet.h声明放在shlobj.h前面//参考:http://blog.csdn.net/sibylle/article/details/2029457//最好将win原创 2016-09-10 10:49:26 · 1557 阅读 · 0 评论 -
GetLastError错误码大全
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数 并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能 担保函数已成功执行。只有在函数调用返回一个错误结果时,这个函数指出的错误结果 才是有效的。通常,只有在函数返回一个错误结果,而且已知函数原创 2016-07-09 00:56:04 · 13131 阅读 · 0 评论 -
VC++执行多条dos命令方法
今天做一个功能模块,使用ffmpeg将网络视频流截图,每秒截取一张jpeg图片:头文件: #include [cpp] view plain?ShellExecute(NULL,_T("open"),_T("cmd.exe"),_T("/c C:\\gifMake\\ffmpeg.exe -i rtmp://s2pchzxmtymn2k.原创 2016-04-04 13:13:04 · 2211 阅读 · 0 评论 -
Mount挂载命令使用方法
语法: mount -t 类型 -o 挂接方式 源路径 目标路径 -t 详细选项: 光盘或光盘镜像:iso9660 DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Windows NT ntfs文件系统:ntfs原创 2016-04-03 17:07:11 · 784 阅读 · 0 评论 -
mount命令(用来挂载硬盘或镜像等)
一 mount命令(用来挂载硬盘或镜像等)用法:mount [-t vfstype] [-o options] device dir1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:DOS fat16文件系统:msdosWindows 9x fat32文件系统:vfatWindows NT ntfs文件系统:ntfsW原创 2016-04-03 12:10:24 · 9746 阅读 · 0 评论 -
获取磁盘列表以及磁盘信息的一些WIN32 API
#include #include // IOCTL control code#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)typedef enum _STORAGE_PROPERTY_ID { Sto原创 2016-04-02 16:19:40 · 1840 阅读 · 1 评论 -
DESKTOP.INI
Desktop.ini文件详解由于有部分病毒会在文件夹下创建desktop.ini文件,目前很多朋友对该文件产生了不完全错误的认识,认为是病毒文件。其实这是错误的,desktop.ini与病毒并没有多深的渊源,desktop.ini是系统可识别的一个文件,作用是存储用户对文件夹的个性设置(用户更换文件夹图标等等都会生成desktop.ini);而病毒所创建的desktop.ini则不同(这原创 2015-12-31 15:54:37 · 2005 阅读 · 0 评论 -
在Windows7中如何创建删除特殊目录?
Windows7中有些特殊目录,例如末尾带“.”的目录,以aux、com1、com2、prn、con、nul等设备名为名的目录等,这些目录因为名称早已被系统占用,用资源管理器是无法创建、访问和删除的,利用这一特点,你可以将特殊目录能当作保险柜使用,例如将个人重要文件保存到里面,别人就看不到它(也无法删除),当然也就不会丢失啦! 一、创建带“.”目录 打造个人保险柜 众所周知,在原创 2015-09-27 12:08:06 · 1440 阅读 · 0 评论 -
PE文件结构简介
PE结构总览图MZ头部又称为DOS头部,该部分用于在DOS下加载可执行程序,是用IMAGE_DOS_HEADER来定义的。DOS残留是一段简单的程序,主要用于输出“This program cannot be run in DOS mode.”类似的字符串。存在DOS头部的原因,关键是为了该可执行程序可以兼容DOS系统。PE头部PE头部保存W原创 2017-09-13 15:28:23 · 261 阅读 · 0 评论 -
DLL的显式调用与隐式调用
一、隐式调用编译程序时需要头文件、lib文件,运行时需要DLL文件,并且运行过程中DLL文件一直被占用。#pragma comment(lib, "Common.lib")二、显式调用编译时什么都不需要,在需要使用DLL中的函数时,通过LoadLibrary()和FindProcAdress()这两个API调用。只需要一个DLL文件即可,而且在需要使用的时候DLL才被占用,使用完毕即解除占用(Fr...原创 2018-06-23 12:03:18 · 1392 阅读 · 0 评论 -
获取文件数字签名证书信息
验证文件数字签名是否有效可以使用函数 WinVerifyTrust取得文件数字签名证书信息需要使用函数 CryptQueryObject。// FileSign.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> #include <wincrypt.h> #includ...原创 2018-05-26 21:11:47 · 4500 阅读 · 1 评论 -
增加右键打开cmd
1.explorer和命令行窗口相互打开在explorer中浏览到某路径时,想要打开命令行窗口执行相关命令,这个场景经常会遇到,而一般的做法就是win+R,输入cmd,然后D:,再cd ...。在win7下可以shift+右键文件夹空白处,这样快捷菜单就多了一个"在此处打开命令窗口"项,如图下面本人将介绍一种DIY方法在注册表HKEY_CLASSES_ROOT\Directory\Backgrou...原创 2018-03-02 14:53:21 · 4761 阅读 · 0 评论 -
关于Windows创建进程的过程
1. 程序的启动当我们通过explorer.exe运行一个程序时,explorer.exe会调用CreateProcess函数请求系统为这个程序创建进程。当然,其它程序也可以调用CreateProcess函数创建进程。系统在为进程分配内部资源,建立独立的地址空间后,会为进程创建一个主线程。我们可以把进程看作单位,把线程看作员工。进程拥有资源,但真正在CPU上运行和调度的是线程。系统原创 2017-11-21 19:38:45 · 5377 阅读 · 0 评论 -
介绍Windows的窗口、消息、子类化和超类化
这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“子类化、超类化”中的“类”是指Windows的窗口类。0原创 2017-11-21 17:49:02 · 2097 阅读 · 0 评论 -
Sessions, Window Stations and Desktops(GetDesktopWindow函数得到的桌面句柄, 是Csrss.exe创建的一个窗口)
由于不是搞安全的,对这块的东西一直不是很清楚,今天特意整理下。总的来说,他们的关系如下:我们知道Windows是支持多用户的,Session可以理解为每个用户登录,比如当前登录和远程登陆。Window Stations可以理解为登陆后的不同用户组,我们在任务管理器中可以看到不同的用户名(比如 Richard, system, local service等),其中只有一个原创 2017-11-13 18:43:10 · 601 阅读 · 0 评论 -
编程之美:让CPU占用率曲线听你指挥
题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:1. CPU的占用率固定在50%,为一条直线;2. CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);3. CPU的占用率状态是一个正弦曲线。首先什么是原创 2017-11-03 09:38:05 · 2732 阅读 · 2 评论 -
SHA-256的实现
#include "SHA256.h"#include #include #include #define SHA256_ROTL(a,b) (((a>>(32-b))&(0x7fffffff>>(31-b)))|(a<<b))#define SHA256_SR(a,b) ((a>>b)&(0x7fffffff>>(b-1)))#define SHA256_Ch(x,y,z) ((x原创 2017-10-17 01:04:38 · 1155 阅读 · 0 评论 -
Windows编程实现自定义全局热键
一、实现全局热键主要使用以下API(详情查看MSDN):- 获取热键标识:GlobalAddAtom- 注册热键:RegisterHotKey- 注销热键:UnregisterHotKey- 释放热键标识:GlobalDeleteAtom12345二、热键注册/注销步骤1、ATOM hotKeyId = GlobalAddAtom( _T("myHotKeyId") ) -原创 2017-10-29 00:36:43 · 3159 阅读 · 1 评论 -
VC 用发音函数Beep()播放简谱音乐
Win32 API中有个非常有意思的发音函数Beep(),可以用它在扬声器上播放简单的音调,如果按简谱来设置播放的内容,就可以播放一些简单的音乐了。 函数原型:BOOL WINAPI Beep( __in DWORD dwFreq, __in DWORD dwDuration);函数说明:第一个参数表示频率,用Hz为单位,可以原创 2015-09-12 00:22:27 · 4934 阅读 · 0 评论 -
windows右键菜单大揭密
在Windows系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作。不知道你是否对它感兴趣?是否想对它作一番改头换面,做出有自己特色的右键菜单?不用着急,看完本文的大揭密,你将成为这方面的高手! 修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里可是右键原创 2015-09-26 15:37:53 · 6011 阅读 · 0 评论 -
使用ExitProcess()结束本进程,TerminateProcess()结束进程
进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的。当主线程的进入点函数返回时,进程也就随之结束。这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的清除。除了这种进程的正常退出方式外,有时还需要在程序中通过代码来强制结束本进程或其他进程的运行。ExitProcess()函数的原型为:void ExitProcess(UINT uExi原创 2015-06-26 16:48:27 · 4964 阅读 · 0 评论 -
ShellExecuteEx提升子进程权限
首先说下ShellExecuteEx是如何提升权限的,ShellExecuteEx函数只有一个参数,就是SHELLEXECUTEINFO结构体,不过是指针类型的,这无所谓,关键是这个结构体中有一个参数lpVerb,它的作用就是指定如何操作文件lpFile,提升权限就是设置lpVerb为“runas”。将lpVerb设定为”open”或NULL的时候,创建的子进程继承了主进程的权限,当主进程原创 2015-06-27 17:51:37 · 5933 阅读 · 0 评论 -
win7生成生成Detours.lib以及简单使用实例
Detours是微软开发的一个函数库,可用于捕获系统API。在用其进行程序开发之前,得做一些准备工作:一.下载Detours 在http://research.microsoft.com/sn/detours 可免费下载Detours二.安装Detours 一路NEXT三.生成Detours库 在安装后的文件夹下找不到直接可以拿来用的原创 2015-01-20 09:56:28 · 714 阅读 · 0 评论 -
设置程序开机启动
把程序设为开机启动,有三种方式:(1). 修改注册表 把程序增加到注册表的开机运行项,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run需要注意32位程序在64位系统运行,操作注册表被重定向的问题.缺点:只有登陆桌面后程序才会启动.即如果系统只是重启了,但没有输入密码登陆,程序就不能启动(2). 添原创 2015-06-22 21:51:45 · 2040 阅读 · 0 评论 -
如何使用windows的计划任务?
1点击开始菜单--选择控制面板2切换到大图标模式3选择管理工具选择计划任务原创 2015-06-22 22:12:43 · 558 阅读 · 0 评论 -
services.msc 服务管理程序 (net start 命令)
Services.msc是Windows2000/XP/2003/Vista/7/2008/8/8.1系统中用来启动、终止并设置 Windows 服务的管理策略。在开始菜单中点击“运行”,输入“services.msc”即可。也可以从“控制面版-管理工具-服务”打开。打开服务管理器后,可以看到每个服务后面都有描述,双击任何一个服务都会弹出其属性窗口。在服务的属性窗口的“常规”选项卡原创 2015-06-17 11:05:21 · 5306 阅读 · 0 评论 -
sc.exe 服务控制管理命令详解
sc.exe是一个DOS命令行下管理本机或远程主机服务的工具.你可以在命令行下键入sc /?获得帮助.sc.exe 服务控制管理程序:可用sc.exe远程创建,从命令行启动服务(1) sc create AudioSrv binpath= c:\MyServices\AudioSrv.exe //创建服务,注意"binpath="后有空格 (2) sc delete Audio原创 2015-06-17 10:32:27 · 5484 阅读 · 0 评论 -
判断应用程序是32位还是64位
VC++检测可执行程序DLL、EXE等是32位还是64位1.首先介绍PE结构 Windows系统下的可执行文件,是基于Microsoft设计的一种新的文件结构,此结构被称之为PE结构。PE的意思是Portable Executable(可移植的执行体),所有Win32执行体都是用PE文件格式,其中包括SYS、DLL、EXE、COM、OCX等。(不管是学习逆向、破解原创 2015-05-07 15:48:03 · 6258 阅读 · 0 评论 -
判断操作系统是32位还是64位
1判断操作系统是32位还是64位//方法I:BOOL IsWow64(){ //函数IsWow64Process()用于确定指定进程是否运行在64位操作系统的32环境(Wow64)下 //如果该进程是32位进程,运行在64操作系统,该值为true,否则为false,具体如下: //32bit程序跑在32bit系统下,返回0. //32bit程序跑在64bit系统下,是wow64模式原创 2015-05-07 15:48:44 · 1781 阅读 · 0 评论 -
32位程序在64位系统上调用GetModuleFileNameEx失败
今天客户打来电话说我们公司的服务器程序在新装的64位Windows 2003上以系统服务方式启动不起来。初步怀疑是我们的32位服务程序哪个地方在64位机上不兼容了。结果忙活了一上午,终于找到了问题所在。程序里有一段代码是用来判断程序是以服务方式启动还是以窗口形式启动:在应用程序初始化时获得父进程的句柄。然后通过句柄获得父进程的执行程序全路径。如果全路径中存在"service.exe"字符串,则程序转载 2015-05-03 12:38:39 · 2484 阅读 · 0 评论 -
Win32使用Psapi库枚举系统进程信息
一、枚举当前的所有进程(64位的程序暂时不会处理) 通过EnumProcesses得到当前所有的进程的进程ID,然后调用OpenProcess通过进程ID得到进程句柄,再调用EnumProcessModules来得到该进程的模块句柄,GetModuleBaseName通过进程模块句柄得到进程的名字,GetModuleFileNameEx通过进程模块句柄得到进程的可执行文件名。上面所有转载 2015-05-07 14:35:49 · 982 阅读 · 0 评论 -
HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
1. 首先我们来看HeapAlloc:HeapAlloc是一个Windows API函数。它用来在指定的堆上分配内存,并且分配后的内存不可移动。(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:LPVOIDHe转载 2015-05-01 20:19:41 · 1086 阅读 · 0 评论 -
GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
根据官方的说法:For the best results use the following table to convert paths.Windows 2000 = GetModuleFileNameEx()Windows XP x32 = GetProcessImageFileName()Windows XP x64 = GetProcessImageFileName原创 2015-05-03 12:18:21 · 3154 阅读 · 0 评论