摘要: 修改自https://forum.eviloctal.com/thread-28859-1-1.html在VC6编译通过#include #include // 保存原始的6个字节代码BYTE orig_code[6] = {0x90, 0x90, 0x90, 0x90, 0x90,0x90};// JMP 0xXXXXXXXXBYTE hook_code[5] = { 0xe9, 0, 0, 0... 阅读全文
posted @ 2009-03-17 18:39 Fan Zhang 阅读(240) 评论(0) 推荐(0)
摘要: hook有很多种形式,这里分析inline hook api这种形式的hook只针对被hook的进程,而不会影响到其他进程。例如,某个进程用到了MessageBox这个API,程序希望改变原有MessageBox这个函数的行为,可以进行这种hook。Inline hook有个几种方式1.先执行hook函数,然后再执行原API。2.先执行原API,再执行hook函数。需要了解的几个知识点:1.如果在... 阅读全文
posted @ 2009-03-16 17:56 Fan Zhang 阅读(373) 评论(0) 推荐(0)
摘要: 1. offset关键字的认识push offset s1;push s1;的区别:push offset s1;//这个是将s1的这个符号的地址push内存push s1//这个将s1这个符号认为一个DWORD地址2.VC中内嵌汇编注意地方(1)引用全局函数、变量mov dwTemp,offset XXXX(2)应用局部变量lea eax,local_buffermov dwTemp,e... 阅读全文
posted @ 2009-03-16 17:46 Fan Zhang 阅读(346) 评论(0) 推荐(0)
摘要: Tree Control控件使用此控件一般先将“Has buttons”、"Has lines"、"Lines at root"属性设置上。WTL、MFC等库封装了InsertItem函数,原理是填好了TVINSERTSTRUCT数据结构,然后向控件发送TVM_INSERTITEM消息。最简单的InsertItem函数:HTREEITEM InsertItem( LPCTSTR lpszIt... 阅读全文
posted @ 2009-03-10 16:33 Fan Zhang 阅读(427) 评论(0) 推荐(0)
摘要: Owner Drawer 和 Custom Draw1.Owner Drawer有些控件支持Owner Drawer属性,如Button。如果控件的这个属性被设为TRUE,则程序员需要负责绘制这个控件。这样可以绘制与默认控件不同的形状,如绘制特殊形状的Button。Owner Draw的控件会给父对话框WM_DRAWITEM、WM_COMPAREITEM、WM_MEASUREITEM等消息。2.C... 阅读全文
posted @ 2009-03-10 10:57 Fan Zhang 阅读(390) 评论(0) 推荐(0)
摘要: WM_NOTIFY消息和WM_COMMAND消息在一个对话框中,子控件可以有两种方式与父对话框通信。1.向父对话框发送WM_COMMAND消息,但这种消息传递的信息量比较少。2.向父对话框发送WM_NOTIFY消息,信息量比较大。idCtrl = (int) wParam; pnmh = (LPNMHDR) lParam; pnmh->code可以得到notify码,一般是NM_XX的宏... 阅读全文
posted @ 2009-03-09 23:30 Fan Zhang 阅读(453) 评论(0) 推荐(0)
摘要: WM_NOTIFY消息和WM_COMMAND消息在一个对话框中,子控件可以有两种方式与父对话框通信。1.向父对话框发送WM_COMMAND消息,但这种消息传递的信息量比较少。2.向父对话框发送WM_NOTIFY消息,信息量比较大。idCtrl = (int) wParam; pnmh = (LPNMHDR) lParam; //也不一定是NMHDR,也有可能是一个包含NMHDR结构的数据... 阅读全文
posted @ 2009-03-09 17:09 Fan Zhang 阅读(793) 评论(0) 推荐(0)
摘要: 这部分介绍如何编写Rendering Plug-Ins。这个plug-in是一个COM组件,需要向系统提供一个IPrintOemUni2接口的COM组件。其中比较重要的函数是:1.EnableDriver2.DisableDriver在EnableDriver中需要注册一组函数指针数组,这些函数用来hook中相应的DDI解释部分。这样就可以改变默认Universal Printer Driver的... 阅读全文
posted @ 2009-03-08 23:48 Fan Zhang 阅读(4263) 评论(0) 推荐(1)
摘要: 在Windows中,打印机驱动的作用是编写一组接口。应用程序调用的GDI函数会变成相应的DDI函数,打印机驱动提供的这组接口负责将DDI函数转变为打印机识别的的指令。至于是通过网口、串口等接口与真实打印机相连接,这是Printer Moniter的职责,而不是Printer Driver的职责。打印机驱动一般分为两个部分。1.printer graphics DLL 2.Printer Inter... 阅读全文
posted @ 2009-03-08 23:33 Fan Zhang 阅读(9970) 评论(1) 推荐(0)
摘要: 1.模式对话框DialogBoxDialogBoxParam这连个函数区别在于是否为WM_INITDIALOG消息传入一个参数。2.无模式对话框CreateDialogCreateDialogParam对于Property Sheet的各个Sheet,都要用CreateDialogParam创建,并返回一个窗口句柄。然后对这个句柄设置SetWindowLong的GWL_ID设置。 阅读全文
posted @ 2009-03-06 18:21 Fan Zhang 阅读(355) 评论(0) 推荐(0)