当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 简介: Api拦截并不是一个新的技术,很多商业软件都采用这种技术。
 

 

    摘要: 一般的窗口的创建是使用create函数,这个函数在创建窗口之前调用了precreatewindow函数,并且允许在创建创建之前在precreatewindow注册一个拥有自定义窗口样式的新的窗口类,来创建一个拥有自定义类名新的窗口。而模式对话框是通过createdialogindirect来创建的,在这当中并没有调用precreatewindow函数,重载的precreatewindow函数根本......
    摘要: 客户端使用list命令指定获取服务器端ftp共享目录(或者下面的子目录),服务器端将通过数据端口将该指定目录下的文件列表(包括子目录)信息发送给客户端。本文对该文件列表信息进行分析和解析。文件列表信息分为unix格式和dos格式两种。笔者是比照了serv-u和微软自带的ftp服务器写出本文的,也许别的服务器另有新的方式或者格式也说不定,欢迎大家补充。首先不妨来看一下unix格式和dos格式下的文......


Win2K下的Api函数的拦截
简介: api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的api函数的拦截,不外乎两种方法,第一种是mr. jeffrey richter 的修改exe文件的模块输入节,种方法,很安全,但很复杂,而且有些exe文件,没有dll的输入符号的列表,有可能出现拦截不到的情况.第二种方法就是常用的jmp xxx的方法,虽然很古老,却很简单实用. 本文一介绍第二种方法在win2k下的使用.第二种方法,win98/me 下因为进入ring0级的方法很多,有ldt,idt,vxd等方法,很容易在内存中动态修改代码,但在win2k下,这些方法都不能用,写wdm太过复杂,表面上看来很难实现, 其实不然.win2k为我们提供了一个强大的内存api操作函数---virtualprotectex,writeprocessmemeory,readprocessmemeory,有了它们我们就能在内存中动态修改代码了,其原型为: bool virtualprotectex( handle hprocess, // 要修改内存的进程句柄 lpvoid lpaddress, // 要修改内存的起始地址 dword dwsize, // 修改内存的字节 dword flnewprotect, // 修改后的内存属性 pdword lpfloldprotect // 修改前的内存属性的地址 ); bool writeprocessmemory( handle hprocess, // 要写进程的句柄 lpvoid lpbaseaddress, // 写内存的起始地址 lpvoid lpbuffer, // 写入数据的地址 dword nsize, // 要写的字节数 lpdword lpnumberofbyteswritten // 实际写入的子节数 ); bool readprocessmemory( handle hprocess, // 要读进程的句柄 lpcvoid lpbaseaddress, // 读内存的起始地址 lpvoid lpbuffer, // 读入数据的地址 dword nsize, // 要读入的字节数 lpdword lpnumberofbytesread // 实际读入的子节数 ); 具体的参数请参看msdn帮助.
...   下一页
    摘要: ::視窗控制項 清單方塊 list boxes篇:: 清單方塊屬於視窗控制元件之一,主要的功能是提供一個視窗,在其上顯示項目供使用者選擇。這些顯示的項目能以是文字或是bitmaps格式的圖片(也可二者同時)的形式呈現。如果清單方塊的視窗無法同時顯示所有項目,還可以提供捲軸讓使用者依需要上下捲動以顯示更多的清單項目。 就像學校的考試為了鑑別考生的學習程度而在選擇題作答方式上有單選與複選的差別,應......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE