z804768186 发表于 2012-8-28 16:07:12

patchguard实验环境

看了 <Bypassing PatchGuard ON x64>十分想试验一下,于是搭建了windbg+vm+win7x64的实验环境,
但是当通过bp nt!KiTestDividend,bp nt!KiInitSystem,bp nt!KiInitializePatchGuard等添加了断点后,
却没有中断下来.
自己分析可能是因为设置了debug模式,导致patchguard根本没有启动.
那么想要分析patchguard的启动过程到底该用什么实验环境呢?求助各位牛人

Tesla.Angela 发表于 2012-8-28 18:19:40

没错,DEBUG模式时PATCHGUARD不启动。

z804768186 发表于 2012-8-28 20:24:21

本帖最后由 z804768186 于 2012-8-28 20:38 编辑

Tesla.Angela 发表于 2012-8-28 18:19 static/image/common/back.gif
没错,DEBUG模式时PATCHGUARD不启动。

我发现了这么一段话:
For those curious as to how the authors were able to debug the PatchGuard initialization
vector that is intended to be disabled when a debugger is attached, one method is to simply
break on the div instruction in nt!KiDivide6432 and change r8d to zero. This will generate
the divide error fault and lead to the calling of the PatchGuard initialization routines. In
order to allow the machine to boot normally, a breakpoint must be set on nt!KiDivide6432
after the fact to automatically restore r8d to 0xcb5fa3

意思就是要在nt!KiDivide6432中修改被除数为0,引发除法错误,但是Couldn't resolve error at 'nt!KiDivide6432'
有木有,怎么会找不到这个函数呢....伤不起了

Tesla.Angela 发表于 2012-8-29 09:43:29

那就买两台电脑呗。
反正现在电脑也不贵。

z804768186 发表于 2012-8-29 10:46:55

Tesla.Angela 发表于 2012-8-29 09:43 static/image/common/back.gif
那就买两台电脑呗。
反正现在电脑也不贵。

Tesla.Angela大哥,为啥我在windbg里面找不到'nt!KiDivide6432'这个函数呢,要是机器的原因,就只能买了

Tesla.Angela 发表于 2012-8-29 19:17:24

z804768186 发表于 2012-8-29 10:46 static/image/common/back.gif
Tesla.Angela大哥,为啥我在windbg里面找不到'nt!KiDivide6432'这个函数呢,要是机器的原因,就只能买了 ...

你加载了符号没有?

z804768186 发表于 2012-8-30 11:19:03

Tesla.Angela 发表于 2012-8-29 19:17 static/image/common/back.gif
你加载了符号没有?

我的符号路径是SRV*d:\Symbol*http://msdl.microsoft.com/download/symbols
然后是连上网的,让他下载着,别的,像 nt!KiTestDividend, nt!KiInitSystem都能找到,
我在想win7x64下面会不会已经把这个函数换名字了

Tesla.Angela 发表于 2012-8-30 13:12:32

z804768186 发表于 2012-8-30 11:19 static/image/common/back.gif
我的符号路径是SRV*d:\Symbol*http://msdl.microsoft.com/download/symbols
然后是连上网的,让他下载着, ...

有可能

z804768186 发表于 2012-8-30 17:54:46

Tesla.Angela 发表于 2012-8-30 13:12 static/image/common/back.gif
有可能

Tesla.Angela 哥,我重新下载了符号包,然后windbg只提示了这么一条:
ERROR: Module load completed but symbols could not be loaded for spldr.sys
别的都加载上了,还是没有找到'nt!KiDivide6432'函数,难不成这个函数在win7x64下不存在?

Tesla.Angela 发表于 2012-8-31 01:03:25

z804768186 发表于 2012-8-30 17:54 static/image/common/back.gif
Tesla.Angela 哥,我重新下载了符号包,然后windbg只提示了这么一条:
ERROR: Module load completed but sy ...

.reload了没有?
另外,不存在很正常啊。这些没文档的东西变换名字完全不需要通知你。

z804768186 发表于 2012-8-31 08:56:23

Tesla.Angela 发表于 2012-8-31 01:03 static/image/common/back.gif
.reload了没有?
另外,不存在很正常啊。这些没文档的东西变换名字完全不需要通知你。 ...

我用lm命令查看了,确实是加载好了符号的,我最后没办法,给那个作者发了一个邮件,
万一他回复我了,我把结果放上来吧

kk1025 发表于 2013-4-11 17:54:33

試試看用遠端DEBUG, 兩台VM,互連來做到DEBUG , 實際怎麼做我也沒試過, 搞不好也是一樣問題
http://msdn.microsoft.com/en-us/library/vstudio/bt727f1t.aspx

boxjellyfish 发表于 2014-1-10 19:15:18

z804768186 发表于 2012-8-28 20:24
我发现了这么一段话:
For those curious as to how the authors were able to debug the PatchGuard init ...

这个是要在启动时修改然后再把那个r8d寄存器改回来才能正常启动的吧?

boxjellyfish 发表于 2014-1-10 19:16:33

z804768186 发表于 2012-8-28 20:24
我发现了这么一段话:
For those curious as to how the authors were able to debug the PatchGuard init ...

这个是要在启动时修改然后再把那个r8d寄存器改回来才能正常启动的吧?

Tesla.Angela 发表于 2014-1-10 20:10:29

过去一年多了,重新回复一下这个帖子:
1.KiInitializePatchGuard等函数存在,但不存在于符号里(被M$有意删除了)。
2.真机的双机调试估计也不能调试PATCHGUARD,但可以试试BOCHS。但BOCHS是非常慢的。
3.PATCHGUARD的更新非常快,据说现在已经更新到V13了(道听途说),网上的资料已经严重过时。
4.静态过PATCHGUARD非常简单(欺负M$不会在自家的BIN上加VMP或者TMD之类的保护)。
5.用MBR ROOTKIT的方法也可以动态过PATCHGUARD,而且难度较低(难度在于MBR启动部分)。
6.当PATCHGUARD启动之后,要让其失效(DISABLE),难度较大。
页: [1]
查看完整版本: patchguard实验环境