- 博客(76)
- 资源 (30)
- 收藏
- 关注
转载 VC显示网页验证码、模拟优快云网页登录
这两天,本来想花点时间研究一下QQ空间、农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通。有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是“出师未杰身先死”,惭愧惭愧......于是只好挑优快云这类简易一些的尝试学习一下(仅供学习交流),下面是学习笔记:程序运行截图:1、本机环境:Windows XP SP3、A
2011-10-25 13:51:00
1069
原创 DLL的远程注入技术
<br />DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载,用户也就无法在资源管理器中删除这个DLL文件,真可谓一箭双雕哉。<br /> 记得2003年QQ尾巴病毒肆虐的时候,就已经有些尾巴病毒的变种在使用这种技
2011-04-22 02:18:00
458
原创 创建“通用的”动态链接库(DLL)
<br />最近有许多人问如何让动态链接库的输出函数能够被任何支持动态链接库的语言调用。写动态链接库是很EASY的事情。但是,他们大多觉得输出的名字有乱字符(如:_vbShiftRight@1)。我想在这里就讨论一下如何让输出函数的名字中不出现乱子符。<br /> 首先,除非你绝对需要使用C++编码,否则我还是推荐使用C来写DLL。这里我想让创建的DLL可以在VB中使用。<br /> 你需要实现自己DLL的入口点函数和保证代码使用stdcall调用规范,但这要依赖你使用的编译器。例如,你可以在VC中使用
2011-04-22 02:15:00
560
原创 C/C++中动态链接库的创建和调用
<br />动态连接库的创建步骤:<br /> 一、创建Non-MFC DLL动态链接库<br /> 1、打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project<br /> —>工程名:DllDemo<br /> 2、新建一个.h文件DllDemo.h<br />以下是引用片段:<br /> #ifdefDllDemo_EXPORTS<br /> #defineDllAPI__declspec(dllexp
2011-04-22 02:15:00
503
原创 Win32环境下dll编程原理
比较大应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。 <br
2011-04-22 02:07:00
340
原创 DLL(Dynamic Link Libraries)
<br /><br />DLL(Dynamic Link Libraries)专题:<br /> 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时
2011-04-22 02:04:00
334
原创 如何做才能从dll中导出类
<br />能不能在一个dll中定义一个类,然后在程序中动态链接这个dll,然后导出这个类呢?<br /><br />要用 MFC 的扩展DLL写<br />倒出类定义<br />//定义一个导出类<br />class AFX_EXT_CLASS CMouseHook : public CObject <br />{<br />public:<br />CMouseHook();<br />virtual ~CMouseHook();<br />BOOL StopMouseHook();<br />BO
2011-04-22 02:01:00
375
原创 第四章 输出文字(绘制和更新,GDI 简介)
<br />在前一章,您看到了一个简单的Windows 98程序,它在窗口中央,或者更准确地说,在显示区域中央显示一行文字。正如我们学到的,显示区域是整个应用程序窗口中未被标题列、窗口边框,以及可选的菜单列、工具列、状态列和滚动条占据的部分。简而言之,显示区域是窗口中可以由程序任意书写和传递视觉信息的部分。<br />对于程序的显示区域,您几乎可以为所欲为,只不过您不能假定窗口大小是某一特定尺寸,或者在程序执行时其大小会保持不变。如果您不熟悉图形窗口环境的程序设计,这些限制可能会使您感到惊讶:不能再假设屏幕
2011-04-22 01:58:00
886
原创 第四章 输出文字(滚动条)
<br />滚动条<br />滚动条是图形使用者接口中最好的功能之一,它很容易使用,而且提供了很好的视觉回馈效果。您可以使用滚动条显示任何东西--无论是文字、图形、表格、数据库记录、图像或是网页,只要它所需的空间超出了窗口的显示区域所能提供的空间,就可以使用滚动条。<br />滚动条既有垂直方向的(供上下移动),也有水平方向的(供左右移动)。使用者可以使用鼠标在滚动条两端的箭头上或者在箭头之间的区域中点一下,这时,「卷动方块」在卷动列内的移动位置与所显示的信息在整个文件中的近似相关位置成比例。使用者也可以用
2011-04-22 01:54:00
637
原创 第四章 输出文字(滚动条)
<br />滚动条<br />滚动条是图形使用者接口中最好的功能之一,它很容易使用,而且提供了很好的视觉回馈效果。您可以使用滚动条显示任何东西--无论是文字、图形、表格、数据库记录、图像或是网页,只要它所需的空间超出了窗口的显示区域所能提供的空间,就可以使用滚动条。<br />滚动条既有垂直方向的(供上下移动),也有水平方向的(供左右移动)。使用者可以使用鼠标在滚动条两端的箭头上或者在箭头之间的区域中点一下,这时,「卷动方块」在卷动列内的移动位置与所显示的信息在整个文件中的近似相关位置成比例。使用者也可以用
2011-04-22 01:54:00
386
原创 第四章 输出文字(滚动条)
<br />滚动条<br />滚动条是图形使用者接口中最好的功能之一,它很容易使用,而且提供了很好的视觉回馈效果。您可以使用滚动条显示任何东西--无论是文字、图形、表格、数据库记录、图像或是网页,只要它所需的空间超出了窗口的显示区域所能提供的空间,就可以使用滚动条。<br />滚动条既有垂直方向的(供上下移动),也有水平方向的(供左右移动)。使用者可以使用鼠标在滚动条两端的箭头上或者在箭头之间的区域中点一下,这时,「卷动方块」在卷动列内的移动位置与所显示的信息在整个文件中的近似相关位置成比例。使用者也可以用
2011-04-22 01:54:00
372
原创 第五章 图像基础(设备内容)
<br />设备内容<br />在开始绘图之前,让我们比第四章更精确地讨论一下设备内容。<br />当您想在一个图形输出设备(诸如屏幕或者打印机)上绘图时,您首先必须获得一个设备内容(或者DC)的句柄。将句柄传回给程序时,Windows就给了您使用设备的权限。然后您在GDI函数中将这个句柄作为一个参数,向Windows标识您想在其上进行绘图的设备。<br />设备内容中包含许多确定GDI函数如何在设备上工作的目前「属性」,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows
2011-04-22 01:53:00
586
原创 第五章 图像基础(GDI 的结构)
<br />图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。<br />不幸的是,如果要对GDI进行全面的讲述,将需要一整本书-当然不是这本书。在本章中,我只是想向您提供画线和填入区域的基本知识,这对于理解下面
2011-04-22 01:52:00
565
原创 第五章 图像基础(绘制填入区域)
<br />绘制填入区域<br />现在再更进一步,从画线到画图形。Windows中七个用来画带边缘的填入图形的函数列于表5-3中。<br />表5-3<br /> <br />函数<br />图形<br />Rectangle<br />直角矩形<br />Ellipse<br />椭圆<br />RoundRect<br />圆角矩形<br />Chord<br />椭圆周上的弧,两端以弦连接<br />Pie<br />椭圆上的饼图<br />Polygon<br />多边形<br />PolyPol
2011-04-22 01:51:00
503
原创 第五章 图像基础(矩形、区域和剪裁)
<br />矩形、区域和剪裁<br />Windows包含了几种使用RECT(矩形)结构和「区域」的绘图函数。区域就是屏幕上的一块地方,它是矩形、多边形和椭圆的组合。<br />矩形函数<br />下面三个绘图函数需要一个指向矩形结构的指针:FillRect (hdc, &rect, hBrush) ;<br /><br />FrameRect (hdc, &rect, hBrush) ;<br /><br />InvertRect (hdc, &rect) ;<br /><br />在这些函数中,rect
2011-04-22 01:50:00
695
原创 第五章 图像基础(GDI 映像方式)(1)
<br />GDI 映像方式<br />到目前为止,所有的程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。事实上,「映像方式」是一种几乎影响任何显示区域绘图的设备内容属性。另外有四种设备内容属性-窗口原点、视端口原点、窗口范围和视端口范围-与映像方式密切相关。<br />大多数GDI绘图函数需要坐标值或大小。例如,下面是TextOut函数:TextOut (hdc, x, y, psText, iLength) ;<br /><br />参数x和y分别表示文字的开始位置。参
2011-04-22 01:48:00
661
转载 第五章 图像基础(GDI 映像方式)(2)
<br />WHATSIZE程序<br />Windows的小历史:第一篇如何写作Windows程序的介绍文章出现在《Microsoft Systems Journal》1986年12月号上。在那篇文章中,范例程序叫做WSZ(「what size:什么尺寸」),它以图素、英寸和毫米为单位显示了显示区域的大小。那个程序的更简易版本是WHATSIZE,如程序5-6所示。程序显示了以五种度量映像方式显示的窗口显示区域的大小。程序5-6 WHATSIZE<br /><br />WHATSIZE.C<br /><b
2011-04-22 01:48:00
337
原创 第十三章 使用打印机(打印图形和文字1)
<br />打印图形和文字<br />在一个Windows程序中,打印所需的额外负担通常比FORMFEED程序高得多,而且还要用GDI函数来实际打印一些东西。我们来写个打印一页文字和图形的程序,采用FORMFEED程序中的方法,并加入一些新的东西。该程序将有三个版本PRINT1、PRINT2和PRINT3。为避免程序代码重复,每个程序都用前面所示的GETPRNDC.C文件和PRINT.C文件中的函数,如程序13-4所示。程序13-4 PRINT<br />PRINT.C<br /><br />/*---
2011-04-22 01:45:00
995
原创 第十四章 位图和Bitblt(位块传输)
<br />位块传输<br />我前面提到过,您可以把整个视讯显示器看作是一幅大位图。您在屏幕上见到的图素由储存在视讯显示卡上内存中的位来描述。任何视讯显示的矩形区域也都是一个位图,其大小是它所包含的行列数。<br />让我们从将图像从视讯显示的一个区域复制到另一个区域,开始我们在位图世界的旅行吧!这个是强大的BitBlt函数的工作。<br />Bitblt(读作「bit blit」)代表「位块传输(bit-block transfer)」。BLT起源于一条汇编语言指令,该指令在DEC PDP-10上用来传
2011-04-22 01:43:00
2368
原创 第十四章 位图和Bitblt(位图入门,位图尺寸)
<br />位图呈矩形,并有空间尺寸,图像的高度和宽度都以图素为单位。例如,此网格可描述一个很小的位图:宽度为9图素,高度为6图素,或者更简单地计为9×6:<br /> <br /> <br />习惯上,位图的速记尺寸是先给出宽度。位图总数为9×6或者54图素。我将经常使用符号cx和cy来表示位图的宽度和高度。c表示计数,因此cx和cy是沿着x轴(水平)和y轴(垂直)的图素数。<br />我们能根据x和y坐标来描述位图上具体的图素。一般(并不都是这样),在网格内计算图素时,位图开始于图像的左上角。这样,在此
2011-04-22 01:43:00
1355
原创 第十四章 位图和Bitblt(GDI 位图对象2)
程序14-6 HELLOBIT<br />HELLOBIT.C<br /><br />/*-----------------------------------------------------------------------<br /><br /> HELLOBIT.C -- Bitmap Demonstration<br /><br /> (c) Ch
2011-04-22 01:42:00
427
原创 第十四章 位图和Bitblt(GDI 位图对象1)
<br />GDI 位图对象<br />我在本章前面已提到过Windows从1.0开始就支持GDI位图对象。因为在Windows 3.0发表了设备无关位图,GDI位图对象有时也称为设备相关位图,或者DDB。我尽量不全部引用device-dependent bitmap的全文,因为它看上去与device-independent bitmap类似。缩写DDB会好一些,因为我们很容易把它与DIB区别开来。<br />对程序写作者来说,现存的两种不同型态的位图从Windows 3.0开始就更为混乱。许多有经验的Wi
2011-04-22 01:40:00
627
原创 第十五章 与设备无关的位图(显示和打印3)
<br />缩放到合适尺寸<br />SetDIBitsToDevice完成了将DIB的图素对点送入输出设备的显示程序。这对于打印DIB用处不大。打印机的分辨率越高,得到的图像就越小,您最终会得到如邮票大小的图像。<br />要通过缩小或放大DIB,在输出设备上以特定的大小显示它,可以使用StretchDIBits:iLines = StretchDIBits (<br /><br /> hdc, // device co
2011-04-22 01:39:00
777
原创 第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /
2011-04-22 01:37:00
704
原创 第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /
2011-04-22 01:36:00
556
原创 第十五章 与设备无关的位图(DIB 和 DDB 的结合2)
<br />与SetDIBits函数相似的函数是GetDIBits,您可以使用此函数把DDB转化为DIB:int WINAPI GetDIBits (<br /><br /> hdc, // device context handle<br /><br /> hBitmap, // bitmap handle<br /><br /> yScan, /
2011-04-22 01:36:00
463
原创 第十七章 文字和字体(有趣的东西)
有趣的东西根据外形轮廓表示字体字符提供了将字体与其它图形技术相结合的可能性。前面我们讨论了旋转字体的方式。这里讲述一些其它技巧。继续之前,先了解两个重要的预备知识:绘图路径和扩展画笔。GDI绘图路径绘图路径是储存在GDI内的直线和曲线的集合。绘图路径是在Windows的32位版本中发表的。绘图路径看上去类似于区域,我们确实可以将绘图路径转换为区域,并使用绘图路径进行剪裁。但随后我们会发现两者的不同。要定义绘图路径,可先简单呼叫BeginPath (hdc) ;进行该呼叫之后,所画的任何线(例如,直线、弧及贝
2011-04-22 01:33:00
499
原创 第二十章 多任务和多线程(多任务的各种模式1)
<br />Windows 的多线程处理<br />建立新的线程的API函数是CreateThread,它的语法如下:hThread = CreateThread (&security_attributes, dwStackSize, ThreadProc,<br /><br /> pParam, dwFlags, &idThread) ;<br /><br />第一个参数是指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该
2011-04-22 01:31:00
366
原创 第二十章 多任务和多线程(多任务的各种模式)
<br />多任务是一个操作系统可以同时执行多个程序的能力。基本上,操作系统使用一个硬件时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小,并且机器也没有由于太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着。<br />多任务并不是什么新的东西。在大型计算机上,多任务是必然的。这些大型主机通常有几十甚至几百个终端机和它连结,而每个终端机使用者都应该感觉到他或者她独占了整个计算机。另外,大型主机的操作系统通常允许使用者「提交工作到背景」,这些背景作业可以在使用者进行其它工作时,
2011-04-22 01:31:00
632
原创 第二十章 多任务和多线程(多任务的各种模式2)
// --------------------------------------------------------------------------<br /><br />// Window 2: Display increasing sequence of prime numbers<br /><br />// --------------------------------------------------------------------------<br /><br /><br />LRE
2011-04-22 01:30:00
343
原创 第二十章 多任务和多线程(多任务的各种模式4)
<br />// Window 3: Display increasing sequence of Fibonacci numbers<br /> <br />// ----------------------------------------------------------<br /> <br /><br />void Thread3 (PVOID pvoid)<br /> <br />{<br /> <br /> HDC
2011-04-22 01:29:00
324
原创 第二十章 多任务和多线程(多任务的各种模式4)
<br />// Window 3: Display increasing sequence of Fibonacci numbers<br /> <br />// ----------------------------------------------------------<br /> <br /><br />void Thread3 (PVOID pvoid)<br /> <br />{<br /> <br /> HDC
2011-04-22 01:27:00
318
原创 第二十章 多任务和多线程(线程同步)
<br />线程同步<br />大约每年一次,在我公寓窗外的交通繁忙地段的红绿灯会停止工作。结果是造成交通的混乱,虽然轿车一般能避免撞上别的轿车,但是这些车经常挤在一起。<br />我用术语称两条路相交的十字路口为「临界区域」。一辆向南的车和一辆向西的车不可能同时通过一个十字路口而不撞着对方。依赖于交通流量,可以采用不同的方法来解决这个问题。对于视野清楚车辆稀少的路口,可以相信司机有处理的能力。车辆增多可能会要求一个停车号志,而更加繁忙的交通则将要求有红绿灯,红绿灯有助于协调路口的交通(当然,这些灯号必须正
2011-04-22 01:26:00
402
原创 第九章 子窗口控件(静态类别,滚动条类别)
<br />静态类别<br />在CreateWindow函数中指定窗口类别为「static」,您就可以建立静态文字的子窗口控件。这些子窗口非常「文静」。它既不接收鼠标或键盘输入,也不向父窗口发送WM_COMMAND消息。<br />当您在静态子窗口上移动或者按下鼠标时,这个子窗口将拦截WM_NCHITTEST消息并将HTTRANSPARENT的值传回给Windows,这将使Windows向其下层窗口,通常是它的父窗口,发送相同的WM_NCHITTEST消息。父窗口常常将该消息传递给DefWindowPro
2011-04-22 01:24:00
806
原创 vc++ ADO数据库
<br />我做的一个MFC应用程序。用到ADO数据库。但还有三个控件的代码不会写<br />其中一段代码:<br />void CEX_ADOTESTDlg::LoadData()<br />{<br /> vsno = m_pRecordset->GetCollect("studentno");<br /> vcno = m_pRecordset->GetCollect("course");<br /> vscore= m_pRecordset->GetCollect("score");<br /> v
2011-04-22 01:22:00
4767
原创 一个非常全面获取图象信息的PHP函数
<br />一个全面获取图象信息的函数getimageinfo(),功能非常不错啊!呵呵<?php<br />function getimageinfo($img) { //$img为图象文件绝对路径<br />$img_info = getimagesize($img);<br />switch ($img_info[2]) {<br />case 1:<br />$imgtype = "gif";<br />break;<br />case 2:<br />$imgtype = "jpg";<br />
2011-04-22 01:10:00
311
原创 用php实现简单的滑动菜单
<br /><!---<br /> 简单的滑动菜单<br /> 徐祖宁(唠叨)<br /> 2003.03<br /> czjsz_ah@stats.gov.cn<br /> 滑动菜单是一种较常用的菜单形式,在罗列二级分类的场合下广泛使用。其特点是代码量极小,数据描述简洁。<br /> 本例使用无线表格,以类的书写方式表述。<br /> 本代码可自由扩散。<br />---><br /><style><br />table {font-size = 9pt}<br />td {height = 20px}<
2011-04-22 01:09:00
297
原创 第四节--构造函数和析构函数
<br />/*<br /> +-------------------------------------------------------------------------------+<br /> | = 本文为Haohappy读<<Core PHP Programming>><br /> | = 中Classes and Objects一章的笔记<br /> | = 翻译为主+个人心得<br /> | = 为避免可能发生的不必要的麻烦请勿转载,谢谢<br /> | = 欢迎批评指正,希
2011-04-22 01:08:00
285
原创 用php实现简单的树形菜单
<br /><!---<br /> 简单的树形菜单<br /> 徐祖宁(唠叨)<br /> 2003.03<br /> czjsz_ah@stats.gov.cn<br /> 树形菜单较滑动菜单稍微复杂一点。其主要难点在于从简洁的数据描述来产生便于操纵的html结构。<br /> 本例用来展示树形菜单的编写。使用无线表格,算法上采用了递归,理论上可构造无穷分制枝的树。<br /> 本代码可自由扩散。<br />---><br /><style><br />table {font-size = 9pt}<br
2011-04-22 01:04:00
683
原创 向普通人加密 用PHP程序保护数据
<br />在这个日渐虚拟的互联网世界中,您必须小心保护自已的数据。本文将介绍编码和加密一些重要信息(比如密码、信用卡号、甚至整个消息)的基础知识。并通过使用 PHP 的内置功能,了解加密和解密信息的意义,并且将了解一些涉及密码和其他数据的实际示例。<br />了解当今现实世界与 20 年前的现实世界的不同。在 20 世纪 80 年代,加密是一种特工人员的行为 —— 是您在 Tom Clancy 的侦探小说中才可以读到的情节。如果某人想保持少量私有信息,那么他必须使用密码、密码短语或其他基本方法对数据进行加
2011-04-22 01:03:00
363
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人