<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u012786754的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012786754</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012786754]]></copyright><item><title><![CDATA[VMware Workstation 不可恢复错误：(vmui)]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/52125113</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/52125113</guid><author>u012786754</author><pubDate>Fri, 05 Aug 2016 04:44:28 +0800</pubDate><description><![CDATA[出现这个错误 网上的办法都试过了没用 怀疑可能是360wifi的原因 我把360wifi从主机上拔掉 再打开vmware workstation 立刻一切正常 这个问题 折腾我两天 贴出来 供后人少走弯路]]></description><category></category></item><item><title><![CDATA[C++完美实现Singleton模式]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/42029651</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/42029651</guid><author>u012786754</author><pubDate>Fri, 19 Dec 2014 18:25:17 +0800</pubDate><description><![CDATA[Singleton模式是常用的设计模式之一，但是要实现一个真正实用的设计模式却也不是件容易的事情。
1.         标准的实现
class Singleton
{
public:
       static Singleton * Instance()
       {
              if( 0== _instance)
              {]]></description><category></category></item><item><title><![CDATA[地址空间扩展]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/42006735</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/42006735</guid><author>u012786754</author><pubDate>Thu, 18 Dec 2014 16:04:13 +0800</pubDate><description><![CDATA[虽然Windows的32位版本可以支持多达128GB物理内存，但每个32位用户


进程在默认情况下只有2GB虚拟地址空间（在Boot.ini中使用/3GB和/


USERVA开关时，此限制值可配置为3GB）。






注意:当创建一个进程时，操作系统会为该进程分配一个4GB大小的虚拟进程地址空间。之所以是4GB，是因为在32位的操作系统中，一个指针长度是4字节，而]]></description><category></category></item><item><title><![CDATA[静态分析：IDA逆向代码段说明 text、idata、rdata、data]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41978301</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41978301</guid><author>u012786754</author><pubDate>Wed, 17 Dec 2014 10:16:18 +0800</pubDate><description><![CDATA[一、定义：重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程，也就是说在装入时对目标程序中指令和数据的修改过程。他是实现多道程序在内存中同时运行的基础。重定位有两种，分别是动态重定位与静态重定位

二、分类

1、静态重定位：即在程序装入内存的过程中完成，是指在程序开始运行前，程序中的各个地址有关的项均已完成重定位，地址变换通常是在装入时一次完成的，以后不再改变，故成为静态]]></description><category></category></item><item><title><![CDATA[NetBIOS网络编程]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41931929</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41931929</guid><author>u012786754</author><pubDate>Sun, 14 Dec 2014 22:59:55 +0800</pubDate><description><![CDATA[“网络基本输入/输出系统”（Network Basic Input/Output System，NetBIOS）是1983年由Sytex公司为IBM公司开发的一种标准应用程序编程接口，并被微软采用。1985年，IBM改进了NetBIOS，推出了NetBIOS扩展用户接口（NetBIOS Extended User Interface,NetBEUI）通信协议，它占用内存少，配置简单，适用于小型局域]]></description><category></category></item><item><title><![CDATA[windows核心编程第四章]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41791373</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41791373</guid><author>u012786754</author><pubDate>Sun, 07 Dec 2014 21:43:19 +0800</pubDate><description><![CDATA[#include "..\CmnHdr.h"     /* See Appendix A. */
#include 
#include 
#include 
#include 
#include 
#include "Toolhelp.h"
#include "Resource.h"


///////////////////////////////////////////////////////]]></description><category></category></item><item><title><![CDATA[DumpEnvStrings.cpp(获取环境变量)]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41785821</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41785821</guid><author>u012786754</author><pubDate>Sun, 07 Dec 2014 09:59:33 +0800</pubDate><description><![CDATA[#include 
#include 
#include  // 使用了StringCbCopyN等安全字符串处理函数

void DumpEnvStrings()
{
 // 结尾有两个'\0'，一个是最后一个环境变量的结尾，另一个是整个块的结尾
 PTSTR pszEnvBlock = GetEnvironmentStrings();

 TCHAR szName[MAX_PATH];
 TC]]></description><category></category></item><item><title><![CDATA[利用专有命名空间实现单一实例源代码注释]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41774579</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41774579</guid><author>u012786754</author><pubDate>Sat, 06 Dec 2014 12:37:05 +0800</pubDate><description><![CDATA[要实现单一实例有三种 一种是对象句柄继承 一种是专有命名  另外一种是复制对象句柄今天来看看专有命名空间


void CheckInstances()  
{  
    // 创建边界描述符  
    g_hBoundary = CreateBoundaryDescriptor(g_szBoundary, 0);  //g_szboundary是一个自定义字符串
  
    // 创]]></description><category></category></item><item><title><![CDATA[Windows安全描述符SECURITY_DESCRIPTOR阅读注释]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/41773601</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/41773601</guid><author>u012786754</author><pubDate>Sat, 06 Dec 2014 12:10:59 +0800</pubDate><description><![CDATA[安全对象Securable Object是拥有SD的Windows的对象。
所有的被命名的Windows的对象都是安全对象。一些没有命名的对象是安全对象，如：进程和线程，也有安全描述符SD。安全对象Securable Object是拥有SD的Windows的对象。
在 Windows系统中，其是用一个安全描述符（Security Descriptors）的结构来保存其权限的设置信息，简称为SD]]></description><category></category></item><item><title><![CDATA[武林外传寻路call]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/40353539</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/40353539</guid><author>u012786754</author><pubDate>Tue, 21 Oct 2014 22:07:10 +0800</pubDate><description><![CDATA[// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"  
#include   

#pragma data_seg(".Share")    
HWND g_hMainWnd=NULL;//主窗口句柄; 
HANDLE  gameHandle=NULL;//游戏进程句柄
  
HINSTANCE hInstDll=NULL;//本dll实例句]]></description><category></category></item><item><title><![CDATA[武林外传点击选怪call]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/40250181</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/40250181</guid><author>u012786754</author><pubDate>Sun, 19 Oct 2014 00:59:10 +0800</pubDate><description><![CDATA[#include "stdafx.h"  
#include   

#pragma data_seg(".Share")    
HWND g_hMainWnd=NULL;//主窗口句柄;    
HHOOK hhkHook=NULL; //鼠标钩子句柄;    
HINSTANCE hInstDll=NULL;//本dll实例句柄;   
DWORD g_dwHookPid=-1;//要HOO]]></description><category></category></item><item><title><![CDATA[浮点运算指令]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/36642963</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/36642963</guid><author>u012786754</author><pubDate>Thu, 03 Jul 2014 12:28:23 +0800</pubDate><description><![CDATA[1．  数据传递和对常量的操作指令

指令格式
 指令含义
 执行的操作
 
FLD src
 装入实数到st(0)
 st(0) 
 
FILD src
 装入整数到st(0) 
 st(0) 
 
FBLD src  
 装入BCD数到st(0)
 st(0) 
 
  
 
FLDZ
 将0.0装入st(0)
 st(0) 
 
FLD1
 ]]></description><category></category></item><item><title><![CDATA[C函数的参数传递过程]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/34793589</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/34793589</guid><author>u012786754</author><pubDate>Thu, 26 Jun 2014 08:43:00 +0800</pubDate><description><![CDATA[C函数的参数传递过程


基础知识


      函数调用的本质将在这里得到阐明。首先请读者理解堆栈的操作。函数和堆栈的关系密切，这是因为：C语言程序通过堆栈把参数从函数外部传入到函数内部。此外，在堆栈中划分区域来容纳函数的内部变量。


     调用push和pop指令的时候，寄存器esp用于指向栈顶的位置--栈顶总是栈中地址最小的位置。push执行的结果，esp总是减少，]]></description><category></category></item><item><title><![CDATA[动态修改窗口标题和类名]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/29359587</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/29359587</guid><author>u012786754</author><pubDate>Sun, 08 Jun 2014 13:05:13 +0800</pubDate><description><![CDATA[修改窗口标题字符串“无标题-Test”
    修改前半部分
  方法一：更改StringTable的IDR_MAINFRME的标题，将第一个\n之和第二个\n之间添加字符串fan为：
Test\nfan\nTest\n\n\nTest.Document\nTest.Document
  方法二：在 CEX041Doc::OnNewDocument()中添加SetTitle("我的程序")]]></description><category></category></item><item><title><![CDATA[mfc模拟自动登录QQ[查找单机版连连看的剩余方块]]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/28438845</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/28438845</guid><author>u012786754</author><pubDate>Fri, 06 Jun 2014 03:09:33 +0800</pubDate><description><![CDATA[#pragma once
#include "atltypes.h"


// CGameModifyDlg 对话框
class CGameModifyDlg : public CDialogEx
{
// 构造
public:
	CGameModifyDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = ]]></description><category></category></item><item><title><![CDATA[MFC hook注入dll，远程线程注入dll]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/28441569</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/28441569</guid><author>u012786754</author><pubDate>Wed, 04 Jun 2014 19:01:46 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include 

#define  WM_HOOKDLL WM_USER+2013
#pragma data_seg(".Share")  
HWND g_hMainWnd=NULL;//主窗口句柄;  
HHOOK hhkHook=NULL; //鼠标钩子句柄;  
HINSTANCE hInstDll=NULL;//本dll实例句柄; ]]></description><category></category></item><item><title><![CDATA[MFC 消息映射机制剖析]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/24893861</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/24893861</guid><author>u012786754</author><pubDate>Sat, 03 May 2014 02:04:05 +0800</pubDate><description><![CDATA[MFC的类非常多，继承关系复杂，如何完成MFC巨大的类层次之间消息的传递是一个技术难点，最简单的就是采用虚函数机制，每继承一个类，就覆盖父类的函数，但问题来了，MFC有上百个类，如果使用虚函数，那么每个派生类都会生成一个巨大的虚函数表，效率低下，内存使用率高，违背了微软设计MFC的准则。微软采用了所谓的消息映射机制，来完成不同对象之间消息的传递，本文就MFC9.0源码进行分析，大致讲解MFC的消息]]></description><category></category></item><item><title><![CDATA[MM_Anisotropic MM_ISOTROPIC]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/18742845</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/18742845</guid><author>u012786754</author><pubDate>Fri, 24 Jan 2014 22:02:12 +0800</pubDate><description><![CDATA[getdevicecaps就是得到一英寸代表及像素，也就是1440逻辑尺寸代表一英寸
ptclient这点是设备空间的坐标点，所以转换成逻辑坐标x从760变成1万多]]></description><category></category></item><item><title><![CDATA[CreateCompatibleDC]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/18614367</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/18614367</guid><author>u012786754</author><pubDate>Tue, 21 Jan 2014 16:05:49 +0800</pubDate><description><![CDATA[函数功能：该函数创建一个与指定设备兼容的内存设备上下文环境（DC）。
函数原型：HDC CreateCompatibleDC(HDC hdc)；
参数：
hdc：现有设备上下文环境的句柄，如果该句柄为NULL，该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。
返回值：如果成功，则返回内存设备上下文环境的句柄；如果失败，则返回值为NULL。
 
CreateCompatib]]></description><category></category></item><item><title><![CDATA[__cdecl __stdcall区别]]></title><link>https://blog.youkuaiyun.com/u012786754/article/details/17861895</link><guid>https://blog.youkuaiyun.com/u012786754/article/details/17861895</guid><author>u012786754</author><pubDate>Sun, 05 Jan 2014 02:26:14 +0800</pubDate><description><![CDATA[最大的区别就是__cdecl是由调用函数者释放堆栈，而__stdcall由被调用者释放。但是我们在调用任一种函数时，都没有进行显示的释放堆栈工作。这个工作由编译器完成，它帮我们生成了这个中间要使用的代码。
     
  以下系转载：     
    
 在C语言中，假设我们有这样的一个函数：
　　
　　int function(int a,int b)
　　
　　调用时只要用r]]></description><category></category></item></channel></rss>