开发所用到工具和方法
关于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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息