//
//
//
//
//
//
//
//
//
//
软件Tags:
易语言D3DHook源码系统结构:初始化设备,初始化顶点缓冲,渲染,转,配置矩阵,hook,NewDirect3DCreate9,NewCreateDevice,NewPresent,安装ApiHook,开始Hook,停止Hook,卸载ApiHook,取Hook信息,Jmp,取指针内容_整数,GetAdd,取_类_函数地址,API_CreateThread,API_WriteFile,API_sendto,ReadFile,API_OutputDebugString,API_GetModuleHandle,API_GetProcAddress,API_CopyMemory,API_VirtualProtect,CreateWindowExW,CreateWindowExW_int,RegisterClassExW,UpdateWindow,GetModuleHandleW,DefWindowProcW,DispatchMessageW,GetMessageW,TranslateMessage,PostQuitMessage,CallWindowProcW,SetWindowLongW,取整数指针,VirtualProtect,GetProcAddress,拷贝内存2,拷贝文本,取文本量地址_,取字节集变量地址_,GetModuleHandle,CreateWindowEx,LoadIconW,LoadCursorW,CopyMemory,MultiByteToWideChar,WideCharToMultiByte,Direct3DCreate9,API_取设备场景,LoadLibraryA,CreateDevice,DrawText,GetModuleHandleA,FreeLibrary,取字节集变量数据地址,CallWindowProcA,CreateDialog,lstrcpynA_str,API_SetPixel,TextOut,DrawMyTextEx, ======窗口程序集1 || ||------初始化设备 || ||------初始化顶点缓冲 || ||------_窗口_主_被激活 || ||------_按钮1_被单击 || ||------渲染 || ||------转 || ||------配置矩阵 || ||------_时钟1_周期事件 || ||------_窗口_主_创建完毕 || ||------_窗口_主_鼠标左键被按下 || || ======程序集1 || ||------_启动子程序 || ||------hook || ||------NewDirect3DCreate9 || ||------NewCreateDevice || ||------NewPresent || || ======NHook || ||------_初始化 || ||------_销毁 || ||------安装ApiHook || ||------开始Hook || ||------停止Hook || ||------卸载ApiHook || ||------取Hook信息 || || ======程序集_辅助 || ||------Jmp || ||------_Jmp || ||------取指针内容_整数 || ||------GetAdd || ||------取_类_函数地址 || || ======调用的Dll || ||---[dll]------API_CreateThread || ||---[dll]------API_WriteFile || ||---[dll]------API_sendto || ||---[dll]------ReadFile || ||---[dll]------API_OutputDebugString || ||---[dll]------API_GetModuleHandle || ||---[dll]------API_GetProcAddress || ||---[dll]------API_CopyMemory || ||---[dll]------API_VirtualProtect || ||---[dll]------CreateWindowExW || ||---[dll]------CreateWindowExW_int || ||---[dll]------RegisterClassExW || ||---[dll]------UpdateWindow || ||---[dll]------GetModuleHandleW || ||---[dll]------DefWindowProcW || ||---[dll]------DispatchMessageW || ||---[dll]------GetMessageW || ||---[dll]------TranslateMessage || ||---[dll]------PostQuitMessage || ||---[dll]------CallWindowProcW || ||---[dll]------SetWindowLongW || ||---[dll]------取整数指针 || ||---[dll]------VirtualProtect || ||---[dll]------GetProcAddress || ||---[dll]------拷贝内存2 || ||---[dll]------拷贝文本 || ||---[dll]------取文本量地址_ || ||---[dll]------取字节集变量地址_ || ||---[dll]------GetModuleHandle || ||---[dll]------CreateWindowEx || ||---[dll]------LoadIconW || ||---[dll]------LoadCursorW || ||---[dll]------CopyMemory || ||---[dll]------MultiByteToWideChar || ||---[dll]------WideCharToMultiByte || ||---[dll]------Direct3DCreate9 || ||---[dll]------API_取设备场景 || ||---[dll]------LoadLibraryA || ||---[dll]------CreateDevice || ||---[dll]------DrawText || ||---[dll]------_Copy_FromPtrToInt || ||---[dll]------_lstrcpynA_int || ||---[dll]------GetModuleHandleA || ||---[dll]------FreeLibrary || ||---[dll]------取字节集变量数据地址 || ||---[dll]------CallWindowProcA || ||---[dll]------CreateDialog || ||---[dll]------lstrcpynA_str || ||---[dll]------API_SetPixel || ||---[dll]------TextOut || ||---[dll]------DrawMyTextEx 调用的DLL命令: .DLL命令API_CreateThread,整数型,"kernel32","CreateThread",,建立新的线索 .参数lpThreadAttributes,整数型 .参数dwStackSize,整数型 .参数lpStartAddress,整数型 .参数lpParameter,整数型 .参数dwCreationFlags,整数型 .参数lpThreadId,整数型 .DLL命令API_WriteFile,整数型,"kernel32","WriteFile",,将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理TRUE(非零)表示成功,否则返回零。会设置GetLastError .参数hFile,整数型,,一个文件的句柄 .参数lpBuffer,整数型,,要写入的一个数据缓冲区 .参数nNumberOfBytesToWrite,整数型,,要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内 .参数lpNumberOfBytesWritten,整数型,,实际写入文件的字节数量 .参数lpOverlapped,整数型,,OVERLAPPED,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByValAs并传递零值); .DLL命令API_sendto,整数型,"ws2_32.dll","sendto" .参数s,整数型 .参数buf,文本型 .参数lLen,整数型 .参数flags,整数型 .参数to,整数型 .参数tolen,整数型 .DLL命令ReadFile,整数型,"kernel32","ReadFile",,从文件中读出数据。与lread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽非零表示成功,零表示失败。会设置GetLastError。如启动的是一次异步读操作,则函数会返回零值,并将ERROR_IO_PENDING设置成GetLastError的结果。如结果不是零值,但读入的字节数小于nNumberOfBytesToRead参数指定的值,表明早已抵达了文件的结尾 .参数文件句柄,整数型,,文件的句柄 .参数数据缓冲区,整数型,,用于保存读入数据的一个缓冲区 .参数字符数,整数型,,要读入的字符数 .参数实际读入字符数,整数型,,从文件中实际读入的字符数 .参数异步过程,OVERLAPPED,,OVERLAPPED,如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须用这个参数引用一个特殊的结构。那个结构定义了一次异步读取操作。否则,应将这个参数设为NULL(将函数声明成ByValAs并传递零值); .DLL命令API_OutputDebugString,,"kernel32","OutputDebugStringA",,向调试发送字符串 .参数lpOutputString,文本型 .DLL命令API_GetModuleHandle,整数型,"kernel32","GetModuleHandleA",,获取一个应用程序或动态链接库的模块句柄如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError .参数lpModuleName,文本型,,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD; .DLL命令API_GetProcAddress,整数型,"kernel32","GetProcAddress",,返回函数地址 .参数hModule,整数型 .参数lpProcName,文本型 .DLL命令API_CopyMemory,,"kernel32","RtlMoveMemory" .参数pDest,整数型 .参数pSrc,整数型 .参数ByteLen,整数型 .DLL命令API_VirtualProtect,整数型,"kernel32","VirtualProtect",,修改虚拟保护 .参数lpAddress,整数型 .参数dwSize,整数型 .参数flNewProtect,整数型 .参数lpflOldProtect,整数型 .DLL命令CreateWindowExW,整数型,"user32","CreateWindowExW",,建立窗口 .参数dwExStyle,整数型 .参数lpClassName,字节集,传址 .参数lpWindowName,字节集,传址 .参数dwStyle,整数型 .参数x,整数型 .参数y,整数型 .参数nWidth,整数型 .参数nHeight,整数型 .参数hWndParent,整数型 .参数hMenu,整数型 .参数hInstance,整数型 .参数lpParam,整数型 .DLL命令CreateWindowExW_int,整数型,"user32","CreateWindowExW",,建立窗口 .参数dwExStyle,整数型 .参数lpClassName,整数型 .参数lpWindowName,整数型 .参数dwStyle,整数型 .参数x,整数型 .参数y,整数型 .参数nWidth,整数型 .参数nHeight,整数型 .参数hWndParent,整数型 .参数hMenu,整数型 .参数hInstance,整数型 .参数lpParam,整数型 .DLL命令RegisterClassExW,整数型,"user32","RegisterClassExW",, .参数pcWndClassEx,WNDCLASSEX .DLL命令UpdateWindow,整数型,"user32","UpdateWindow",,强制立即更新窗口,窗口中以前屏蔽的所有区域都会重画(在vb里使用:如vb窗体或控件的任何部分需要更新,可考虑直接使用refresh方法 非零表示成功,零表示失败 .参数hwnd,整数型,,欲更新窗口的句柄; .DLL命令GetModuleHandleW,整数型,"kernel32","GetModuleHandleW",,获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError .参数lpModuleName,字节集,传址,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD; .DLL命令DefWindowProcW,整数型,"user32","DefWindowProcW",,调用缺省窗口过程 .参数hwnd,整数型 .参数wMsg,整数型 .参数wParam,整数型 .参数lParam,整数型 .DLL命令DispatchMessageW,整数型,"user32","DispatchMessageW",,向窗口发送消息 .参数lpMsg,MSG .DLL命令GetMessageW,整数型,"user32","GetMessageW",,从线索消息队列中返回一条消息 .参数lpMsg,MSG .参数hwnd,整数型 .参数wMsgFilterMin,整数型 .参数wMsgFilterMax,整数型 .DLL命令TranslateMessage,整数型,"user32","TranslateMessage",,转换虚拟关键字消息 .参数lpMsg,MSG .DLL命令PostQuitMessage,,"user32","PostQuitMessage",,通知WINDOWS线索将中断 .参数nExitCode,整数型 .DLL命令CallWindowProcW,整数型,"user32","CallWindowProcW",,将消息传答窗口函数 .参数lpPrevWndFunc,整数型 .参数hwnd,整数型 .参数Msg,整数型 .参数wParam,整数型 .参数lParam,整数型 .DLL命令SetWindowLongW,整数型,"user32","SetWindowLongW" .参数hwnd,整数型 .参数nIndex,整数型 .参数dwNewLong,整数型 .DLL命令取整数指针,整数型,"kernel32","lstrcpyn" .参数数据1,整数型,传址,lpString1 .参数数据2,整数型,传址,lpString2 .参数数据长度,整数型,,iMaxLength .DLL命令VirtualProtect,逻辑型 .参数lpAddress,整数型 .参数dwSize,整数型 .参数flNewProtect,整数型 .参数lpflOldProtect,整数型,传址 .DLL命令GetProcAddress,整数型 .参数hModule,整数型 .参数lpProcName,文本型 .DLL命令拷贝内存2,整数型,"kernel32","RtlMoveMemory",,RtlMoveMemory .参数目标数据,整数型,,lpvDest .参数源数据,字节集,传址,lpvSource .参数尺寸,整数型,,cbCopy .DLL命令拷贝文本,,"kernel32.dll","RtlMoveMemory" .参数目标数据,文本型,传址,any .参数原数据,整数型,,any .参数尺寸,整数型 .DLL命令取文本量地址_,整数型,"kernel32.dll","lstrcpyn",,, .参数数据1,文本型,传址,lpString1 .参数数据2,文本型,传址,lpString2 .参数数据长度,整数型,,iMaxLength .DLL命令取字节集变量地址_,整数型,"kernel32.dll","lstrcpyn",,, .参数数据1,字节集,传址,lpString1 .参数数据2,字节集,传址,lpString2 .参数数据长度,整数型,,iMaxLength .DLL命令GetModuleHandle,整数型,"kernel32","GetModuleHandleA",,获取一个应用程序或动态链接库的模块句柄 .参数lpModuleName,文本型,,指定模块名,这通常是与模块的文件名相同的一个名字。 .DLL命令CreateWindowEx,整数型,"user32","CreateWindowExA",,创建窗口 .参数dwExStyle,整数型 .参数lpClassName,文本型 .参数lpWindowName,文本型 .参数dwStyle,整数型 .参数x,整数型 .参数y,整数型 .参数nWidth,整数型 .参数nHeight,整数型 .参数hWndParent,整数型 .参数hMenu,整数型 .参数hInstance,整数型 .参数lpParam,整数型 .DLL命令LoadIconW,整数型,"user32","LoadIconW",,从指定的模块或应用程序实例中载入一个图标。其中,LoadIconBynum是LoadIcon函数的类型安全声明 执行成功则返回已载入的图标的句柄;零表示失败。会设置GetLastError .参数实例句柄,整数型 .参数图标标识,整数型 .DLL命令LoadCursorW,整数型,"user32","LoadCursorW",,从指定的模块或应用程序实例中载入一个鼠标指针。LoadCursorBynum是LoadCursor函数的类型安全声明 执行成功则返回已载入的指针的句柄;零表示失败。在Windows;95和Win16环境中,这个函数只能载入标准尺寸的图标 .参数实例句柄,整数型,,一个DLL的模块句柄;或者一个实例句柄,指定包含了鼠标指针的可执行程序 .参数鼠标指针标识,整数型,,作为一个字串,指定欲载入的指针资源。作为一个长整数值,指定欲载入的资源ID;或者设置一个常数,代表某幅固有系统指针。如装载的是一个固有系统指针,注意hInstance参数应设为零。在api32.txt文件中以前缀IDC_作为标志; .DLL命令CopyMemory,,,"RtlMoveMemory" .参数Destination,字节集 .参数Source,整数型 .参数cbCopy,整数型 .DLL命令MultiByteToWideChar,整数型,"kernel32" .参数CodePage,整数型 .参数dwFlags,整数型 .参数lpMultiByteStr,文本型 .参数cchMultiByte,整数型 .参数lpWideCharStr,字节集 .参数cchWideChar,整数型 .DLL命令WideCharToMultiByte,整数型,"kernel32" .参数CodePage,整数型 .参数dwFlags,整数型 .参数lpWideCharStr,字节集,传址 .参数cchWideChar,整数型 .参数lpMultiByteStr,文本型 .参数cchMultiByte,整数型 .参数lpDefaultChar,整数型 .参数lpUsedDefaultChar,整数型 .DLL命令Direct3DCreate9,整数型,"d3d9.dll","Direct3DCreate9" .参数SDKVersion,整数型 .DLL命令API_取设备场景,整数型,"user32","GetDC",,获取指定窗口的设备场景指定窗口的设备场景句柄,出错则为0 .参数hwnd,整数型,,将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC; .DLL命令LoadLibraryA,整数型,"kernel32","LoadLibraryA",,载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源成功则返回库模块的句柄,零表示失败。会设置GetLastError .参数动态链接库名称,文本型,,指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序; .DLL命令CreateDevice,整数型,"d3d9.dll","CreateDevice" .参数pDx9 .参数Adapter .参数DeviceType .参数hFocusWindow .参数BehaviorFlags .参数pPresentsentationParameters .参数pPresentturnedDeviceInterface .DLL命令DrawText,整数型,"user32","DrawTextA",,将文本描绘到指定的矩形中描绘文字的高度 .参数设备场景句柄,整数型,,欲在其中显示文字的一个设备场景的句柄 .参数描绘的字串,文本型,,欲描绘的文本字串 .参数描绘的字串数量,整数型,,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 .参数描绘文本区域,RECT,,RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) .参数格式,整数型,,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表标志常数说明DT_BOTTOM必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边DT_CALCRECT象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值DT_CENTER文本垂直居中DT_EXPANDTABS描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定DT_EXTERNALLEADING计算文本行高度的时候,使用当前字体的外部间距属性(theexternalleadingattribute)DT_LEFT文本左对齐DT_NOCLIP描绘文字时不剪切到指定的矩形DT_NOPREFIX通常,函数认为&字符表示应为下一个字符加上下划线。该标志禁止这种行为DT_RIGHT文本右对齐DT_SINGLELINE只画单行DT_TABSTOP指定新的制表站间距,采用这个整数的高8位DT_TOP必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部DT_VCENTER必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部DT_WORDBREAK进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效; .DLL命令_Copy_FromPtrToInt,,"kernel32.dll","RtlMoveMemory" .参数pDest,整数型,传址 .参数pSrc,整数型 .参数ByteLen,整数型 .DLL命令_lstrcpynA_int,整数型,,"lstrcpynA" .参数var1,整数型,传址 .参数var2,整数型,传址 .参数len .DLL命令GetModuleHandleA,整数型 .参数lpModuleName,文本型 .DLL命令FreeLibrary,逻辑型 .参数hLibModule,整数型 .DLL命令取字节集变量数据地址,整数型,,"lstrcpynA" .参数lpString1,字节集 .参数lpString2,字节集 .参数iMaxLength,整数型 .DLL命令CallWindowProcA,整数型,,"CallWindowProcA" .参数动态调用代码,字节集,,一定要用本人编写的 .参数子程序,整数型,,子程序指针 .参数参数,整数型,数组,为整数数组,参数1为成员1…类推;文本型和字节集型(自定义结构)为指针 .参数参数数目,整数型,,一定要和参数数组相符,不然会出错 .参数是否C调用,逻辑型,,真为cdecl调用方式,假为stdcall调用方式(即标准WINAPI方式) .DLL命令CreateDialog,整数型,,"CreateDialogA",公开,HWNDWINAPICreateDialog .参数hInstance,整数型,,__in_optHINSTANCEhInstance, .参数lpTemplate,文本型,,__inLPCTSTRlpTemplate,模板 .参数hWndParent,整数型,,__in_optHWNDhWndParent,父句柄 .参数lpDialogFunc,整数型,,__in_optDLGPROClpDialogFunc,新过程 .DLL命令lstrcpynA_str,整数型,,"lstrcpynA" .参数lpString1,文本型,传址 .参数lpString2,文本型,传址 .参数iMaxLength,整数型 .DLL命令API_SetPixel,整数型,"gdi32","SetPixel",,在指定的设备场景中设置一个像素的RGB值指定点的实际RGB颜色。如设备不支持指定的准确颜色,则返回的值会与crColor有所不同。如指定的点不能设置,则会返回-1(例如,指定的点可能位于设备场景剪切区外面)。会设置GetLastError .参数hdc,整数型,,设备场景的句柄 .参数x,整数型,,要设置的点,用逻辑坐标表示 .参数y,整数型,,同上 .参数crColor,整数型,,指定像素的新RGB颜色; .DLL命令TextOut,整数型,"gdi32.dll","TextOutA" .参数hdc,整数型 .参数x,整数型 .参数y,整数型 .参数lpstring,文本型 .参数ncount,整数型 .DLL命令DrawMyTextEx,整数型,"Draw.dll","_DrawMyTextEx@32",公开 .参数H,整数型 .参数Str,文本型 .参数StrLen,整数型 .参数FontName,文本型 .参数FH,整数型 .参数FW,整数型 .参数RL,整数型 .参数RT,整数型
