首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windbg帮助丢失了kernel32函数

windbg帮助丢失了kernel32函数
EN

Stack Overflow用户
提问于 2020-05-13 07:54:57
回答 1查看 610关注 0票数 2

我试图在这里学习本教程,https://www.microsoftpressstore.com/articles/article.aspx?p=2201303,特别是其中提到x kernel32!写处理内存的部分。

我无法找到方法kernel32!WriteProcessMemory =,尽管文档中提到了它,但是我可以找到kernel32!_imp__WriteProcessMemory和kernel32!WriteProcessMemoryStub。我对windbg很陌生,并且试图遵循这个教程,所以我不确定这个方法是否已经被废弃,如果是,它是替代的,以及我们如何实现类似的功能。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 10:39:52

导出的WriteProcessMemory函数实际上指向kernel32!WriteProcessMemoryStub存根,该存根本身跳转到重定向到kernelbase DLL的kernel32!__imp_WriteProcessMemory上,后者是该函数的“真实”位置。

让我们检查一下链接转储:

代码语言:javascript
复制
C:>link /dump /exports c:\windows\system32\kernel32.dll | findstr /I WriteProcess
       1579  62A 00036C50 WriteProcessMemory

0x36C50是函数"WriteProcessMemory“驻留在kernel32中的RVA (如导出表所示)。现在在风车里:

代码语言:javascript
复制
0:007> ln kernel32 + 0x36c50
Browse module
Set bu breakpoint

(00007ff9`4a6e6c50)   KERNEL32!WriteProcessMemoryStub   |  (00007ff9`4a6e6c60)   KERNEL32!ZombifyActCtxStub

我们有一个完全匹配的,实际上是KERNEL32!WriteProcessMemoryStub函数。如果我们看看它:

代码语言:javascript
复制
0:007> u KERNEL32!WriteProcessMemoryStub
KERNEL32!WriteProcessMemoryStub:
00007ff9`4a6e6c50 48ff2599150400  jmp     qword ptr [KERNEL32!_imp_WriteProcessMemory (00007ff9`4a7281f0)]
00007ff9`4a6e6c57 cc              int     3

我们可以看到,它只是跳转到KERNEL32!_imp_WriteProcessMemory (位于kernel32的.idata部分的某个地方)。

现在,如果我们看看这个位置包含了什么,我们就有了一个指针:

代码语言:javascript
复制
0:007> dp KERNEL32!_imp_WriteProcessMemory L1
00007ff9`4a7281f0  00007ff9`496f0ca0

如果我们问windbg这个指针是什么:

代码语言:javascript
复制
0:007> ln 00007ff9`496f0ca0
Browse module
Set bu breakpoint

(00007ff9`496f0ca0)   KERNELBASE!WriteProcessMemory   |  (00007ff9`496f0dc4)   KERNELBASE!OpenWow64CrossProcessWorkConnection
Exact matches:
    KERNELBASE!WriteProcessMemory (void)

我们可以看到,实际上WriteProcessMemory的“真实”位置实际上是在kernelbase.dll中。

注意:您实际上可以使用dps在一个命令中执行最后两个命令

代码语言:javascript
复制
0:007> dps KERNEL32!_imp_WriteProcessMemory L1
00007ff9`4a7281f0  00007ff9`496f0ca0 KERNELBASE!WriteProcessMemory

使用Windbg命令:

代码语言:javascript
复制
- [`dps(Display Words and Symbols)`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/dds--dps--dqs--display-words-and-symbols-): as `dp` but with symbolic information.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61769164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档