开发所用到工具和方法

  1. 关于windows窗体
  2. 简介:大家都知道基于windows系统的交互都基于窗体(window)的,所以window是交互界面,或者交互入口,在windows中基础编程中句柄表示各种类,对象,资源的实例,那么窗体也是有句柄的,窗体的中的控件一定有句柄?(答案下面揭晓)
  3. 窗体的分析方式
    1. Spy++:Spy++是一个基于 Win32(最新版本支持Win64) 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图(百度抄的),这个工具是微软自家,微软自家的没什么说的,功能很强大,它可以分析窗体句柄,捕获消息,查看线程等功能,
      1. 使用方法:
        开发所用到工具和方法_第1张图片
      2. 分解示例
        开发所用到工具和方法_第2张图片
    2. 通过上述示例我们可以得到winrar界面的窗体(句柄)结构,以及属性信息,通过这些属性信息就可以在筛选出我们需要的窗体了
    1. inspect32:inspect32也是一个窗体信息查看的,它和spy不同的是它可以查看菜单
    2. 开发所用到工具和方法_第3张图片
  4. 关于无句柄窗体(DUI)
    1. 最近这个几年发展起来的技术,大家可以百度"无句柄窗体",这种窗体的好处很多,我比较喜欢的性能好,保密性好这个两方面的
    2. DUI窗体没有子控件句柄,要想获取信息就必须实现屏幕取词,HOOK ExtTextOut,TextOut,DrawText等字符绘制函数,获取相应的位置的字符串,然后筛选获取相应的信息
      开发所用到工具和方法_第4张图片
  5. 按钮点击的实现
    1. 通过窗体消息

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

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

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

    1. 移动鼠标,发送点击事件

      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);

      放开鼠标左键

  6. 文本设置实现
    1. 通过窗体消息

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

    2. 模拟键盘

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

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

     

  7. .Net 全局钩子的实现
    1. 简介:.net由于是托管代码,基于fx运行时(虚拟机),无法实现全局钩子,由于.netdll没有dllMain函数,所以无法实现远程注入
    2. DLL注入
      1. 上面说的无法实现远程,我这里来说P话?不是的,我这里说的注入混合型dll,大家可以百度,非托管dll可以通过DllMain,调用托管Dll实现托管到非托管的连接调用
    3. EasyHook

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

 

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

 

  HAPPY EVERY DAY ! !

你可能感兴趣的:(方法)