Remote 修改 Notepad

在之前的文章中研究过如何修改 Notepad,但是当时的结论是:无法通过 Kernel Debug 的方式调整目标机上的 Application【参考1】。这次实验使用 Kernel Debug 进行同样的操作。实验环境是USB3.0 调试远端 Win 10 环境。

Step1. 建立好 USB 3.0 的连接,然后在被测机上打开 NotePad.exe,另外保证 Symbols 正确加载

Step2. 使用 !process 0 0 列出所有进程:

PROCESS ffffcf0d61835300
    SessionId: 1  Cid: 0b08    Peb: 14fbdcc000  ParentCid: 03b8
    DirBase: 3d3a5f000  ObjectTable: ffff9381ba013d00  HandleCount: 256.
    Image: svchost.exe

PROCESS ffffcf0d65432300
    SessionId: 0  Cid: 0e68    Peb: fa07ff1000  ParentCid: 03b8
    DirBase: 3f5dba000  ObjectTable: ffff9381b739bd40  HandleCount: 224.
    Image: svchost.exe

PROCESS ffffcf0d6a8a0080
    SessionId: 1  Cid: 04a0    Peb: 40c7e7c000  ParentCid: 18ac
    DirBase: 27b9df000  ObjectTable: ffff9381b72cbcc0  HandleCount: 233.
    Image: notepad.exe

Step3. 使用.process /i /p ffffcf0d6a8a0080入侵式调试 Notepad进程,然后再 g 继续。等再次停下时已经在 Notepad进程中了。

.process /i /p

之后的做法和【参考1】提到的本地调试相同

Step4. 在打开窗口函数上下断点 bp notepad!ShowOpenSaveDialog,g之后在 Notepad 中 file -> open就会自动停下来

设置 notepad!ShowOpenSaveDialog 断点

Step5. K 命令查看堆栈

查看断下来之后的堆栈

Step6. ub notepad!InvokeOpenDialog+0xc3 反编译

反编译查看调用处的代码

Step7. 我们修改的目标就是上面的 mov rcx,rsi, 使用 a 命令写入代码

a 命令写入代码

再确认修改成功

再次反编译确定修改成功

Step8. G 命令运行,然后重新打开 Open 菜单,可以发现当前能够在打开对话框的情况下聚焦到Notepad 编辑区。

参考:

1.https://www.lab-z.com/windbgn/

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注