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

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库