大量的细节使得Com看上去很复杂,但是使用起来却很简单。最难的部分就是理解里面的数据结构,尽管COM是语言无关的,但是他借用了很多c++的术语来描述自己。
为了能使用某个对象的com接口函数,你必须首先要从类厂中创建这个对象,并且让他来返回接口指针。这个过程被CoCreateInstance这个API函数完成。当你使用完接口时,要调用Release方法。一个COM对象可以看作是一个服务,调用com的应用程序就是他的客户端。
在调用com接口函数之前,你需要了解接口是什么,一个com接口就是一个函数指针表,我们还是从IUnknown接口开始,如果你创建了一个组件导出了IUnknown接口,那么你就有了一个全功能的com对象。IUnknown有三个基本的几口方法,既然所有的接口都是从它派生出来,那么我们一定要记住,一个接口实际上就是一个函数指针成员组成的结构体。
阅读全文>
发表于 @ 2008年03月26日 19:42:00|评论(loading...)|举报|收藏
组件对象模型com是以win32 dll或exe形式发布的执行代码组成的。Com是由一些对象和对象的接口组成,在com里,接口提供对象操作的机制。 而接口是由一个或者多个相关的方法、属性、事件组成的。在这里我们开发一个简单的但是功能齐全的一个进程内com组件(即以dll形式存在)。
这里假设你已经了解了com对象模型的基础知识,了解什么是虚表,什么是虚函数表指针。如果你不熟悉这些,建议看看《com本质论》这本书。
我们先来分析下进程内com服务的组成。由于它是一个dll形式发布的,其中包括5个重要的函数。其中后面的四个是要作为dll导出函数来导出的。
DllMain: 这是动态链接库德第一个入口函数,它在库被加载的时候被调用,通过这个函数,可以对客户端程序进行检查。
DllRegisterServer:通过这个函数能够实现组建的自我注册,注册信息作为资源保存在动态链接库中,这个函数能够读取资源,把信息写进注册表,使用
regsvr32.exe 注册组建时,实际上是调用了组件输出的这个函数。
DllUnregisterServer: 当一个组件不再使用时阅读全文>
发表于 @ 2008年03月26日 19:41:00|评论(loading...)|举报|收藏
[一]基础知识篇
组件对象模型(Com)在windows操作系统中应用越来越广泛。com因为大量的技术细节显得很复杂,但是正是这种复杂才使com组件的调用显得十分简单。 com和使用程序采用server/client架构。下面我们将在后续的两篇中介绍com组件的编写与调用。
com编程时当前程序开发的热点,各种编程语言都为组件编写提供了很好的支持,但是汇编语言例外,汇编语言开发组件没有优势。但是透过汇编开发的了解,可以使我们了解com组件的工作原理。好了,闲话少说,开始介绍:)
所有的inc头文件都要满足如下特点:
1) masm32松散的类型定义约定将继续使用。就是说参数可以被定义为他们的基本类型,代表性的如:DWORD
2) 里面不能创建任何的代码,仅仅包含定义信息,头文件里面需要包含代码,则必须定义为宏。
3) 结构体应该参照他们的C原形来定义。
4) GUID 结构定义在windows.inc文件中,GUID的值应该通过textequ宏来定义,这样不会直接产生任何代码。
5) 接口定义分为两步:
1.一个通用的宏产生一阅读全文>
发表于 @ 2008年03月26日 19:39:00|评论(loading...)|举报|收藏
这是我对代码变形的一点认识,代码变形能干扰反编译软件(当然用点小技巧能跳过干扰码),能有效的阻止菜鸟黑客的破坏。阅读全文>
发表于 @ 2008年03月09日 16:33:00|评论(loading...)|举报|收藏
我研究出了一种新的在远程进程中执行代码的可能性,就是利用一个未文档函数在远程进程地址空间写入代码,并且用一种新的技术在远程进程中执行它,这种技术完全工作在用户模式下,并且不需要特殊的条件比如像管理员权限或者之类的要求。让源码说明一切:(我为我的英文水平感到抱歉,我来自德国)
代码:
阅读全文>
发表于 @ 2008年03月09日 10:03:00|评论(loading...)|举报|收藏
原来的程序一遇到0字节的文件就会挂掉,在这里我添加了SEH错误处理代码,完美解决了挂掉的问题!阅读全文>
发表于 @ 2008年03月08日 22:11:00|评论(loading...)|举报|收藏
我就从简单分析下怎样躲过杀毒软件的查杀说起吧
这是我以前的文章,据说这种技术可以过主动防御
阅读全文>
发表于 @ 2008年03月08日 22:10:00|评论(loading...)|举报|收藏
把以下代码复制到IE地址栏里按回车,嘿嘿阅读全文>
发表于 @ 2008年03月08日 21:48:00|评论(loading...)|举报|收藏
GOOGLE服务地址入口阅读全文>
发表于 @ 2008年03月08日 21:46:00|评论(loading...)|举报|收藏
VC的编译开关参数大全阅读全文>
发表于 @ 2008年03月08日 21:45:00|评论(loading...)|举报|收藏
用OD跟踪金山游侠的部分代码并用汇编还原其功能阅读全文>
发表于 @ 2008年03月08日 21:44:00|评论(loading...)|举报|收藏
收集关于Windows消息的代码目录阅读全文>
发表于 @ 2008年03月08日 21:42:00|评论(loading...)|举报|收藏
FS寄存器指向当前活动线程的TEB结构(线程结构)阅读全文>
发表于 @ 2008年03月08日 21:40:00|评论(loading...)|举报|收藏
这是我自己没事的时候用写的HOOKAPI,不过自己感觉有点乱,没有高手的程序思路清晰啊阅读全文>
发表于 @ 2008年03月08日 21:37:00|评论(loading...)|举报|收藏
进程链表监视进程是否被创建或者销毁阅读全文>
发表于 @ 2007年05月11日 21:07:00|评论(loading...)|举报|收藏