美文网首页
如何调试xxProtect

如何调试xxProtect

作者: 看雪学院 | 来源:发表于2019-01-15 18:07 被阅读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结构与涉及技术介绍

    相关文章

      网友评论

          本文标题:如何调试xxProtect

          本文链接:https://www.haomeiwen.com/subject/sdaydqtx.html