首页
社区
课程
招聘
[原创]ShadowWalker内存伪装详细过程,附完整测试源码
发表于: 2014-3-1 11:28 27486

[原创]ShadowWalker内存伪装详细过程,附完整测试源码

2014-3-1 11:28
27486
#pragma code_seg(".target") 
#pragma optimize( "", off )
VOID target()
{
	int sum=0x77;
	if(sum==0)
	{
		_asm _emit(0xc3)//返回指令Retn
	}
	_asm
	{
		mov eax,0x88
			mov sum,eax

	}
	DbgPrint("sum=%x g_iTimes=%d g_iTimes1=%d g_iTimes2=%d g_iTimes3=%d\n",sum,g_iTimes,g_iTimes1,g_iTimes2,g_iTimes3);
}
#pragma optimize( "", on ) 
#pragma code_seg() 
//每十秒调用执行target
VOID OnTimer(
	IN PDEVICE_OBJECT DeviceObject,
	IN PVOID Context)
{
	if(g_iTimes%10==9)
	{
		target();
	}
	g_iTimes++;

}
//可以读取target的内存
NTSTATUS HelloDDKDispatchRoutin(IN PDEVICE_OBJECT pDevObj,
	IN PIRP pIrp) 
{
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
	UCHAR type = stack->MajorFunction;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	
	if(type==IRP_MJ_READ)
	{
		BYTE buf[5]={0};
		memcpy(buf,(PBYTE)g_pExecutePage+0x14,5);
		DbgPrint("buf %x %x %x %x %x\n",buf[0],buf[1],buf[2],buf[3],buf[4]);
	}
	return STATUS_SUCCESS;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 8
支持
分享
最新回复 (25)
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
2
兼容是个问题啊,还是支持一下
2014-3-1 11:35
0
雪    币: 124
活跃值: (469)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
抢了个沙发
2014-3-1 12:05
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大蛇丸无处不在啊。。
2014-3-1 12:13
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
我以为神马玩意!原来这个...
2014-3-1 12:21
0
雪    币: 188
活跃值: (616)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Nice thanks for share!
2014-3-1 15:31
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
谢谢分享,lz辛苦了
2014-3-1 15:34
0
雪    币: 72
活跃值: (74)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ztj
8
是啊,hook中断容易不稳定
2014-3-2 20:12
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
9
最关键的是只支持32平台,现在是64的世界了。
2014-3-2 20:23
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
怎么玩vt……求解……
话说360是咋玩的……
不过pg倒不是大问题……如果静态破解的话
2014-3-2 21:37
0
雪    币: 219
活跃值: (783)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
11
64位来了。。。。。。。。。。。。。
2014-3-2 21:40
0
雪    币: 72
活跃值: (74)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ztj
12
大神大神,
请问:如果我只需要在32位平台,能不能搞定Ring3的ShadowWalker啊???
我感觉是在切换进程的时候页表有问题的
2014-3-3 09:50
0
雪    币: 1829
活跃值: (4045)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
ShadowWalker 刷tlb不要想了,我也尝试过,根本无法实用
2014-3-3 10:09
0
雪    币: 1829
活跃值: (4045)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
楼主感兴趣可以去看看 影子页表
2014-3-3 10:12
0
雪    币: 326
活跃值: (56)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
值得研究一下。
2014-5-29 15:39
0
雪    币: 68
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
可以用来过SYS的CRC
2014-5-29 15:44
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
学习一下,lz还在吗,还没看你的代码,有2个问题
LoadDTLB: 这一段不太理解,如果要需要hook的是页面中间的几个字节,那先读了页面的前面的字节,数据tlb就有缓存了,那下次读到中间真正被修改的几个字节,不会发生缺页了吧,那还是读的被修改过的页面,不知道理解错了没,NetProc也是这段,有点不理解
第二个是为什么r3不行。amd可以吗,我只有amd的cpu。
2014-6-17 23:36
0
雪    币: 460
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
R3下是可以的,我试过,
会蓝只是你0e的hook处理还有问题,
不过我也想知道64位下这方法是否可行,有人研究过没?
2014-6-25 15:41
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
求r3方法。。。
2014-6-26 09:09
0
雪    币: 217
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
从原理上来说x64也应该支持,不过PatchGuard会检查IDT。。。另外,我测试了下ring3,用的是修改ITLB,保留DTLB,发现如果先执行再读取,中间无任何间隔,可以读到修改后的值。如果先读取再执行,则读取值是原始值,执行的是修改后的值。如果先执行,然后Sleep(1),读取的也是原始值。。。难道执行会同时刷新ITLB和DTLB?
2014-9-28 14:18
0
雪    币: 14
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
以前ring3搞过,不会蓝,可以过CRC神马的,但是大页面不知道怎么处理
2014-9-28 14:31
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
这个东西的关键点在pte的copyonwrite属性,我也卡在ring3读取这块上,做不下去,在ring3实在想不到好办法
2014-9-30 03:33
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
学习中 谢谢分享
2021-11-21 10:20
0
雪    币: 3322
活跃值: (3918)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
24
搞过ring0的,ring3的没成功,ring3 CR3切换太频繁
2021-11-21 18:08
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
以前ring3搞过,不会蓝,可以过CRC神马的,但是大页面不知道怎么处理
2022-7-2 01:02
0
游客
登录 | 注册 方可回帖
返回
//