好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

开发所用到工具和方法

开发所用到工具和方法

关于windows窗体

简介:大家都知道基于windows系统的交互都基于窗体(window)的,所以window是交互界面,或者交互入口,在windows中基础编程中句柄表示各种类,对象,资源的实例,那么窗体也是有句柄的,窗体的中的控件一定有句柄?(答案下面揭晓)

窗体的分析方式

Spy++:Spy++是一个基于 Win32(最新版本支持Win64) 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图(百度抄的),这个工具是微软自家,微软自家的没什么说的,功能很强大,它可以分析窗体句柄,捕获消息,查看线程等功能,

使用方法:

分解示例

通过上述示例我们可以得到winrar界面的窗体(句柄)结构,以及属性信息,通过这些属性信息就可以在筛选出我们需要的窗体了

inspect32:inspect32也是一个窗体信息查看的,它和spy不同的是它可以查看菜单

关于无句柄窗体(DUI)

最近这个几年发展起来的技术,大家可以百度"无句柄窗体",这种窗体的好处很多,我比较喜欢的性能好,保密性好这个两方面的

DUI窗体没有子控件句柄,要想获取信息就必须实现屏幕取词,HOOK ExtTextOut,TextOut,DrawText等字符绘制函数,获取相应的位置的字符串,然后筛选获取相应的信息

按钮点击的实现

通过窗体消息

SendMessage(hWnd,WM_LBUTTONDOWN,  0x0000001 , lprama);按下鼠标左键

SendMessage  ( hWnd ,WM_LBUTTONUP, 0x0000000, lprama); 放开鼠标左键

其中 lprama 为位置参数,构造方法   int  lprama = ((y << 16) | (x & 0xffff));

移动鼠标,发送点击事件

WinAPIHelper .SetCursorPos(x, y);  设置鼠标位置   WinAPIHelper .mouse_event( WinAPIHelper . MouseEventFlag .LeftDown, 0, 0, 0,  UIntPtr .Zero); 按下鼠标左键

WinAPIHelper .mouse_event( WinAPIHelper . MouseEventFlag .LeftUp, 0, 0, 0,  UIntPtr .Zero);

放开鼠标左键

文本设置实现

通过窗体消息

WinAPIHelper .SendMessage(hwnd,  WinAPIHelper .WM_SETTEXT,  IntPtr .Zero,  new   StringBuilder (text));

模拟键盘

WinAPIHelper .SetForegroundWindow(hwnd);// 设置焦点

SendKeys .SendWait(text);// 发送键盘

.Net  全局钩子的实现

简介: .net 由于是托管代码,基于 fx 运行时(虚拟机),无法实现全局钩子,由于 .net 的 dll 没有 dllMain 函数,所以无法实现远程注入

DLL 注入

上面说的无法实现远程,我这里来说 P 话?不是的,我这里说的注入混合型 dll ,大家可以百度,非托管 dll 可以通过 DllMain ,调用托管 Dll 实现托管到非托管的连接调用

EasyHook

EasyHook  是  codeplex 上的一个开源项目,它实现了 windows  函数钩子,不多说上链接 http://easyhook.codeplex.com/ ,大家可下载源码编译源码可读性不错,作者说的蛮牛 X 的,但是并不是那么完美,当 Hook ExTextOu t 函数时,中文乱码,正在调试源码,试图找出问题

/Files/Rolends/开发所用到工具和方法.doc  后缀为docx,由于不能上传docx故改之

转载请注明:http://www.cnblogs.com/Rolends  

    HAPPY EVERY DAY  ! !

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于开发所用到工具和方法的详细内容...

  阅读:54次