Make a Windbg By Yourself

YOLOv8与UNetV2融合:一种面向目标检测与图像分割的混合方法【附核心代码】 我们提出了一种基于YOLOv8和UNetV2相结合的混合架构。该架构利用YOLOv8作为主干进行目标检测,同时在YOLOv8的特征提取过程中,引入UNetV2来进行图像分割任务的增强。在该架构中,YOLOv8负责大范围目标检测和位置预测,而UNetV2则在检测网络的特征图基础上,通过其高效的上下文信息提取和细节恢复能力,进一步优化分割任务。在本文中,我们提出了一种改进YOLOv8的方法,通过引入图像分割网络UNetV2来提高图像分割检测性能。 阅读详情
 Windbg 的工作实质是连接windows的内核调试,windows已经把内核调试的机制集成进了内核,只需要连接windows的内核调试接口,完全不需要想softice一样挂接很多中断处理过程就能实现内核调试,
关于这个的详细介绍请参考 Windows内核调试器原理浅析
http://www.xfocus.net/articles/200412/765.html

曾经听说过themida大牛说.windbg不过是一个demo,完全能够自己写出更好的,偶不是大牛,不可能写出好东西,只能先努力做个仿制品,.,还没有能力做复制品,更不用谈超越了

windbg的内核调试部分主要功能封装在dbgeng.dll之中
通过debugcreate创建一个clsid的com+接口来实现调试控制
我们可以拿出ida分析windbg.exe
signed int __stdcall CreateUiInterfaces(int a2, PCWSTR RemoteOptions)
{
............

  ReleaseUiInterfaces();
  if ( a2 )
  {
    v3 = DebugConnectWide(RemoteOptions, &_GUID_27fe5639_8407_4f47_8364_ee118fb08ac8, &g_UiClientBase);

..............
  }
  else
  {
    v6 = DebugCreate(&_GUID_27fe5639_8407_4f47_8364_ee118fb08ac8, &g_UiClientBase);

如同所示,DebugConnectWide连接远程的调试模块

事实上,我们直接利用dbgeng.h+dbgeng.lib,已经可以完成windbg的所有功能了
dbgeng.h文件在C:/Program Files/Debugging Tools for Windows (x86)/sdk/inc
这个文件大小为521kb,包括了一切windbg所用的debugapi
安装windbg的时候一定要选择安装sdk,不然可能没有这个文件

// RemoteOptions specifies connection types and
// their parameters.  Supported strings are:
//    npipe:Server=<Machine>,Pipe=<Pipe name>
//    tcp:Server=<Machine>,Port=<IP port>
STDAPI
DebugConnect(
    __in PCSTR RemoteOptions,
    __in REFIID InterfaceId,
    __out PVOID* Interface
    );

STDAPI
DebugConnectWide(
    __in PCWSTR RemoteOptions,
    __in REFIID InterfaceId,
    __out PVOID* Interface
    );

STDAPI
DebugCreate(
    __in REFIID InterfaceId,
    __out PVOID* Interface
    );

    STDMETHOD(GetThreadContext)(
        THIS_
        __out_bcount(ContextSize) /* align_is(16) */ PVOID Context,
        __in ULONG ContextSize
        ) PURE;
    STDMETHOD(SetThreadContext)(
        THIS_
        __in_bcount(ContextSize) /* align_is(16) */ PVOID Context,
        __in ULONG ContextSize
        ) PURE;

如上api声明,我们可以直接使用这些api完成调试工作

虽然我们可以这样实现自己的debugger,但是还是有一些麻烦
有一个开源的PyDbgEng,
http://sourceforge.net/projects/pydbgeng/

从上面的站点里面可以获取很多资料
我们看看介绍
PyDbgEng is a Python Wrapper For Microsoft Debug Engine.
kernel mode debugging
x86, x64 support
Wrapper for DebugCreate() API which creates IDebugClient COM interface.
Easy access to IDebugClient COM interface
Easy access to all other DbgEng COM interfaces via IDebugClient.QueryInterface()
Easy access to all DbgEng structs and enums.
Receive DbgEng events. Currently supported: IDebugEventCallbacks, IDebugOutputCallbacks

很好.完全封装了IDebugClient COM interface. 从而我们可以直接使用
py的代码有个好处就是可以用最快的速度写出测试程序

我们随便选取一段代码
event_handler = DbgEventHandler()
dbg = PyDbgEng.KernelAttacher(  connection_string = connection_string, /
                                set_initial_bp = True, /
                                event_callbacks_sink = event_handler, /
                                output_callbacks_sink = event_handler, /
                                symbols_path = "SRV* http://msdl.microsoft.com/download/symbols")
---------------------------
class DbgEventHandler(PyDbgEng.IDebugOutputCallbacksSink, PyDbgEng.IDebugEventCallbacksSink):

    def LoadModule(self, dbg, ImageFileHandle, BaseOffset, ModuleSize, ModuleName, ImageName, CheckSum, TimeDateStamp):
        sys.stdout.write("LoadModule: ImageName = /"%s/"/n" % ImageName)
        return PyDbgEng.DbgEng.DEBUG_STATUS_NO_CHANGE
----------------------------
KernelAttacher连接上,设置event,然后就可以直接处理事件了,是不是很方便呢

我们再来看一个r3debuger
Copy code
event_handler = DbgEventHandler()
dbg = PyDbgEng.ProcessCreator(  command_line = filename, /
                                follow_forks = True, /
                                event_callbacks_sink = event_handler, /
                                output_callbacks_sink = event_handler, /
                                symbols_path = "SRV*[url]http://msdl.microsoft.com/download/symbols[/url]")

def NtCreateThread_at_entry(dbg, args):
    sys.stdout.write("NtCreateThread() called with following call stack:/n")
    stack_frames = dbg.get_stack_trace(FRAMES_COUNT)
    for i in range(FRAMES_COUNT):
        eip = stack_frames[i].InstructionOffset
        if (eip == 0):
            break
        func_symbol = dbg.get_symbol(eip)
        sys.stdout.write("[%d] %s/n" % (i, func_symbol))
    sys.stdout.write("/n")

代码基本是类似的,ProcessCreator选出进程,然后进行各种工作

我们可以发现,利用PyDbgEng +dbgeng.dll能够让我们自己编写debugger
的工作变得异常容易,只需要完成eventhandle的事件处理,,而无需对于复杂的
处理机制进行任何更改就可以实现我们想要的功能了

文中提到的工具
1.windbg
  Install Debugging Tools for Windows 32-bit Version
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
  Install Debugging Tools for Windows 64-bit Versions
http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx

2.PyDbgEng
http://sourceforge.net/projects/pydbgeng/
http://bbs.pediy.com/showthread.php?t=41440
lin斑推荐的工具太强大了
Oracle EBS PAC定期成本分配处理程序请求报错:30011一个无效帐户与正在处理的物料关联 Oracle EBS版本: RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 前提条件: 1、启用“MRP:调试模型”配置文件 月结会计反映执行《定期成本分配处理程序》请求报错: 中文:30011一个无效帐户与正在处理的物料关联。: CSTPALPC.create_dist_entry : 40 英文:30011An invalid account is associated with the item being transacted.:... 阅读详情

相关推荐

Microduck机器鸭开源AI项目:本地部署与模型微调实战指南

开源AI模型的本地化部署与定制化训练正成为开发者关注的技术趋势。与依赖云端API的在线服务不同,本地部署允许用户将模型权重下载至自有GPU环境,通过命令行或WebUI完成推理、批量任务处理及API集成,在数据隐私、离线使用和接口稳定性方面具备天然优势。模型微调则基于预训练权重,利用领域数据训练特定任务,从而提升生成质量与业务适配度。这一技术路径广泛应用于内容生成、智能对话、自动标注等场景,尤其适合消费级显卡开发者、数据敏感型团队及二次开发研究者。Microduck(机器鸭)作为近期预售火爆的开源项目,围绕“

weixin_29082143的博客 417

windbg 插件编写 ---基础篇

标 题: WinDbg插件编写——基础篇作 者:Lvg时 间:2007-01-29 00:43  链 接:http://bbs.pediy.com/showthread.php?t=38729 WinDbg插件编写——基础篇     本文只是简略的描述了一下WinDbg扩展命令的编写步骤及方法,更详细的请看他的帮助文档,起到一个抛砖引玉的作用就行了。 Win

superliuxing的专栏 1988

线阵相机标定必看:如何用Halcon实现亚毫米级精度测量(以HC050标定板为例)

本文以HC050标定板为例,详细阐述了如何利用Halcon实现线阵相机的高精度标定,以达到亚毫米级测量。文章深入剖析了线阵相机标定的核心原理、面临的独特挑战,并提供了从硬件搭建、图像采集到Halcon软件实操的完整路径,重点解析了运动参数设置、精度验证及常见问题排错,为精密测量应用提供系统解决方案。

weixin_29213655的博客 314

如何完成Windbg插件

WinDbg插件编写――基础篇本文只是简略的描述了一下WinDbg扩展命令的编写步骤及方法,更详细的请看他的帮助文档,起到一个抛砖引玉的作用就行了。WinDbg是老盖自己家出的调试器,功能很强大。即可调试用户态,也可以调试核心态程序。本文主要介绍他插件(准确讲应该是扩展命令)的编写方法。WinDbg的扩展命令和OD一样是通过DLL文件导出的。一.插件的类型他有两种不同类型的DLL文件:1.DbgE

IT杂谈 3253

2025华为OD机试真题目录汇总 B+C+D+E卷(570道)(Python语言)

本文是华为OD机试真题(Python 语言)专栏的目录贴(持续更新中…)华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 18万+

YOLO26优化:AAAI2026 | 融合PartialNet Block的C3k2-YOLO高效目标检测网络 | 轻量化涨点设计

PartialNet Block 结合YOLO26的C3k2模块,进行二次创新。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 595

[转帖]WinDbg插件编写——基础篇

导读:   一.插件的类型   他有两种不同类型的DLL文件:   1.DbgEng类型DLL。这种类型的DLL都已“dbgeng.h” 头文件为基础。扩展命令的功能比较强大,可以用Debugger Engine API(这种调试API不依赖WinDbg,可以用来编写自己的调试器),也可以用WdbgExts API。   2.WdbgExts类型DLL。这种类型的DLL以“Wdbgexts

菠菜的专栏 2783

Pytorch入门教程

Pytorch学习总结:1.张量Tensor 张量是一种特殊的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于NumPy的ndarray,除了张量可以在 GPU 或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存,从而无需复制数据。...

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 4万+

编写 Debugging Tools for Windows 扩展,第 1 部分 (windbg 插件 扩展)

调试器 API 编写 Debugging Tools for Windows 扩展 Andrew Richards   下载代码示例 http://download.csdn.net/detail/whatday/7133071 对生产问题进行故障排除可能是任何一位工程师要完成的最令人头疼的工作之一。 但同时它也可能是让人最有成就感的工作之一。 我在 Microsoft 技术支持部工作...

whatday的专栏 2860

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3055

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1105

Make a Windbg By Yourself(一)

标 题:Make a Windbg By Yourself(一)作 者:zhuwg时 间:2008-06-08 07:05:24  链 接:http://bbs.pediy.com/showthread.php?t=66218 先祝福大家端午节快乐 Windbg 的工作实质是连接windows的内核调试,windows已经把内核调试的机制集成进了内核,只需要连接windows的内核调

superliuxing的专栏 783

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1071

WinDBG扩展命令的工作原理

Windbg扩展命令原理 Depends tool - Scan dependent modules on windows for dll, exe, sys files http://dependencywalker.com/ 要理解WinDBG扩展命令的原理应该先理解WinDBG软件的架构,下图是以模块为单位所画出的架构示意图。最上层是四个EXE模块,它们提供了不同形

笑傲江湖的专栏 894

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

v8windbg:为 V8 引擎打造的 WinDbg 调试扩展(构建、使用与源码架构解析)

[v8windbg](https://link.gitcode.com/i/b348366d1cc2668181992bf0e84702dd) 是 V8 官方仓库中提供的 WinDbg 调试扩展,用于在调试 V8 引擎进程(d8、Chrome、Node.js 等)时,让 WinDbg 的 Locals 窗口与 `dx` 命令能够以可读的方式展示 V8 堆对象(HeapObject、Handle、T

gitblog_00294的博客 378

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【逆向知识】开发WinDBG扩展DLL

如何开发WinDbg扩展DLL WinDbg扩展DLL是一组导出的回调函数,用于实现用户定义的命令。以便从内存转储中提取特定的信息。扩展dll由调试器引擎加载,可以在执行用户模式或内核模式调试时提供自动化任务的扩展功能。扩展DLL可以导出任意数量用于执行扩展命令的函数。每个函数都被显式地声明为DLL定义文件中的导出函数,.def文件和函数名必须是小写字母。 ​ WinDbg(DbgEng...

weixin_30888027的博客 405

编写windbg调试器扩展 入门篇1

我博客的左侧专栏曾经转过windows下编写调试器的一系列文章,这类文章是从零打造调试器,而这篇文章是介绍如何为windbg编写调试器扩展命令。 0.前言     windbg的命令有很多,其中以"!"开始的命令就是所谓的扩展命令。这些扩展命令由Dll以导出函数的形式提供给windbg加载。一般跟在"!"后面的字符串就是dll中导出的函数。以!htrace命令为例,查看windbg帮助文档,它

lixiangminghate的专栏 1906

编写windbg调试器扩展 入门篇2

前面一篇是用sources和nmake组合编译生成调试器扩展,步骤比较繁琐,我相信读者应该更倾向于用IDE来编写代码。本篇有2个主题:1.将前面的代码移植到VS上,用IDE编译;2.调试生成的扩展命令。 1.移植代码到IDE     这部分相对简单,所以放在开头。要用IDE代替nmake编译调试器扩展,只要把sources文件中的编译/链接选项复制到VS对应的选项中就可以了。 1.1.设置编

lixiangminghate的专栏 926

Debugger APIs - Writing a Debugging Tools for Windows Extension (编写Windbg扩展)

转自:https://msdn.microsoft.com/en-us/magazine/gg650659.aspx Troubleshooting production issues can be one of the most frustrating jobs that any engineer can do. It can also be one of the most rewar

lixiangminghate的专栏 1674

pykd执行出错??windbg和pykd正确安装过程

windbg和pykd安装过程windbgpykd windbg 从微软官网下载windows sdk setup安装,选择框只选择Debugging …,只安装windbg,不要从win7上的windbg打包放在windows 10上用,虽然平时可以用,没有问题,但是以后用pykd时可能会出问题,安装windbg最靠谱的方法是从官网下载winsdksetu.exe安装!!! pykd 从pykd...

dapeng1994的博客 1596

谷歌浏览器调试api插件_Windows调试器API —版本化结构的结尾

谷歌浏览器调试api插件Some time ago I was introduced to the Windows debugger API and found it incredibly useful for projects that focus on forensics or analysis of data on a machine. This API allows us to open ...

weixin_26746861的博客 696

循环嵌套(多层 for 循环)

表:order(订单表,order_id, user_id)、user(用户表,user_id, user_name)✅ 优化:先查所有订单,拿到所有 user_id 批量 in 查询,内存 join。✅ 优化:先把优惠券转 HashMap,单层循环查找(hash 查找 O (1))SQL 只有 2 次,O (1) 数据库查询,内存遍历 O (n)。需求:查询所有订单列表,同时带出每个订单对应的用户名称。需求:订单列表、优惠券列表,把订单匹配对应的优惠券名称。复杂度:O (M+N),非常快。

weixin_43732943的博客 224

Python+Agent入门笔记(六):记忆和状态,从“一次性问答”到“能用助手”

滑动窗口的缺点很明显:被扔掉的信息就真没了。如果用户第一轮说“我不吃辣”,隔了二十轮让他推荐餐厅,模型已经忘了。定期把旧的对话压缩成一段总结,作为一条特殊的消息插进去。"""把除 system 和最近 keep_recent 条以外的消息,压缩成一条摘要。返回新的 messages 列表。"""# 把旧消息拼成纯文本,让模型总结content = f"[工具结果]把除 system 和最近 keep_recent 条以外的消息,压缩成一条摘要。返回新的 messages 列表。

qq_41241612的博客 113

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

a bit 217

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 751
上一篇: 加密资源节
下一篇: Unpatched Word Vulnerability
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值