|
发表于 2020-9-2 20:14:30
|
查看: 7839 |
回复: 1
时代在进步。距离老版xxprotect发布有几个月了。终于等到了新版的程序。
1.pchunter检测
打开pchunter后,电脑直接黑屏重启。
解决方法:
新版xxprotect保护调试以及其x64隐藏进程等原理
pchunter改个名字。
2.双机调试
vmp自带的内核调试器检测。挂钩R3的ZwQuerySystemInformation
新版xxprotect保护调试以及其x64隐藏进程等原理
3.进程隐藏
在任务管理器和调试器中看不到xxprotect.exe的进程名,但是直接遍历却可以遍历到
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
发现其pid被修改,变成了winlogon.exe的pid,导致其他任务管理器和调试器不显示其进程
新版xxprotect保护调试以及其x64隐藏进程等原理
windbg跟踪一波,发现其驱动在初始化阶段会设置保护进程的eprocess.InheritedFromUniqueProcessId 和 eprocess.UniqueProcessId
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
win7部分被v
新版xxprotect保护调试以及其x64隐藏进程等原理
把父进程PID设置为4,进程ID设置为winlongon的pid,即可“隐藏进程”。
直接patch SKProDriver.sys驱动的该函数即可不让其隐藏进程,下面贴代码
4.进程/线程对象保护
打开pchunter后,发现SKProDriver注册了以下回调
新版xxprotect保护调试以及其x64隐藏进程等原理
统统xor rax,rax/ret即可,并没有校验
5.调试权限清除
调试附加到进程后,出现
新版xxprotect保护调试以及其x64隐藏进程等原理
发现debugobject.ValidAccessMask被清空。调试发现 SKProDriver.sys 在初始化阶段有一次权限清0行为
新版xxprotect保护调试以及其x64隐藏进程等原理
直接nop了即可
6. debugport检测
调试器附加到xxprotect上后,电脑一闭眼。直接重启,原来是 xxprotect.sys会实时检测其保护进程的process.debugport
新版xxprotect保护调试以及其x64隐藏进程等原理
发现其被赋值后,马上重启电脑
代码如下,不同的系统取不同的debugport偏移
新版xxprotect保护调试以及其x64隐藏进程等原理
直接xor rax,rax/ret这里即可。
7.DbgUiRemoteBreak劫持
调试器附加到xxprotect后,程序退出。
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
把这里恢复即可。
8.疯狂的异常
新版xxprotect保护调试以及其x64隐藏进程等原理
xxprotect会疯狂抛异常,
新版xxprotect保护调试以及其x64隐藏进程等原理
x64dbg设置如上忽略即可
9.r3的反调试
xxprotect有个定时器定时抛异常,然后调用ZwQueryInformationProcess检测程序ProcessDebugPort是否处于调试
新版xxprotect保护调试以及其x64隐藏进程等原理
挂钩R3的ZwQueryInformationProcess,
新版xxprotect保护调试以及其x64隐藏进程等原理
然后处理掉r3的等调试标记位即可
新版xxprotect保护调试以及其x64隐藏进程等原理
10.ThreadHideFromDebugger
此时,程序可以正常附加了,但是命中断点的时候,程序崩溃
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
即可。
至此,其反调试手段全部绕过,程序可以正常调试
新版xxprotect保护调试以及其x64隐藏进程等原理
新版xxprotect保护调试以及其x64隐藏进程等原理
11.驱动的内存补丁
按我们上面找到的点,对xxprotect.sys做内存补丁即可,
先注册一个image callback
新版xxprotect保护调试以及其x64隐藏进程等原理
等到该驱动加载后,启动个线程,进行patch工作
新版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隐藏进程等原理
win10
新版xxprotect保护调试以及其x64隐藏进程等原理
|
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【 投诉建议】板块发帖举报。
|