过用户层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业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。
93 0
|
2月前
|
缓存 前端开发 数据格式
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
|
2月前
|
前端开发 API 开发者
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
|
2月前
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
22 0
|
3月前
|
JSON 前端开发 Java
前后端数据交互-----表单数据获取不到,出错的原因,在编写接口时,没有考虑数据如何返回,解决问题的思路,找到自己出错的地方,围绕着出错的地方进行考虑(很重要),找对解决问题的视频,理清返回数据的思路
前后端数据交互-----表单数据获取不到,出错的原因,在编写接口时,没有考虑数据如何返回,解决问题的思路,找到自己出错的地方,围绕着出错的地方进行考虑(很重要),找对解决问题的视频,理清返回数据的思路
|
4月前
|
JavaScript 前端开发
大事件项目55----基地址优化封装和便于以后服用
大事件项目55----基地址优化封装和便于以后服用
|
存储 负载均衡 安全
一步步实现SDDC-逻辑交换与逻辑路由
实验摘要: 1>逻辑交换实现 [难度★复杂度★] 2>逻辑路由实现 [难度★复杂度★★]
一步步实现SDDC-逻辑交换与逻辑路由
hook+ts业务开发思路5-完成列表页面的编写
hook+ts业务开发思路5-完成列表页面的编写
56 0
hook+ts业务开发思路5-完成列表页面的编写
hook+ts业务开发思路6-状态惰性初始化和localstroage使用
hook+ts业务开发思路6-状态惰性初始化和localstroage使用
69 0
hook+ts业务开发思路6-状态惰性初始化和localstroage使用
|
JavaScript
从零开始 - 50行代码实现一个Vuex状态管理器
Vuex简单实现的一次编写练习,带你掌握核心原理。