![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows编程
文章平均质量分 51
cosmoslife
多媒体编程、网络编程、系统编程、网络安全编程
展开
-
Intel指令解析规则,反汇编引擎工作原理
一、Intel保护模式、实地址模式和虚拟8086模式指令格式(x86) 图在Intel手册Volume2 2.1章节 1.1)Instruction Prefixes:指令前缀,可选项,每个前缀一个字节,可选0个前缀到4个不等;指令前缀分为四组,每组都允许设置指定的前缀代码。 Group 1:锁定和重复前缀。 Group 2:段...原创 2020-04-09 10:27:46 · 1162 阅读 · 0 评论 -
vc++经典技巧总结 .
1."属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码:m_tabsheet.Create(this, WS_CHILD | WS_VISI转载 2012-03-11 01:22:03 · 1705 阅读 · 0 评论 -
木马编写小技巧 .
1.锁定鼠标:这个功能很简单只要一个ClipCursor()就可以搞定了看看下面的小程序#include #include int main(int argc, char* argv[]){ printf("/n别害怕15妙后你的鼠标就可以使用了^_^/n"); RECT rect; rect.bottom=1; rect.right=1; ClipCur转载 2012-03-11 01:23:10 · 587 阅读 · 0 评论 -
Windows网络编程-(完成端口及网络编程)详细介绍1
早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载请注明出处及作者,谢谢!以一个文件传输服务端为例,在我的机器上它只起两个线程就可以为很多个个客户端同时提供文件下载服务,程序的性能会随机器内CPU个数的增转载 2012-05-09 22:01:13 · 735 阅读 · 0 评论 -
提升进程权限代码 .
提升进程权限在枚举/结束系统进程或操作系统服务时,会出现自己权限不足而失败的情况,这时就需要提升自己进程到系统权限,其实提升权限的代码很简单的,看到过的最经典的应该是《WINDOWS核心编程》第四章中操作进程给出的那个函数了,如果我们真的不了解它的操作也不要紧,因为只要在你需要的地方调用下面这个函数就是了,以下是它的代码: BOOL EnablePriv(){HANDLE hT转载 2012-05-12 21:39:10 · 510 阅读 · 0 评论 -
用wsprintf格式化字符串 .
在C语言中格式化字符串可以使用printf但是在WINDOWS编程设计中却行不通了,但是却有变通的方法那就是用 wsprintf这个函数 它的格式如下:wsprintf(缓冲区,格式,要格式化的值);第一个参数是字符缓冲区,后面是格式字符串,wsprintf不是将格式化结果写到标准输出,而是将其写入缓冲区中,该函数返回该字符串的长度。 比如我们想通过MessageBox来输转载 2012-05-12 21:39:57 · 520 阅读 · 0 评论 -
用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程 .
用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程在很多情况下需要对系统的进程进行操作,方法有很多种但最常用的是CreateToolhelp32Snapshot/Process32First/Process32Next 一系列API使现结束进程使用TerminateProcess使现下面的函数可以使现对进转载 2012-05-12 21:40:25 · 614 阅读 · 0 评论 -
我来理解extern "C"
编程快5年了, 今天才算对extern "C" 有个较为清晰的认识. 本人对extern "C"的认识可以分为三个阶段: 1. 从别人的代码里面看到有这个东西, 自己不认识, 就上网查查, 大概明了它是什么意思.2. 看到别人的代码里面包含用c写的代码就用extern "C", 那么自己依葫芦画瓢用c代码的时候也加这个东西. 自己感觉对这个东西很熟悉了.3. 编译链转载 2012-05-30 15:40:24 · 753 阅读 · 0 评论 -
C 语言最大难点揭秘--内存调试技巧
C 语言最大难点揭秘--内存调试技巧2007年06月24日 星期日 上午 08:43本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序,并且很少有开发团队对其制定明确的管理计划。但好消息是,它们并不怎么神秘。引言转载 2012-05-31 08:50:33 · 1002 阅读 · 0 评论 -
ANSI C标准函数库
ANSI C标准函数库absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:dr转载 2012-05-30 17:03:17 · 805 阅读 · 0 评论 -
多线程在C、Win32和MFC下的使用方法
一.前言 线程是执行路径。一个进程至少要有一个线程,也可能包含多个线程。若进程关闭了,则在进程中所有的线程也自动被销毁。当我们在一个应用程序中创建一个线程时,实际上,它是第二个线程。在C或C++中,程序的入口函数是main或wmain(Unicode版本)。在windows的运用程序中,程序的入口点是WinMain或wWinMain。当程序启动时,操作系统创建第一个线程。因此,windo转载 2012-05-13 15:21:03 · 585 阅读 · 0 评论 -
远程线程注入详解
远程线程注入详解作者:黎伟鑫一、 前言: 远程线程技术指的是通过在其他进程中创建新线程的方法进入该进程的内存地址空间,从而获得对该进程的控制权的方法。 在进程中可以通过CreateThread函数创建线程,被创建的新线程与主线程共享地址空间以及其他的资源。同样,通过CreateRemoteThread函数可以在其他进程内创建新线程,新创建的的远程线程转载 2012-05-13 20:08:48 · 829 阅读 · 0 评论 -
为什么C程序一定要从main开始执行???
main只是开发工具所规定的一个特殊函数名称而已。它既不是程序的入口,也不是必须要有的函数。 程序的入口点记录在可执行文件中的一个数据,该数据标明程序从哪个位置开始执行,这个数据是连接程序的时候由link.exe确定的,可以把程序的入口点 指定为任意函数,甚至可以自己编辑可执行文件修改程序的入口点。在默认情况下,link.exe会连接开发工具中带有的一个obj文件,并设置该obj中 的固定转载 2012-05-31 15:43:54 · 2025 阅读 · 0 评论 -
VC相关学习笔记
1、隐藏鼠标int i = ShowCursor(FALSE); for ( i; i >= 0 ;i-- ) { ShowCursor(FALSE); }2、显示鼠标 int i = ShowCursor(TRUE); for ( i;i { ShowCursor(TRUE); }3、在Picture Control上显示图片转载 2012-06-01 15:01:16 · 448 阅读 · 0 评论 -
Call Stack技巧(调用堆栈调试)
1、堆栈调试的原理 调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的?2、堆栈调试的技巧 在“Call Stack”对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数,单击这些函数名可以跳到对 应的函数中。3、调用方式(VC++ 6.0) View-->Debug Window ---->Call St转载 2012-05-14 16:57:20 · 1409 阅读 · 0 评论 -
学VC时做的一些笔记
字体应用:CFont font;font.CreateFont(10 + x*8, //字体字符的逻辑高度 0, //字符平均宽度取默认值 0, //文本行角度为0,水平 0, //字符角度为0,正交 FW_NORMAL, //正常字体 FALSE, //不倾斜 FALSE, //不加下划线 FALSE, //不加删除线 ANSI_CHARS转载 2012-06-01 15:01:47 · 509 阅读 · 0 评论 -
windows programming 中的 main()(经典)
windows programming 中的 main()学过 c 语言的都知道,main() 是用户代码的入口函数(当然这里要排除一些修改入口函数的手段),在 unix/linux 下依然是这样。可是到了 windows 下情况就搞得很复杂,特别是 windows NT 时代以后, NT 架构从内核上完全支持 Unicode 码,这是一种 16 位的宽字符集,可以表达更多的字符,这当转载 2012-06-04 20:12:35 · 524 阅读 · 0 评论 -
函数中的不定参数
函数中的不定参数以前一直没去了解不定参数的使用,今天学习使用了一把:int sum(int n, ...){ va_list arglist; int result = 0; int i, value; va_start(arglist, n); printf("(");转载 2012-06-04 20:52:28 · 400 阅读 · 0 评论 -
windows 的数据类型
windows 的数据类型1. Visual C/C++ 数据类型Visual c/c++ 支持下列几个 integer 类型:__int8__int16__int32__int64它们分别对应于 ANSI C 的:charshortintlong longVisual C/C++ 支持 bool 类型,并且增加了:wchat_t(或者 _wchat_t转载 2012-06-04 21:53:50 · 672 阅读 · 0 评论 -
"RING3"过主防读物理内存、读写IO端口
貌似有半年没写博文了...来一篇除草...Naylon 2012.3.4 http://hi.baidu.com/naylonslain 转载请注明出处 最近拜读了王爽老师的《汇编语言》,学到了不少东西,终于能勉强逆点简单的小程序了。于是想到了Extreme神犇很早以前提出的这个点子:调用带正规签名的驱动来干坏事- -鲁大师有正规数字签名,所以它的驱动加载时不会被主防报警转载 2012-06-04 22:18:09 · 1158 阅读 · 0 评论 -
VC操作INI文件
INI文件简介在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化。将一些信息写入INI文件(initialization file)中,可完成简单的持久化支持。Windows提供了API接口用于操作INI文件,其支持的INI文件格式一般如下:===============================[Section1]Key转载 2012-05-16 14:12:58 · 653 阅读 · 0 评论 -
内存错误(精华)
写了个程序,在DLL中用malloc分配了一块内存,但是在exe程序中释放,结果程序crash,原因就是:其原因可能是堆被损坏,这也说明 TestMySticker.exe 中或它所加载的任何 DLL 中有 bug。想了半天以为是自己的写法有问题,后终于在google上找到了原因,汗。。。 以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b4转载 2012-05-17 14:44:07 · 961 阅读 · 0 评论 -
国内外黑客大会资料下载
作者:泉哥主页:http://riusksk.blogbus.comps: 2009.6.16 添加了前瞻资安技术年会Syscan和USENIX大会 2009.7.16添加了Virus Bulletin大会 2009.10.20添加了台湾骇客年会1.BlackHat黑帽大会http://blackhat.com/html/bh-medi ... archiv转载 2012-06-05 19:08:28 · 1110 阅读 · 0 评论 -
#pragma用法大全
#pragma用法大全C和C++的每个实现对它的主机或操作系统都支持一些独有的特征。例如, 某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数接受参量的方式。#pragma指令对每个编译器给出了一个方法,在保持与C和C+ +语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 语法转载 2012-06-05 19:28:32 · 434 阅读 · 0 评论 -
VC中的debug和release(精华)
在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当头一棒啊,可是疼归疼,问题总要解决,下面将讲述一下我的几点经验,看看是不是其中之一:1. 变量。大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋转载 2012-05-17 14:27:09 · 635 阅读 · 0 评论 -
UNICODE VS _UNICODE 与 TEXT() VS _T()
UNICODE VS _UNICODE 与 TEXT() VS _T()在 Windows 上编程,当使用字符串时常会使用:TEXT() 宏_T() 宏这两个宏作用是对字符串常量进行分类,下面的代码中:LPTSTR lpStrA = TEXT("Hello");LPTSTR lpStrB = _T("Hello");使用 TEXT()转载 2012-06-05 16:13:37 · 625 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
typedef的四个用途和两个陷阱用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb;转载 2012-06-05 18:12:40 · 459 阅读 · 0 评论 -
VC++实现启用与停用设备
前些日子在研究USB设备,就顺便研究了一些如何在应用程序实现USB设备的启用与停用,然后稍微深入,于是有了本文。想要实现类似设备管理器的功能,其实也不是很难,无非就是调用一些API函数,就像本文描述的,采用的API函数就是SetupDi系列的函数。不过这类函数有很多,具体的请参见MSDN,而实现设备启用、停用仅需要用到的就只有5个函数: SetupDiGetClassDev转载 2012-06-05 20:40:43 · 1328 阅读 · 2 评论 -
Windows线程的调度和运行2
下面的指令“movl KTHREAD_APCSTATE_PROCESS(%ebx), %edi”使寄存器EDI指向了目标线程所属进程的KPROCESS数据结构。这个数据结构中有个ULONG数组LdtDescriptor[2],如果 其第一个元素的低16位非0就是一个有效的LDT段描述项,那就说明目标线程使用了LDT,因此就要把这个指向其LDT段的描述项设置到GDT中,其下标 为LDT_SELE转载 2012-06-06 15:09:54 · 636 阅读 · 0 评论 -
1K后门代码(精华)
/* 1k(程序体积1kb) 反向连接,零管道后门测试: 本地开启nc -l -p 8000,监听8000端口,会得到一个Shell*/#pragma comment(linker,"/subsystem:windows /FILEALIGN:0x200 /ENTRY:Entrypoint")#pragma comment(linker,"/INCREMENTA转载 2012-06-06 18:08:04 · 819 阅读 · 0 评论 -
ping的源代码(学习)
// Module Name: Ping.c//// Code by Rise//// Command Line Options/Parameters:// Ping [host] [packet-size]//// host String name of host to ping// packet-size转载 2012-06-06 19:04:28 · 797 阅读 · 0 评论 -
VC命名规则
一、程序风格: 1、严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义转载 2012-06-06 12:14:44 · 399 阅读 · 0 评论 -
如何实现参数个数不定的函数?
原理就是声明一个类似 int func ( char *fmtstr, ...)的函数 然后在函数中判断fmtstr的下一个参数的类型如float,然后将fmtstr的地址+sizeof(float),得出的值作为那个float参数的地址。以此类推。 但是手工这么实现有点太繁了,又容易出错,所以一般的编译器实现中有一些宏来完成这些动作。就是va_list之类的。转载 2012-06-06 12:16:32 · 652 阅读 · 0 评论 -
Windows线程的调度和运行1
漫谈兼容内核之二十二:Windows线程的调度和运行毛德操了解Windows线程的系统空间堆栈以后,还有必要对Windows线程的调度、切换、和运行也有所了解。当然,就兼容内核的开发而言,内核的线程调度 /切换/运行机制只能有一套,而且必定是基本上沿用Linux的这套机制,而不可能在一个内核中有两套调度/运行机制。但是对于Windows这套机制的 了解对于兼容内核的开发也很重要转载 2012-06-06 15:09:15 · 956 阅读 · 1 评论 -
IPC空连接测试代码
//****************************************************//****** 网蝉工具--135弱口令猜解器 ******//ip.txt纪录要猜测的IP地址。//user.txt纪录要猜测的用户名。//password.txt纪录要猜测的密码。//3个文件格式为标准的字典文件, 方便与修改和承接其他扫描器扫出的结果。//**转载 2012-06-07 22:06:57 · 1660 阅读 · 0 评论 -
Base64编码解码的实现(C语言)
base64编码解码的实现(C语言) /****************************************************************This is a sample routine of base64 algorithm.The goal is toillustrate principles,so some det原创 2012-06-07 22:10:27 · 779 阅读 · 0 评论 -
VC调试入门(学习)
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从转载 2012-05-17 14:49:18 · 538 阅读 · 0 评论 -
【Windows源码分析】(一)初始化内核与执行体子系统
标 题: 【Windows源码分析】(一)初始化内核与执行体子系统作 者: 北极星2003时 间: 2008-03-22,23:59:23链 接: http://bbs.pediy.com/showthread.php?t=61749对于那么没有相关经验的朋友,在阅读本文时最好对照windows源码来看,否则光看着这么多数据结构就足以头大。对于这篇文章,严格来说,应该是属于学习转载 2012-05-18 09:01:37 · 807 阅读 · 0 评论 -
T-Cmd v1.0 beta服务级后门源代码(学习)
这里和大家一起看一个源代码,直接复制下面的代码到文本文件,保存后辍为.cpp格式文件,用VC6.0编译生成可执行文件,自己测试过生成后的可执行文件可直接运行。 #include #include #include #define BUFFER_SIZE 1024#pragma comment(lib,"ws2_32.lib")#pragma comme原创 2012-06-07 18:21:52 · 927 阅读 · 0 评论 -
木马生成技术详解
有些木马在解压缩之后只会有一个客户端程序,用户可以通过在客户端的一些设置工作来自动生成针对性比较强的服务端程序,例如特定的端口、击键木马的邮件地址、密码、SMTP服务器等等。在本文中,我将简要地探讨这一技术的实现。 从“生成”的这个事实来看,我们可以猜想客户端程序可能本身绑有一段自定义的二进制数据,这段二进制数据实质上就是一个服务端的模板。在用户进行了设置工作之后,客户端就会将设置完转载 2012-06-07 18:01:01 · 750 阅读 · 0 评论