linyawen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月31日

摘要: http://topic.csdn.net/t/20030929/19/2315511.html 阅读全文
posted @ 2011-03-31 09:47 linyawen 阅读(306) 评论(0) 推荐(0) 编辑

2011年3月25日

摘要: 截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // hook procedure HINSTANCE hMod, // handle to application instance DWORD dwThreadId // thread identifier 阅读全文
posted @ 2011-03-25 16:35 linyawen 阅读(798) 评论(0) 推荐(0) 编辑

摘要: 论坛里有关于HOOK API的贴子, 但其实现在方式显示得麻烦, 其实现在拦截API一般不用那种方式, 大都采用inline Hook API方式。其实也就是直接修改了要拦截的API源码的头部,让它无条件跳转到我们自己的处理过程。 不多说别的了,开始我们自己的Hook API吧。 我们今天要拦截的API如下: MessageBoxA、MessageBoxW、MessageBeep 和 OpenProcess 。 首先,大家都知道要在整个系统范围中拦截,需要使用Dll来完成。现在我们打开Delphi 2009,新建一个Dll工程:hookDll。需要说明的是,Delphi是完全面向对象的编程语言 阅读全文
posted @ 2011-03-25 16:34 linyawen 阅读(12172) 评论(2) 推荐(1) 编辑

2011年1月31日

摘要: 在DELPHI中HOOK程序的编写在编写WINDOWS应用程序的时候,有时候我们希望所编写的程序可以捕获用户的某一个特定的动作(比如是否按下鼠标右键)。如果我们的程序处于系统前台,实现这一功能并不复杂。但如果程序在后台运行或者程序不是当前运行的进程的话,这一功能应该如何实现呢?答案就是HOOK程序。  ■ 使用DELPHI实现的HOOK程序  DELPHI作为一种可视化的开发工具以其程序开发的短周期和编译代码的高效率受到了广大程序人员的喜爱。一般来说,编写HOOK程序应将hook procedures函数编写为DLL ,然后在主程序中调用。因此,编写HOOK程序需要调用API函数并将其编译为D 阅读全文
posted @ 2011-01-31 00:17 linyawen 阅读(1867) 评论(1) 推荐(0) 编辑

摘要: 有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的**头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧. 拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据). 下面是一个尽量简化了的API HOOK的模版,原理是 阅读全文
posted @ 2011-01-31 00:15 linyawen 阅读(1943) 评论(0) 推荐(1) 编辑

2011年1月26日

摘要: Delphi中的线程类 - TThread详解作者: Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线程。当一个进程中用到超过一个线程时,就是所谓的“多线程”。那么这个所谓的“一段代码”是如何定义的呢?其实就是一个函数或过程(对Delphi而言)。如果用Wind 阅读全文
posted @ 2011-01-26 11:44 linyawen 阅读(974) 评论(0) 推荐(1) 编辑

2011年1月17日

摘要: SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or  WS_EX_TRANSPARENT or  WS_EX_LAYERED );  WS_EX_ACCEPTFILES = 0x00000010  指明了一个已创建视窗具有拖拽文件功能  WS_EX_APPWINDOW = 0x00040000  强制一个可见的顶级视窗到工具栏上  WS_EX_CLIENTEDGE = 0x00000200  使一个视窗具有凹陷边框  WS_EX_COMPOSITED = 0x02000000  Windows XP: 阅读全文
posted @ 2011-01-17 23:55 linyawen 阅读(3948) 评论(0) 推荐(0) 编辑

摘要: p大家在运用Delphi编写网络应用程序时可能会遇到这样一个问题:在一个由Windows NT和Novell Netware组成的网络环境中,应用程序需要使用Novell网上的某些数据,如果每次都手工在Windows资源管理器中映射,断开网络驱动器,不仅繁琐而且显得不够专业。本文将介绍在Delphi中使用Windows32 API函数解决这一问题。 一、 基本原理在Microsoft Windows环境下,应用程序使用Windows网络函数(WNet)来实现网络功能而不用关心网络的供应商及具体实现。因为WNet函数是独立于网络的。 Wnet函数主要有:WnetAddConnection , 阅读全文
posted @ 2011-01-17 16:04 linyawen 阅读(821) 评论(0) 推荐(0) 编辑

摘要: 1楼:MSDN中例子: Adding a Network Connection Windows NT/Windows 2000 To make a connection to a network resource described by a NETRESOURCE structure, an application can call the WNetAddConnection2, the WNetAddConnection3, or the WNetUseConnection function. The following example demonstrates use of the WN 阅读全文
posted @ 2011-01-17 15:46 linyawen 阅读(2374) 评论(0) 推荐(0) 编辑

摘要: IE和我们的代码使用的HTTP头里面都有这条内容,将这条内容删掉我得到了正确的结果。原因如下:这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作,所以文件内容是正确的。而在我们的代码里是将这些内容直接存入文件,不存在解压缩的过程,所以Size变小,内容也不一样。细心的人可以发现在,IE在Down某一个比较大一点的东西时,Down的过程中显示的大小,比Down下来实际大小要小,这就是因为在接收的过程中接收的是压缩文件,而存到本地后的文件当然要大一些了哈~~Accept-Encoding: gzip,deflate文 阅读全文
posted @ 2011-01-17 11:18 linyawen 阅读(59732) 评论(0) 推荐(0) 编辑