如何调试xxProtect
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 。
- End -
看雪ID:xiaofu
https://bbs.pediy.com/user-99882.htm
本文由看雪论坛 xiaofu 原创
转载请注明来自看雪社区
长按识别下方图中的二维码,为Ta投票!今晚23:59截止!
热门图书推荐:
热门技术文章:
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com