随笔分类 -  软件开发:Windows系统

上一页 1 2 3 4 5 6 ··· 11 下一页
摘要:简单说,即调用第11号功能,枚举一下内核中已加载的模块。部分代码如下://功能号为11,先获取所需的缓冲区大小ZwQuerySystemInformation(SystemModuleInformation,NULL,0,&needlen);//申请内存ZwAllocateVirtualMemory... 阅读全文
posted @ 2014-08-12 23:29 Max Woods 阅读(1045) 评论(0) 推荐(0)
摘要:总结一下基本的注入过程,分注入和卸载注入Dll:1,OpenProcess获得要注入进程的句柄2,VirtualAllocEx在远程进程中开辟出一段内存,长度为strlen(dllname)+1;3,WriteProcessMemory将Dll的名字写入第二步开辟出的内存中。4,CreateRemo... 阅读全文
posted @ 2014-08-04 10:41 Max Woods 阅读(1712) 评论(0) 推荐(1)
摘要:下面代码是通过进程ID来获取进程的基地址,创建一个进程快照后,读取进程模块,一般情况下第一个模块就是进程的基地址,下面的程序通过模块的字符串匹配来找到基地址。通过MODULEENTRY32来读取,下面是代码:#include #include #include HMODULE fnGetProces... 阅读全文
posted @ 2014-06-24 20:56 Max Woods 阅读(1397) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std;int main() { HANDLE h= CreateToolhelp32Snapshot(8, 780); MODULEENTRY32 me; int ret = Module32... 阅读全文
posted @ 2014-06-24 20:51 Max Woods 阅读(610) 评论(0) 推荐(0)
摘要:研究了下这个问题,主要要在一般的windows服务程序中修改两个地方:一、调用RegisterServiceCtrlHandlerExVOID WINAPI SvcMain( DWORD dwArgc, LPTSTR *lpszArgv ){ // Register the handler func... 阅读全文
posted @ 2014-06-18 16:46 Max Woods 阅读(1380) 评论(0) 推荐(0)
摘要:很多情况下,我们需要控件的背景是透明的,就是要求直接看到控件父窗口的背景颜色、背景位图,比如标签控件、单选Radio控件、复选Check控件,通常都要求在父窗口的背景上进行绘制。然而要求控件的画布透明,这个技术在GDI的文档中没有看到Microsoft作任何说明,当然还是有别的办法。其一:如果程序支... 阅读全文
posted @ 2014-05-21 21:51 Max Woods 阅读(1043) 评论(0) 推荐(0)
摘要:本文讲述如何定制控件的背景颜色和背景位图的技巧。首先要说一下控件的绘制过程:当控件的某个区域需要重绘时,都会触发WM_ERASEBKGND和WM_PAINT消息。比如控件的某个区域被另一个程序的窗口挡住了,而后那个窗口又被移走了,这时控件被挡住的内容就需要重新绘制了。第一步:系统向控件发送WM_ER... 阅读全文
posted @ 2014-05-21 21:50 Max Woods 阅读(604) 评论(0) 推荐(0)
摘要:对于Windows系统中各种控件换肤功能,要数滚动条的换肤最难实现了,尤其是控件自带的系统滚动条,如Edit、ListBox、ListView、TreeView等自带的系统滚动条,要想实现其自定义的皮肤功能,用常规办法似乎都无法实现。对于常规的皮肤定制一般都是通过定制WM_PAINT、WM_ERAS... 阅读全文
posted @ 2014-05-21 21:48 Max Woods 阅读(876) 评论(0) 推荐(0)
摘要:这两个函数经常一起使用,所以放到一起讲:1 AdjustWindowRect函数功能:该函数依据所需客户矩形的大小,计算需要的窗口矩形的大小。计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。函数原型:BOOL AdjustWindowRect(LPREC... 阅读全文
posted @ 2014-05-19 08:44 Max Woods 阅读(550) 评论(0) 推荐(0)
摘要:1、前言目前很多敏感和重要的DLL(Dynamic-link library) 都没有提供静态版本供编译器进行静态连接(.lib文件),即使提供了静态版本也因为兼容性问题导致无法使用,而只提供DLL版本,并且很多专业软件的授权部分的API,都是单独提供一个DLL来完成,而主模块通过调用DLL中的接口... 阅读全文
posted @ 2014-05-04 10:11 Max Woods 阅读(3855) 评论(1) 推荐(1)
摘要:This page describes code for working with Time Zones and Daylight Savings Time. Neither VBA nor VB6 provides any native functions for working with Time Zones, Greenwich Mean Time (GMT, also called UTC), or Daylight Savings Time. To work with these values, you must use some Windows Application Progra 阅读全文
posted @ 2014-01-09 10:13 Max Woods 阅读(751) 评论(0) 推荐(0)
摘要:一、获取当前系统时区信息使用API函数GetTimeZoneInformation可以获得当前时区的相关信息,函数原型为DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation );需要传递一个TIME_ZONE_INFORMATION结构体指针,此结构体定义为typedefstruct_TIME_ZONE_INFORMATION{LONGBias; //以分钟为单位WCHARStandardName[ 32 ];//标准时间的名称SYSTEMTIMEStandardDate;LONGStandardB 阅读全文
posted @ 2014-01-09 10:11 Max Woods 阅读(9683) 评论(0) 推荐(0)
摘要:这个是过TX游戏自我保护驱动的源代码。可以过qq堂、DNF、寻仙等QQ游戏。#include #include #include #include "Common.h"typedef struct _KAPC_STATE{ LIST_ENTRY ApcListHead[2]; PVOID Process; BOOLEAN KernelApcInProgress; BOOLEAN KernelApcPending; BOOLEAN UserApcPending;} KAPC_STATE, *PKAPC_STATE;ULONG g_nOpenIndex ... 阅读全文
posted @ 2013-12-10 15:58 Max Woods 阅读(1068) 评论(0) 推荐(0)
摘要:利用进程ID获取主线程ID,仅适用于单线程。多线程应区分哪个是主线程,区分方法待验证(1)好像可以用StartTime最早的,不过通过线程执行时间不一定可靠,要是在最开始就CreateThread了,线程的执行时间会相同。可以通过回溯栈上的值来判断哪个线程是主线程,主线程的栈多少有些不同。最明显就是主线程栈上的PE入口点信息,没有这个的就是子线程。(2)CsrProcessLink中取CsrProcessInfo->ClientId.UniqueThread即可,绝对可靠。#include #include #include void main(){ DWORD dwProcessID, 阅读全文
posted @ 2013-10-27 21:46 Max Woods 阅读(2773) 评论(0) 推荐(0)
摘要:1 // 2 // 3 4 #include 5 #include 6 #include 7 8 typedef NTSTATUS (__stdcall * NTQUERYINFORMATIONPROCESS) 9 (10 HANDLE ProcessHandle,11 PROCESSINFOCLASS ProcessInformationClass,12 PVOID ProcessInformation,13 ULONG ProcessInformationLength,14 PULONG ReturnLength15 );16 17 in... 阅读全文
posted @ 2013-10-27 21:06 Max Woods 阅读(1531) 评论(0) 推荐(0)
摘要:最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天。相关资料:微软公司的官方网站针对这个问题描述如下:在64位的windows系统中,一个64位进程不能加载一个32位dll,同理一个32位进程也不能加载一个64位dll。但是,64位windows支持64位和32位进程 阅读全文
posted @ 2013-10-11 15:55 Max Woods 阅读(1846) 评论(0) 推荐(0)
摘要:The Win32 Rundll and Rundll32 Interface Related TopicsMicrosoft Knowledge Base Article Q164787 Applies to: Windows95, Windows 98, Windows NT4 SummaryWin32 contains two command-line utility programs named Rundll.exe and Rundll32.exe that allow you to invoke a function exported from a DLL, either 16-b 阅读全文
posted @ 2013-09-27 11:47 Max Woods 阅读(584) 评论(0) 推荐(0)
摘要:很早以前写了一个刷卡程序,功能是定时监控读卡器,当发现有IC卡放到读卡器上后,自动识别出卡号,然后带着这个卡号搜索一个英文用户名和卡号的对照表,最后把英文用户名直接自动输入到当前光标所在的位置。本来程序一直用得好好的,可是最近遇到了一个新问题——因为用户名现在居然可以用中文了!所以这下麻烦大了……原先实现英文的自动输入,用的是keybd_event函数,直接模拟键盘事件。但是要输入中文,貌似没有输入法还是不行,难道还要我先用keybd_event调出输入法,然后输入拼音?这个思路想想就很恐怖,所以赶紧就上网搜解决方案去了。可是搜了一圈下来,只有寥寥几篇提到解决方案,虽然网上搜索结果众多,但是. 阅读全文
posted @ 2013-09-08 12:28 Max Woods 阅读(2522) 评论(1) 推荐(1)
摘要:最近接触到这个函数,因此了解了一下,总结一下列在这。我了解它的出发点是如何通过它向活动窗口输入字符,这是很多程序都有的功能(我猜Visual Assist X就用了这个功能)。根据MSDN,此函数模拟按键操作,将一些消息插入键盘或鼠标的输入流中,Windows对它进行处理,生成相应的WM_KEYDOWN或WM_KEYUP事件,这些事件与普通键盘输入一起进入应用程序的消息循环,它们不仅可以转换为WM_CHAR消息,还可以转换为其它(诸如加速键)等消息。使用它来发送字符消息,并没有看起来那么简单。这有两个需要考虑的问题:1. 输入法的转换。例如需要向活动窗口发送一些英文字符,我们可能想象这样来实现 阅读全文
posted @ 2013-09-08 12:22 Max Woods 阅读(734) 评论(0) 推荐(0)
摘要:RichEdit控件 SDK 参考手册摘要: 本文对Rich Edit控件底层消息机制进行了讲解,以期读者对Windows平台下的Rich Edit控件有一个更深入的认识,同时对于使用Win32 SDK进行开发的人员具有一定参考价值。因为文章的初衷是引领VB程序员通过Win32 API调用来扩展VB下的Rich Edit控件的功能,所以对于每个消息的详细说明和注意事项未作过多说明,感兴趣的朋友可以参考Visual Studio下的MSDN Library。关键字:Rich Edit Control、RTF、SDK、MSDN。一、引言Rich Edit控件是一个可用于输入、编辑、格式化、打印和保 阅读全文
posted @ 2013-09-02 09:36 Max Woods 阅读(1017) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 ··· 11 下一页