自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 利用钩子注入DLL进而HOOK API的防范

1.让钩子失效,进而不让DLL注入.可能通过为要防范的进程安装局部钩子的方法,让相同的钩子得不到处理的机会.'2.DLL注入后,HOOK API是通过修改进程模块的导入表实现的,如果我们对重要的函数调用采取如下的方式,而不用导入表,那么也可以让HOOK API失效  比如我们想防止MessageBox被HOOK,可以在程序里通过如下方式调用:typedef int (WINAPI* p

2011-03-31 19:26:00 1204

原创 浅析利用钩子注入DLL的原理与防范

<br />  windows的各个进程的地址空间是相互隔离的,所以一个进程代码是无法到另一个进程的地址空间去运行的.但是通过在进程中安装全局钩子的方法,钩子函数所在的DLL就有可能被操作系统加载到其它进程的地址空间中去,进而实现了DLL注入.实现了DLL注入之后,这个DLL的代码就可以在另一个进程的地址空间里做任何事.<br /> 下面简单介绍一下利用钩子注入DLL的步骤<br /> 1.调用SetWindowsHookEx安装系统范围内的钩子.<br /> 2.将钩子函数的实现写在DLL里<br /> 

2011-03-31 19:20:00 2374 1

原创 QQ是如何防止其它程序通过安装键盘钩子截获密码信息的猜想之一

<br />钩子函数的处理顺序与钩子进入钩子链的先后顺序相反,后进入钩子链的钩子的函数先处理.这样,只要保证QQ安装的键盘钩子始终处于钩子链的尾端就可以.这样可以采用下面的方式实现:<br />每当QQ的密码框获得焦点时,安装键盘钩子,焦点移开时将其移除.这样当在密码框中输入密码时就可以保证QQ的钩子函数先处理,从而将这个消息不继续传递或者发送模拟的键盘消息.<br />键盘钩子属于普通钩子,这样其它程序如果安装了更低级的钩子,就有可能在键盘钩子处理前先处理它.这样QQ也可以采取同样的方式,使自己的低级钩子

2011-03-29 11:31:00 1839

原创 用dll实现类的动态创建模拟实例

<br />通过DLL的方式,可以使C++程序在运行时动态的生成一个类对象.测试方法如下:<br />首先,将C++程序编译链接生成.EXE,这个程序在生成的时候DLL里还没有CAn这个类,因此运行时程序报未定义的错误.但是后来在DLL里加入这个类后,再运行就可以生成这个类对象并调用这个对象的方法.<br />下面是DLL的.H文件:<br /><br />#ifdef MYCLASSDLL_EXPORTS<br />#define MYCLASSDLL_API __declspec(dllexport)<

2011-03-27 17:44:00 712

原创 由苏州工行的BICE所想到的

<br />    工行的BICE有一个很有趣的功能,我们开发的通讯组件代码,.class文件只要放到服务端的指定目录下,并在配置文件中配置相应的信息,这样BICE就可以在运行时动态的创建我们的通讯组件类对象,进而使用它(虽然BICE要重启才能生效,但是我认为需要重启与BICE设计时的实现有关,而JAVA本身是能够实现动态加载类,并生成类对象的).JAVA程序员都知道这是利用了JAVA的强大的反射功能.<br />    无独有偶,C#是模仿JAVA的语言(不可否认,微软是看到了JAVA的强大嫉妒了).C#

2011-03-27 17:35:00 860

原创 C++实现类似JAVA的反射

<br /><br />  一个JAVA程序员都知道,JAVA的反射功能让框架程序可以变得很强大,可以在运行期间根据一个类名,动态地创建该类的一个对象.<br />  一个C++程序员都知道,C++本身是不具备反射能力的.但是,JAVA的反射说白了,就是对内存的玩弄而已.<br />  在程序运行前或者在程序运行中(个人认为,JAVA的class.forname()是在程序运行中通过类加载器加载该类的.class,从而得到了该类的实例化函数,进而动态创建该对象)在内存中就存在了该类的类名与创建该类对象函数(

2011-03-26 14:38:00 1715 1

原创 23种设计模式

<br />1、工厂模式:Factory <br />客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 <br /><br />2、建造模式:Builder <br />将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。

2011-01-04 10:41:00 523

原创 求任意n的阶乘---有详细注释

<br /><br />void main()<br />{<br />    int n;  //要计算阶乘的n<br />    int bit=29999; //个位所在位置<br />    int i=1;   //从1开始做乘法<br /> <br />    int result[30000]={0}; //保留结果数组,用3万位<br />    int carry=0;           //某位与n相乘后的进位<br />    long tmp;              //某位与

2010-12-29 15:56:00 609

原创 我理解之windows的内核对象

作为一个程序员,其实任何东西我都想从程序的角度去思考它.因此,在我看来,内核对象就是一个结构体,一个struct.但它又不是普通的结构体,说它不普通是因为:    1.它是由内核维护的.    2.它只能被运行在内核模式下的代码访问,从写代码的角度而言,就是只能通过windows提供的API来访问它.我们编写一个程序时,有时需要通过一些全局的变量来达到各个函数共享的目的,其实内核对象在一定程度上就相当于这个全局变量,把操作系统看作一个主程序,操作系统内核通过管理这些内核对象来使各个进程正常运作.综上,内核系

2010-12-27 22:21:00 819 1

原创 巧用shift实现打印所有的位置参数

<br />################################<br />Start Script<br />#######################################<br />1 #!/bin/bash<br />2 # 使用'shift'来穿过所有的位置参数.<br />3<br />4 until [ -z "$1" ] # 直到所有参数都用光<br />5 do<br />6 echo -n "$1 "<br />7 shift<br />8 done<br />

2010-12-27 22:05:00 563

原创 加入CSDN大家庭

<br />CSDN是一个技术爱好都的天地,希望在这里能和大家一起学习和进步,不断提高自己在技术方面的能力.

2010-12-27 22:04:00 456

空空如也

空空如也

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

TA关注的人

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