自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 win32 PE 文件格式

一个操作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是你可以从这其中学到大量的知识。在这篇文章中,我会给出 MicroSoft 的所有基于 win32系统(如winnt,win9x)的可移植可执行(PE)文件格式的详细介绍。在可预知的未来,包括 Windows2000 , PE 文件格式在 MicroSoft 的操作系统中扮演一个重

2017-11-24 14:11:47 2095

原创 PE 文件结构分析

一:PE整体结构PE 的意思就是Portable Executable(可移植的执行体)。PE文件的整体大概结构描述:struct pe{DOS MZ header:所有PE文件(甚至32位的DLLs) 必须以一个简单的DOS MZ header 开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header 

2017-11-24 14:10:34 2243

原创 PE文件结构详解(四)PE导入表

PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPORT,即导入表。也许大家注意到过,在IMAGE_DATA_DIRECTORY中,有几项的名字都和导入表有关系,其中包括:IMAGE_DIRECTORY_ENTRY_IMPORT,IMAGE_D

2017-11-24 14:07:21 1901

原创 PE文件结构详解(三)PE导出表

上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,DataDirectory中的每一项都可以用这个函数获取,函数原型如下:PVOID NTAPI RtlImageDirectoryEntryToData(PVOID Base, BOOLEAN

2017-11-24 14:06:35 1792

原创 PE文件结构详解(二)可执行文件头

在PE文件结构详解(一)基本概念里,解释了一些PE文件的一些基本概念,从这篇开始,将详细讲解PE文件中的重要结构。了解一个文件的格式,最应该首先了解的就是这个文件的文件头的含义,因为几乎所有的文件格式,重要的信息都包含在头部,顺着头部的信息,可以引导系统解析整个文件。所以,我们先来认识一下PE文件的头部格式。还记得上篇里的那个图吗?DOS头和NT头就是PE文件中两个重要

2017-11-24 14:05:35 1949

原创 PE文件结构详解(一)基本概念

PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名。那Windows是怎么区分可执行文件和非可执行文件的呢?我们调用LoadLibrary传递了一个文件名,系统是如何判断这个文件是一个合法的动态库呢?这就涉及到PE文件结构了。PE文件的结构一般来说如

2017-11-24 14:04:13 1778

原创 关于Windows创建进程的过程

1. 程序的启动当我们通过explorer.exe运行一个程序时,explorer.exe会调用CreateProcess函数请求系统为这个程序创建进程。当然,其它程序也可以调用CreateProcess函数创建进程。系统在为进程分配内部资源,建立独立的地址空间后,会为进程创建一个主线程。我们可以把进程看作单位,把线程看作员工。进程拥有资源,但真正在CPU上运行和调度的是线程。系统

2017-11-21 19:38:45 5409

原创 介绍Windows的窗口、消息、子类化和超类化

这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“子类化、超类化”中的“类”是指Windows的窗口类。0

2017-11-21 17:49:02 2120

原创 PeekMessage和GetMessage函数的主要区别

PeekMessage和GetMessage函数的主要区别有:1. GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视”消息,如果有消息,就返回true,否则返回false。也可以使用PeekMessage从消息队列中取出消息,这要用到它的一个参数(UINT wRemoveMsg),如果设置为PM_R

2017-11-21 17:35:42 1837

原创 单文档修改窗体外观

方法1:窗口创建前,在CMainFrame的函数PreCreateWindow(CREATESTRUCT& cs)中,修改相应的CREATESTRUCT结构体的变量值。例如:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){   if( !CFrameWnd::PreCreateWindow(cs) )   {

2017-11-20 11:27:24 1751

原创 Sessions, Window Stations and Desktops(GetDesktopWindow函数得到的桌面句柄, 是Csrss.exe创建的一个窗口)

由于不是搞安全的,对这块的东西一直不是很清楚,今天特意整理下。总的来说,他们的关系如下:我们知道Windows是支持多用户的,Session可以理解为每个用户登录,比如当前登录和远程登陆。Window Stations可以理解为登陆后的不同用户组,我们在任务管理器中可以看到不同的用户名(比如 Richard, system, local service等),其中只有一个

2017-11-13 18:43:10 612

原创 win32中创建webbrowser控件

因工作需要,需要在win32中创建webbrowser,不要问我为什么不直接用MFC,我很烦MFC,win32很直接和简洁。    言归正传,网上流传有一些关于win32中创建webbrowser的代码,会弹一个窗出来:        是因为CComModule _Module没有初始化。解决办法就是    _Module.Init(ObjectMap, h

2017-11-10 09:46:01 1652

原创 从一个窗口句柄获取IWebBrowser2和IHTMLDocument2接口

将以下代码张贴到对话框程序,运行即可。调用之前请确保打开IE浏览器/****************************************************************************寻找指定类名的子窗口句柄 *********************************************************

2017-11-10 00:30:38 2701

原创 win32 sdk下调用webbrowser控件

[cpp] view plain copy#include   CComModule _Module;  #include   #include   #pragma comment(lib,"atl")  #pragma comment(lib,"User32.lib")      LRESULT CALLBACK WndProc(H

2017-11-10 00:09:01 651

原创 vc++ win32项目添加文本编辑框、静态文本、按钮、Richedit等控件

窗口大小[cpp] view plain copyhWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,        CW_USEDEFAULT, 0, 680, 640, NULL, NULL, hInstance, NULL);  

2017-11-09 23:13:27 2655

原创 IOCP中在WSASend以及WSARecv的时候出现WSA_IO_PENDING情况的说明

IOCP中在WSASend以及WSARecv的时候出现WSA_IO_PENDING情况的说明应该是windows网络编程第二版里面提到过。现在整理一下。1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。情况一:调用WSASend发送正确

2017-11-08 09:06:04 572

原创 IOCP (关于WSASend,WSARecv调用)

最近都在做windows socket相关的东西,使用IOCP其中还是遇到了一些问题,当然遇到问题就要尝试解决问题,这也是一个学习的过程。IOCP可以说是windows 上性能最好的网络模型了,具体IOCP,就不介绍了.在用我的网络接口,发大量数据时,发现,数据对不上,即收包量会增多,内容是不会丢的,由于我是严格控制服务器端的收包大小,和收包量,所以也感觉很奇怪。先是怀疑WSASend连续

2017-11-08 09:05:30 2557 1

原创 编程之美:让CPU占用率曲线听你指挥

题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:1.    CPU的占用率固定在50%,为一条直线;2.    CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);3.    CPU的占用率状态是一个正弦曲线。首先什么是

2017-11-03 09:38:05 2767 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除