- 博客(27)
- 资源 (2)
- 收藏
- 关注
原创 关于长文件名/短文件名
短文件名是dos+fat12/fat16时代的产物,命名规则为8.38是指文件名或目录名的主体部分小于等于8个字节3是指文件名或目录名的主体部分小于等于3个字节另外其中不能包括空格等非法字符win95+fat32已经支持长文件名,但是同时还是强制使用为长文件名提供8.3短文件名nt32+ntfs变为可选ntfs支持unicode文件名,最长255个utf16
2012-12-06 21:50:48 5964
原创 非静态成员函数做窗口过程(非映射表实现),成员函数做消息映射
之前看mfc的原理是做类指针对窗口句柄的映射表;实现了几个版本,总觉得查找映射表是件很浪费不优雅的事情,尤其在窗口很多的时候,比如大量使用了子类化的win32控件这种常出现的情况; 于是,利用窗口的USERDATA,有如下版本的实现,大概如下:class XWindow{protected: static LRESULT CALLBACK WndProc(HWND hW
2012-09-05 13:59:19 1310
原创 越过c++默认winmain/main直接进入口
extern "C" void WinMainCRTStartup(){ ExitProcess(0);} 这可以加快启动速度和减少二进制体积;
2012-09-04 11:16:47 808
原创 AX控件IE相关注册表修改封装
/******************************************************************** created: 2012:5:10 13:04:48 author: Insert purpose: IE各种注册表更改**********************************************************
2012-05-14 11:27:15 1551
原创 关于_ReturnAddress的error C2733
_ReturnAddress这样用: #include #pragma intrinsic(_ReturnAddress) HMODULE hm = NULL;void *callerAddress = _ReturnAddress(); ::GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWS
2012-05-14 11:22:01 3765 5
原创 cab包的codebase与version
一、codebase="/SomeCab.cab" 本地有,就不下载二、codebase="/SomeCab.cab#version=2,0,0,1"大于本地版本才下载三、codebase="/SomeCab.cab#version=2,0,0,1"1、本地 1,0,0,1 .inf 1,0,0,1实际1,0,0,1 下载,但安装不会成功2、本地
2012-05-14 10:50:33 4181
原创 vs/ie8 调试activex
1.activex工程,属性->配置属性->调试命令->ie路径参数->调试htm页面路径2.启动调试,此时2个ie进程,只attach了一个,再attach另一个,就可以了 在ax构造函数中debugbreak,再用vs05attach,必崩……
2012-04-26 13:21:02 1002
原创 dll导出函数调用封装
为了方便,备份 /******************************************************************** created: 2012:24:4 12:22:40 author: Insert purpose: dll export functions encapsulation*********************
2012-04-25 13:14:06 704
原创 关于窗口
关于win32窗口的一些细节,一段时间没用就忘了细节了,写下来备忘一下 每个窗口对象都有四个关联的数据,即child、sibling、parent、owner,子窗口,兄弟窗口,父窗口,拥有者窗口; owner-owned1被拥有的窗口永远显示在拥有它的那个窗口的前面;2当所有者窗口最小化的时候,它所拥有的窗口都会被隐藏;3当所有者窗口被销毁的时候,它所拥有的窗口都会被
2012-04-20 14:39:53 749
原创 资源文件释放成文件
<br />BOOL SaveResAs(LPCWSTR lpName, LPCWSTR lpType, LPCWSTR lpSaveName)<br />{<br /> if (NULL == lpName || NULL == lpType || NULL == lpSaveName)<br /> {<br /> return FALSE;<br /> }<br /> HRSRC hRsrc = ::FindResource(NULL, lpName, lpType);<br /> if (NULL
2010-12-02 15:10:00 870
原创 VC6 支持的最高Microsoft Platform SDK 版本
<br />Microsoft Platform SDK Febrary 2003<br />http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cab<br />http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FUL
2010-11-18 16:53:00 3156 2
原创 COM注册什么时候需要注册APPID
<br />COM 7.0以后有这样一个宏DECLARE_REGISTRY_APPID_RESOURCEID<br /> <br />在VS03以后的版本中,ATL工程中会自动添加这样的代码<br />class CXXModule : public CAtlDllModuleT< CXXModule ><br />{<br />public :<br /> DECLARE_LIBID(LIBID_xinstallerLib)<br /> DECLARE_REGISTRY_APPID_RESOURCEID(
2010-11-18 11:32:00 4102
原创 VC6 error LNK2001: unresolved external symbol _main
<br />vc6 ATL工程,debug下可以编译过,release下却有下面这个编译错误:<br />LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main <br />ReleaseMinSize/CHANEL.dll : fatal error LNK1120: 1 unresolved externals <br /> <br />原因:在release
2010-11-15 10:44:00 1205
原创 浏览器防护下的ActiveX问题
<br />浏览器防护多使用ring3 API HOOK。下面结合网页防护类的主流产品分析其潜在的兼容性问题。<br /><br /><br />使用ring3 api hook实现的浏览器保护,不可避免的要遇到和文件监控一样的问题。在实际对抗中,网马不断发展升级,已经开始将浏览器中的ring3 hook摘除,为了对抗此类威胁,主流软件多会采取不断检测自己的hook是否存在,发现不存在则重新将函数挂钩。造成多款软件争抢一个API的现象,导致浏览器无响应或者响应缓慢。特别是与CreateProcesss相关的
2010-11-11 14:45:00 1358
原创 IE7保护模式下插件的安装及权限提升
在微软的Vista操作系统中,为了提高安全性IE7运行于保护模式下, 这种模式以高度受限制的权限运行IE进程,也就说IE进程本身的权限很低。因此编写的插件如果使用高完整性资源则会失败,例如修改HKEY_LOCAL_MACHINE下的注册表项,为此微软提供了COM Elevation Moniker。COM Elevation Moniker允许运行在受限用户(LUA)的应用程序激活一个提升权限的COM对象,即在Vista系统上会弹出UAC提示框让用户提升权限(UAC打开状态下)。 <br />要创建提升权限
2010-11-11 14:38:00 2953 1
原创 SECURITY_ATTRIBUTES/SECURITY_DESCRIPTOR
<br />SECURITY_ATTRIBUTES sa;<br />SECURITY_DESCRIPTOR sd;<br />InitializeSecurityDescriptor( & sd,SECURITY_DESCRIPTOR_REVISION);<br />SetSecurityDescriptorDacl( & sd,TRUE,NULL,FALSE);<br />sa.nLength = sizeof (SECURITY_ATTRIBUTES);<br />sa.bInheritHand
2010-11-11 14:25:00 1664
转载 打通IE保护模式(六)保护模式中的其他限制
<br /><br />1.运行其他应用程序 <br /><br />IE具有另一个防止恶意代码启动或与其他进程通信的机制。如果一个插件试图启动另一个进程,IE将在启动这个进程前要求该用户同意。举个例子来说,使用查看源代码命令会引起如下提示:<br /><br /><br /><br /> 如果你的插件需要运行一个单独的EXE,你可以增加一个注册表键值来告诉IE你的EXE可以被信任并能够无须提示就被运行。这个控制这种行为的注册表键值是HKLM/Software/Microsoft/Internet Ex
2010-11-11 14:19:00 1272
转载 打通IE保护模式(五)启用你的插件和其他应用程序之间的通信
看到这儿,我们已经可以使用运行在IE进程中的代码来处理所有文件系统和注册表了。下面我们看一个更复杂的话题,它也需要一个更复杂的解决方案:运行在一个更高完整性级别的另一个进程的IPC。我们将介绍两种不同形式的IPC:内核对象和windows消息。 1.创建一个IPC对象 当一个插件和一个单独的进程希望通信的时候,这种通信发生在两个代码之间,而不用经过IE封装。NT安全API和强制性完整级别现在可以发挥它们的作用了,默认情况下从一个插件到一个单独的应用程序的通信是被阻挡的,因为这个应用程序运行在比
2010-11-11 14:17:00 2485
转载 打通IE保护模式(四)运行时检测保护模式/写注册表/提示用户保存文件
<br />IE 7有好几个新的API可以被扩展插件用来完成保护模式下限制的功能。这些API都在ieframe.dll中。你可以通过使用iepmapi.lib这个库来直接使用这些API,也可以在运行的时候使用LoadLibrary()/GetProcAddress()来得到这些函数的指针。如果你想让你的插件加载到Vista以前的Windows版本上,第二种方法是你必须使用的选择。 <br /><br /> 执行提升权限操作的许多功能使用到了一个代理进程(broker process),ieuser.ex
2010-11-11 14:11:00 3860
转载 打通IE保护模式(三)示例应用程序和扩展插件
<br />本文中的示例代码包含了两个项目。第一个项目,IEEExtension,是停靠在IE窗口底部的一个条形窗口:<br /><br /><br /> 第二个项目,DemoApp,是一个与上面的应用通信的EXE程序。DemoApp本身不完成太多任务,比较有趣的部分是与这个EXE程序通信的IEExtecntion。这种通信会受到IE保护模式的很大影响,这两个项目都演示了它们如何在保护模式的限制下运行,而且依然可以实现正常的互相通信。 <br /><br /> 这个条形框中具有几个按钮来实现不同的I
2010-11-11 11:33:00 1399
转载 打通IE保护模式(二)虚拟化
虚拟化(在某些微软文档中又被叫做重定向)功能可以防止一个进程修改注册表和文件系统中的保护区域,但是依然允许这个应用程序正常的运行。对中等完整性级别的进程来说,这个保护区域是诸如HKLM、system32和Program Files目录之类的系统关键区域。一个低完整级别的进程受限制性更大——它只能对特定的低权限的注册表和文件系统区域进行写操作,任何对这些区域外部进行写操作的行为都将被阻止。 当一个进程试图对它没有权限的区域进行写操作的时候,虚拟化功能都会阻止它们并且把这个写操作重定向到当前用户配置文件下
2010-11-11 11:30:00 1338
转载 打通IE保护模式(一)介绍保护模式
<br />IE浏览器的保护模式是Vista中的一个新功能,是类似用户帐号控制(UAC)的一种安全功能。在保护模式下,通过限制运行在IE进程下的代码不能修改系统部分文件,从而来保护计算机的安全。这样,即使一个恶意网页利用了IE或IE插件中的一个代码注入漏洞,注入的代码也不能够对系统造成破坏。 <br /><br /> 在我们深入了解保护模式对IE插件开发者意味着什么之前,我们需要先快速了解一下相关的安全功能。 <br /><br />1.完整性级别和UIPI <br /><br /> Vista引入
2010-11-11 11:27:00 1381
原创 MediaCenter开发整理(四)安装部分
<br />这部分其实是很头疼的一部分,因为SDK上提到的很多方法都行不通,可能是新版本的兼容有问题。所以很多地方都是我自己研究的方法,可能有的地方有点山寨。<br />MediaCenter的安装,其实是俩个部分:把我们编写的程序集注册到GAC,在MediaCenter中注册一个入口,链接到我们的程序集。<br />GAC的注册,可以使用MS提供的工具,但是这个工具用户机器上基本上是不可能有的,所以这个简单直接的方法被排除。另外可以用一个叫WIX的工具打包程序,我不知道他的内部执行过程是什么,又有太多的限
2010-09-21 14:02:00 874
原创 MediaCenter开发整理(三)C#部分
<br />其实MediaCenter的模式于asp.net的方式非常相似,C#代码相当于MCML代码部分的后台。其实这一部分的内容不需要了解很多就可以上手写MC的程序了,扫一遍API也就基本上可以了。<br />贴上这部分的整理结果。<br />MediaCenter编程C#<br />MCML与C#通过.net properties进行通信<br />MCMl不能使用C#的变量,只能定义properties 含有get和set的<br />它应该是基于ModeItem并且在set里应该包含FireP
2010-09-21 13:40:00 1234 2
原创 MediaCenter开发整理(二)MCML
<br />接着贴下个部分<br />MediaCenter编程MCML<br /> <br />Media Center不能做的事:<br />不能改变已有的程序界面——mediacenter不是用户定制的环境!<br />不能使用已经存在的Object——只有3个可用的Object:Text,Graphics,ColorFills其他的只能从0写起!<br />所有用户界面相关的.netAX等等都不可用!<br />MCML M(mode) V(view)模式 M——.netObje
2010-09-21 13:34:00 1721 2
原创 MediaCenter开发整理(一)关于SDK
<br />前一段时间开发了一个MediaCenter的程序,由于之前没有开发过类似的程序,所以做了一下小研究,整理一下研究结果,有点乱,先挂上以后整理。<br />这里参考了MediaCenter的SDK帮助文档和SteveHarding写的一本叫做Programming in Vista Media Center的书(作者只写了半本,下半本还没写出来,很尴尬,但是对MCML的讲解比较详细,可以入个门,看过之后看SDK不会那么迷茫),又看了SDK里面的大部分Demo。<br />先贴上整理的东西,以后再写
2010-09-21 13:31:00 1241
C/C++标准库函数速查
2010-11-11
WINDOWS脚本技术.chm
2010-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人