Windbg inline HOOK 实战

2024-02-29 11:48
文章标签 实战 hook inline windbg

本文主要是介绍Windbg inline HOOK 实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用PCHunter64的进程钩子扫描到某个进程被HOOK了,可以使用Windbg分析:

## 显示汇编指令 : u
u 向下反汇编
ub 向上反汇编
uf 反汇编整个函数
a 写入汇编指令

搜索内存(search memory)

s –[type] range pattern

其中type, b表示byte w表示word, d 表示dword, a表示ASCII stringu表示unicde string

Range 表示地址范围,可以用2种表示:一是起始地址加终止地址二是起始地址加L长度(不是字节长度,是单位长度)。如果搜索空间长度超过256M,L?length

Pattern指定要搜索的内容.

比如 s -u 522e0000 527d1000 "web"表示在522e0000 527d1000之间搜索Unicode 字符串”web”

比如s -w 522e0000 L0x100  0x1212 0x2212 0x1234 表示在起始地址522e0000之后的0x100个单位内搜索0x1212 0x2212 0x1234系列的起始地址

比如s -b 000007fefd9e0000 000007fefe768000 48 89 5C 24 18 

修改内存 (edit memory)

e{a|u|za|zu} address “String”

            其总zazu表示以0结尾的AsciiUnicode字符串, au则表示没有0结尾

比如 ezu 0x445634 “abc” 表示在0x445634地址写如unicode 字符串abc

            比如ea 0x445634 “abc” 表示在0x445634地址写入Ascii字符串abc, 不包含结束符0

 

e{a|b|d|D|f|q|u|w} address [values]

其中a表示ASCII码,b表示byte, d表示DWORD, D表示double, f表示float, q表示8字节, u表示Unicode String w表示word

比如eb  0x123432 0x41 0x41 0x41 表示在地址0x123432 写入30x41


示例:

命令:s -b 000007fefd9e0000 000007fefe768000 48 89 5C 24 18

可以找到一些内容:000007fe`fde066f8  48 89 5c 24 18 55 56 57-41 54 41 55 48 81 ec 90  H.\$.UVWATAUH...

可以借助反汇编指令:0:023> u 0x000007fefde066f8

得到以下反汇编内容:

SHELL32!StrStrW+0x4a98:
000007fe`fde066f8 48895c2418      mov     qword ptr [rsp+18h],rbx
000007fe`fde066fd 55              push    rbp
000007fe`fde066fe 56              push    rsi
000007fe`fde066ff 57              push    rdi
000007fe`fde06700 4154            push    r12
000007fe`fde06702 4155            push    r13
000007fe`fde06704 4881ec90030000  sub     rsp,390h
000007fe`fde0670b 488b0536c20b00  mov     rax,qword ptr [SHELL32!Ordinal872+0x731dd (000007fe`fdec2948)]




这篇关于Windbg inline HOOK 实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758683

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx