学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1157

主题
发表于 2020-9-2 20:14:30 | 查看: 5684| 回复: 1
时代在进步。距离老版xxprotect发布有几个月了。终于等到了新版的程序。
1.pchunter检测
打开pchunter后,电脑直接黑屏重启。
解决方法:

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理
pchunter改个名字。


2.双机调试
vmp自带的内核调试器检测。挂钩R3的ZwQuerySystemInformation

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



3.进程隐藏
在任务管理器和调试器中看不到xxprotect.exe的进程名,但是直接遍历却可以遍历到

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


发现其pid被修改,变成了winlogon.exe的pid,导致其他任务管理器和调试器不显示其进程

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


windbg跟踪一波,发现其驱动在初始化阶段会设置保护进程的eprocess.InheritedFromUniqueProcessId 和 eprocess.UniqueProcessId

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


win7部分被v

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理




把父进程PID设置为4,进程ID设置为winlongon的pid,即可“隐藏进程”。
直接patch SKProDriver.sys驱动的该函数即可不让其隐藏进程,下面贴代码

4.进程/线程对象保护
打开pchunter后,发现SKProDriver注册了以下回调

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


统统xor rax,rax/ret即可,并没有校验

5.调试权限清除
调试附加到进程后,出现

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


发现debugobject.ValidAccessMask被清空。调试发现 SKProDriver.sys 在初始化阶段有一次权限清0行为

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


直接nop了即可

6. debugport检测
调试器附加到xxprotect上后,电脑一闭眼。直接重启,原来是 xxprotect.sys会实时检测其保护进程的process.debugport

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


发现其被赋值后,马上重启电脑
代码如下,不同的系统取不同的debugport偏移

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


直接xor rax,rax/ret这里即可。

7.DbgUiRemoteBreak劫持
调试器附加到xxprotect后,程序退出。

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


把这里恢复即可。

8.疯狂的异常

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


xxprotect会疯狂抛异常,

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


x64dbg设置如上忽略即可

9.r3的反调试
xxprotect有个定时器定时抛异常,然后调用ZwQueryInformationProcess检测程序ProcessDebugPort是否处于调试

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


挂钩R3的ZwQueryInformationProcess,

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


然后处理掉r3的等调试标记位即可

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



10.ThreadHideFromDebugger
此时,程序可以正常附加了,但是命中断点的时候,程序崩溃

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


即可。
至此,其反调试手段全部绕过,程序可以正常调试

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



11.驱动的内存补丁
按我们上面找到的点,对xxprotect.sys做内存补丁即可,
先注册一个image callback

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


等到该驱动加载后,启动个线程,进行patch工作

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理



总结:
反调试强度
xxprotect ≈ apex丐版 eac
还原过后的xxprotect的x64隐藏进程代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void HideProcess(PEPROCESS process) {
  const auto SystemVersion = []() {
    RTL_OSVERSIONINFOW VER;
    RtlGetVersion(&VER);
    return VER.dwBuildNumber;
  };
  const auto hide_process = reinterpret_cast<uintptr_t>(process);
  const auto syser_version = SystemVersion();
  DbgPrint("sysver:%d\n", syser_version);
  switch (syser_version) {
  case 9200:
  case 9600:
  case 15063:
  case 16299:
  case 17134:
  case 17763:
    *reinterpret_cast<DWORD *>(hide_process + 0x3E0) = 4;
    *reinterpret_cast<DWORD *>(hide_process + 0x2E0) = GetWinlogonPid();
    break;
  case 10240:
  case 10586:
  case 14393:
    *reinterpret_cast<DWORD *>(hide_process + 0x3E0) = 4;
    *reinterpret_cast<DWORD *>(hide_process + 0x2E8) = GetWinlogonPid();
    break;
  case 7600:
  case 7601:
  case 7602:
    *reinterpret_cast<DWORD *>(hide_process + 0x290) = 4;
    *reinterpret_cast<DWORD *>(hide_process + 0x180) = GetWinlogonPid();
    break;
  default:  break;
  }
}


使用效果图

win7

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理


win10

新版xxprotect保护调试以及其x64隐藏进程等原理

新版xxprotect保护调试以及其x64隐藏进程等原理

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

    发表于 2020-9-3 17:36:10
    感谢分享,我会认真学习的!

    小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

    GMT+8, 2024-4-20 18:43 , Processed in 0.108177 second(s), 47 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表