过用户层HOOK思路

简介:

以FindWinow为例,首先逆向FindWindow,分析写出下面代码

#pragma pack(1)
typedef struct _UNICODE_STRING {
    USHORT Length;
    USHORT MaximumLength;  
    PWSTR  Buffer; 
 
} UNICODE_STRING,*PUNICODE_STRING;
#pragma pack()

__declspec(naked) void sysFastCall()
{

 __asm{
  mov edx,esp
  __emit 0x0f
  __emit 0x34
 }
}

__declspec(naked)  HWND  __stdcall My_FindWindow(
            int p1,
            int p2,
            PUNICODE_STRING pu_classname,
            PUNICODE_STRING pu_catption,
            int p5)
{
 __asm 
 {
  MOV EAX,0x1179
   call sysFastCall
   RETN 0x14
   
 }
}

下面是调用:


void CFindWindowsDemoDlg::OnBtnMyFindwindow() 
{
 // TODO: Add your control notification handler code here
 UNICODE_STRING pu_className,pu_Caption;
 typedef   (__stdcall *PRtlInitUnicodeString)(PUNICODE_STRING, PCWSTR);
 PRtlInitUnicodeString  RtlInitUnicodeString;
 RtlInitUnicodeString=(PRtlInitUnicodeString)GetProcAddress(GetModuleHandle("ntdll.dll"),"RtlInitUnicodeString");
 RtlInitUnicodeString(&pu_className,L"SciCalc");
 RtlInitUnicodeString(&pu_Caption,L"计算器");
 HWND h=My_FindWindow(0,0,&pu_className,&pu_Caption,0);
  ::SendMessage(h,WM_CLOSE,0,0);
}


本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/06/01/2529848.html
目录
相关文章
|
存储 缓存 监控
《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。
114 0
|
数据库
OVS 总体架构、源码结构及数据流程全面解析
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍。 OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转。
4355 0
|
3月前
|
缓存 前端开发 数据格式
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
|
3月前
|
前端开发 API 开发者
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
|
3月前
|
安全 Java
建模底层逻辑问题之在建模过程中,知识层和操作层如何区分
建模底层逻辑问题之在建模过程中,知识层和操作层如何区分
|
6月前
thinkphp5.1全局验证层封装
thinkphp5.1全局验证层封装
57 1
thinkphp5.1全局验证层封装
|
JavaScript 前端开发 数据可视化
列表封装-递归数据回显-全局数据挂载——基础积累
列表封装-递归数据回显-全局数据挂载——基础积累
103 0
|
编解码 C++
UVC调用过程部分细节分析
UVC调用过程部分细节分析
619 0
|
测试技术
01 基础:跳出细节看全局,接口测试到底是在做什么?
01 基础:跳出细节看全局,接口测试到底是在做什么?
|
存储 JavaScript API
移动端单模块功能实现思路及重要方法总结
移动端单模块功能实现思路及重要方法总结
移动端单模块功能实现思路及重要方法总结