如何调试xxProtect

2019-01-15  本文已影响28人  看雪学院


0x1:

今天终于拿到了萌妹以求的xxprotect的demo,

好久没搞反调试这一块了。心痒痒,开搞。


0x2:

 打开demo,长这样。

是个64的程序,直接上x64dbg ,发现竟然找不到进程.尝试直接OpenProcess,报错 STATUS_INVALID_CID。

根据msdn描述,很清楚了。

做个实验测试一下。

系统根据cid拿不到eprocess信息,看看PsLookupProcessByProcessId的实现。

可以考虑自己维护下这个东西cid->cidtableentry。

0x3:

hook一下PspReferenceCidTableEntry。

在进程创建的时候调用下ProcessStart加入当前的table.结束的时候调用下ProcessDelete移除掉table。

然后跑起来发现有点问题。在进程退出的时候,系统会GG掉。

那只能换个办法了,hook PsLookupProcessByProcessId。

0x4:

代码稍微改一下,写一个维护类。

然后进程创建/结束的逻辑一样,不过table变成eprocess了。

加载hook。

一波操作后,我们就可以让调试器OpenProcess这个demo了。

0x5:

x64dbg虽然能打开进程句柄了,但是还是不能附加调试。在DebugActiveProcess的时候失败了。

稍微跟进去看看,发现问题出在了DebugActiveProcess的DbgUiDebugActiveProcess的DbgUiIssueRemoteBreakin创建附加线程上。

创建线程失败,导致x64dbg直接脱离调试状态。其实说到底这个线程要不要都可以,我们直接把这里PATCH掉。再附加。 嗯?直接可以调试了?

MessageBox下个断点试试,也能正常触发。

下个硬件断点试试。

好吧。这就完事了。

0x6:

1.hook PsLookupProcessByProcessId.自己维护eprocess和cid的关系。

2.去掉DebugActiveProcess的DbgUiDebugActiveProcess的DbgUiIssueRemoteBreakin。

原文作者:xiaofu

原文链接:https://bbs.pediy.com/thread-248918.htm

转载请注明:转自看雪学院

更多阅读:

IE VBScript 漏洞之CVE-2018-8174

IE VBScript 漏洞之CVE-2014-6332

[原创]如何调试xxProtect

[原创]源码简析之ArtMethod结构与涉及技术介绍

上一篇下一篇

猜你喜欢

热点阅读