vs附加到进程调试不了_如何调试xxProtect

本文详细记录了作者在尝试调试xxProtect时遇到的挑战,包括无法找到进程、STATUS_INVALID_CID错误以及调试器无法附加的问题。通过hook系统函数,如PspReferenceCidTableEntry和PsLookupProcessByProcessId,作者成功实现了调试器对目标进程的开放和调试。最终,通过消除DbgUiIssueRemoteBreakin创建附加线程的步骤,使得x64dbg能够顺利进行调试。
摘要由CSDN通过智能技术生成

187b770917a5f467ea5fb0659751c2db.png

0x1:

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

80b6c997f76769eef6bb3ea67c7a9a29.png

fa88c7ac5dbb3dc669ddbe8d45572e85.png

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

74582236007633c9e7ad28c60e552aa1.png

0x2:

打开demo,长这样。

82550cbda326d1905bb2a920db72eb0a.png

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

63538d75712bf0537243dcefb2fa7a1b.png

根据msdn描述,很清楚了。

ef7f42abce9635147f710cbbfc7cf05d.png

做个实验测试一下。

2bada992a13c812721e29cf9b55234c4.png

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

0d003873e732d9233de13439cc16fb53.png

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

0x3:

5b5cd4aa2971fa667f85d6f86aa5c901.png

hook一下PspReferenceCidTableEntry。

5e70efed41896b25fd9be001c9c01ee5.png

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

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

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

0x4:

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

1abe02747a5a738b49ddf25393681998.png

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

1c8eab633bb01e6eb279d5a592475de6.png

加载hook。

e240cab16da015eb0d47f45a8a2aee6f.png

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

0x5:

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

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

2d1b230e4b2c7c32cb209ea1d9727ca8.png

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

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

449b28b26959a8bf0369971901203813.png

下个硬件断点试试。

db37ba674617a5ddec5b4e8f31ae0a59.png

好吧。这就完事了。

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结构与涉及技术介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值