首页
社区
课程
招聘
[原创]发现最近好多在说T*启动时清空CR3 如何去恢复。方法很简单。我把代码今天贴出来。
发表于: 2018-12-4 23:47 11975

[原创]发现最近好多在说T*启动时清空CR3 如何去恢复。方法很简单。我把代码今天贴出来。

2018-12-4 23:47
11975

DXF可以直接恢复CR3 无检测。CF就不行。CF有检测。

CF只能出PTML4入手。就算你恢复了CR3.你们会发现 部分地址你们还是读不到?

为啥呢。这个问题问的好。看看 0E 就明白了。核心数据全部清空 当有进程去访问

这些地址 地址不存在触发异常 进入 0E 。T*判断触发 进程是不是自己的进程 是自己的进程

就给他一个抹掉的地址。不是真的 直接返回0.

这个在DXF影响不大。在CF上影响比较严重。

我之前想过HOOK MmMapIoSpace 来判断。意义不大。

如果是你直接返回NULL.直接升天

如何解决这个问题呢?

嵌套 TP HOOK 进行HOOK 按照某位网友给我的思路就是。

具体代码我也没有实现。有兴趣的自己去实现一下吧

PULONGLONG Mapped_Memory_Addr(ULONGLONG Addr, int Mapped_len, int Catch)

{

PHYSICAL_ADDRESS Physical_address;

RtlZeroMemory(&Physical_address, sizeof(PHYSICAL_ADDRESS));

if (Addr <= 0)

{

return NULL;

}

Physical_address.QuadPart = Addr;


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-12-4 23:55 被BDBig编辑 ,原因:
上传的附件:
收藏
免费 4
支持
分享
最新回复 (26)
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
#define PROCESS_ALL_ACCESS_THREAD        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | THREAD_ALL_ACCESS|\
                                   0xFFFF)
2018-12-4 23:54
0
雪    币: 1180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2018-12-5 00:01
0
雪    币: 854
活跃值: (69)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
占楼
2018-12-5 00:04
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
被安排的明明白白
2018-12-5 00:20
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
小艾 被安排的明明白白
这东西肯定是被安排的。但是为啥没安排。我都感觉是T*在放水
2018-12-5 00:26
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
鹅厂:懒得管
实际上他都接管idt和msr了,只要在进内核的时候把再cr3改回假的,你们这些各种xx回调都gg
顺便 你这样依然没有解决关键数据PTE被抹的问题
最后于 2018-12-5 08:17 被hzqst编辑 ,原因:
2018-12-5 08:16
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
hzqst 鹅厂:懒得管实际上他都接管idt和msr了,只要在进内核的时候把再cr3改回假的,你们这些各种xx回调都gg顺便 你这样依然没有解决关键数据PTE被抹的问题
我换了1809 就不存在着问题了。哈哈。清PTE的我在DXF没有发现。到是CF这样的黄昏游戏 竟然清掉了
2018-12-5 09:02
0
雪    币: 10704
活跃值: (809)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
当场逮捕,这只是鹅厂员工没把事情做绝吧,毕竟都接管msr了,话说这方法应该被安排的明明白白了吧
2018-12-5 09:12
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
     
最后于 2018-12-5 09:18 被BDBig编辑 ,原因:
2018-12-5 09:18
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
固件安全 [em_36]当场逮捕,这只是鹅厂员工没把事情做绝吧,毕竟都接管msr了,话说这方法应该被安排的明明白白了吧
OE都接管。肯定呀。这种方法 没有被安排。。鹅场不想管。我现在上游戏看见外挂都恶心。现在大部分的读写的玩意都是注入。注入shellcode。这东西也不知道啥时间管。据悉市场价 CF : 800一月。APC注入shellcode.DXF 3 - 4K /月
2018-12-5 09:18
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
12
线程回调里就可以拿到cr3了,为啥要这么麻烦?
2018-12-5 09:31
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
13
顺便给你说一下,tp在win10并不是接管idt 0e
2018-12-5 09:32
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
直接驱动拦截协议通讯,分析封包,懒得去逼逼驱动防护
2018-12-5 09:36
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark下,不明觉厉
2018-12-5 09:48
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
16
BDBig 我换了1809 就不存在着问题了。哈哈。清PTE的我在DXF没有发现。到是CF这样的黄昏游戏 竟然清掉了
1809的安排pg,鹅厂还没搞稳定,大概是这个原因
2018-12-5 10:05
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
刘铠文 顺便给你说一下,tp在win10并不是接管idt 0e
你说的是高版本的的WIN10 像我这种的万年不更新的 接管了。
2018-12-5 10:21
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
刘铠文 线程回调里就可以拿到cr3了,为啥要这么麻烦?
线程回掉 最后你一样要拉OB站坑。为什么占坑 和 恢复页表一体呢。又少了写了一个线程回掉的代码
2018-12-5 10:22
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
hzqst 1809的安排pg,鹅厂还没搞稳定,大概是这个原因
估计等他搞稳定了。微软在拉一波更新。哈哈。据说现在某大手子 的调试器 只支持没有挂MSR 和 IDT版的WIN10 WIN7。随便问一下。pte清空了 能不能不备份就给恢复呢?或者反清空
2018-12-5 10:23
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
hzqst 鹅厂:懒得管实际上他都接管idt和msr了,只要在进内核的时候把再cr3改回假的,你们这些各种xx回调都gg顺便 你这样依然没有解决关键数据PTE被抹的问题
我获取到真实页表 KeAttach进去 访问游戏内存 此时pte因为被清0  会触发异常 进入idt  tp此时应该能给我放行吧 
2018-12-5 15:02
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
win7上这东西是没有用滴
2018-12-6 09:03
0
雪    币: 634
活跃值: (1149)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
fakersaber win7上这东西是没有用滴[em_1]
W7没用开玩笑。看懂什么意思了吗?你以为只是一个OB吗?看清楚里边的代码亲。

  PULONG64 Fake_PTML4 = Mapped_Memory_Addr(*(PULONG64)((ULONG64)pe + 0x28), 0x1000, 0);
     PULONG64 True_PTML4 = Mapped_Memory_Addr(__readcr3(), 0x1000, 0);
     if (Fake_PTML4[0] != True_PTML4[0])
     {
      _disable();
      if (Fake_PTML4 != NULL && True_PTML4 != NULL)
      {
       RtlCopyMemory(Fake_PTML4, True_PTML4, 0x1000);
      }
      MmUnmapIoSpace(Fake_PTML4, 0x1000);
      MmUnmapIoSpace(True_PTML4, 0x1000);
      _enable();


核心代码看清楚
最后于 2018-12-6 17:26 被BDBig编辑 ,原因:
2018-12-6 17:24
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
呦西是干货
2018-12-11 19:28
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
hzqst 鹅厂:懒得管实际上他都接管idt和msr了,只要在进内核的时候把再cr3改回假的,你们这些各种xx回调都gg顺便 你这样依然没有解决关键数据PTE被抹的问题
呦西前辈给提了个醒以后如果不能读写或许能考虑你这个建议
2018-12-11 19:43
0
雪    币: 198
活跃值: (256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
小心鹅厂安排,低调点!
2019-1-12 04:15
0
游客
登录 | 注册 方可回帖
返回
//