首页
社区
课程
招聘
[原创]对64位下*P的学习(不用过PG)
发表于: 2015-3-29 16:48 53347

[原创]对64位下*P的学习(不用过PG)

2015-3-29 16:48
53347

前不久研究了一些32位下各种保护,收获颇多,但是在32位下由于内存限制所以,卡卡的感觉让人很不爽,于是研究了一下64为下的保护。

     测试游戏:JFZR  环境:win7 x64

     一:首先是双击调试,我之前发过一篇帖子,总结过双击调试的一些关键变量之类的东西,64位和32位基本想通,详细的可以看我之前的帖子,地址:http://bbs.pediy.com/showthread.php?t=196149
PS:过双击调试的时候要打一下PG的补丁,以为要替换那几个全局变量,还有就是Inline Hook IoAllocateMdl这个函数。这里再贴一下代理函数:

PMDL newIoAllocateMdl(
        __in_opt PVOID  VirtualAddress,
        __in ULONG  Length,
        __in BOOLEAN  SecondaryBuffer,
        __in BOOLEAN  ChargeQuota,
        __inout_opt PIRP  Irp  OPTIONAL)
{

        if (VirtualAddress == KdEnteredDebugger)
        {
                //DbgPrint("[KdEnteredDebugger] address: %p\n", KdEnteredDebugger);
                VirtualAddress = (PUCHAR)KdEnteredDebugger + 0x30;  
        }

        return oldIoAllocateMdl(VirtualAddress, Length, SecondaryBuffer, ChargeQuota, Irp);
}

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

上传的附件:
收藏
免费 4
支持
分享
最新回复 (98)
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
2
学习了,mark一下,火钳刘明
2015-3-29 16:56
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大牛技术资料可否分享下
2015-3-29 16:59
0
雪    币: 8
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
膜拜看雪的大神;菜鸟路过
2015-3-29 17:43
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
我看的TA那套教程
2015-3-29 17:58
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了,mark一下.
2015-3-29 18:21
0
雪    币: 104
活跃值: (162)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这个必须mark
2015-3-29 18:28
0
雪    币: 155
活跃值: (137)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了,谢谢分享
2015-3-29 18:59
0
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark谢谢分享
2015-3-29 19:05
0
雪    币: 5467
活跃值: (1435)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个要学习的。。
2015-3-29 19:09
0
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主好人,不过如果能把调试的步骤说得详细点就更好了。比如怎么知道(计算)出那个线程ID的
2015-3-29 19:24
0
雪    币: 60
活跃值: (449)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
12
学习了感谢
2015-3-29 19:35
0
雪    币: 35
活跃值: (642)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
求给传送门  
十分感觉
2015-3-29 19:36
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
是 Tesla.Angela 吗
2015-3-29 19:39
0
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
PsSetCreateProcessNotifyRoutine((PCREATE_PROCESS_NOTIFY_ROUTINE)NotifyAddr, TRUE);
这个是FALSE吧?
2015-3-29 19:45
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
16
[QUOTE=aLevel;1362081]PsSetCreateProcessNotifyRoutine((PCREATE_PROCESS_NOTIFY_ROUTINE)NotifyAddr, TRUE);
这个是FALSE吧?[/QUOTE]
true是remove 可以仔细看一下api
2015-3-29 20:01
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
17
那个线程你下kiuserexcrptiondispatcher访问断点可以找到,帖子上也说了:)
2015-3-29 20:04
0
雪    币: 163
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Mark
2015-3-29 20:39
0
雪    币: 318
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
X64 天生就是过保护的
那些猥琐的inlineHook , IDT hook 都是禁止的
多好的64位
2015-3-29 21:32
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
20
是啊,X64确实造福大众
2015-3-29 21:37
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
枫哥精华帖,必须顶!向枫哥学习!
2015-3-29 21:39
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
22
http://bbs.pediy.com/showthread.php?t=187348&highlight=64
2015-3-29 22:14
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
mark
好贴
2015-3-29 23:05
0
雪    币: 9941
活跃值: (2158)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
24
VOID InitKillThread()
{
        //get pspterminatethreadbypointer
        ULONG32 callcode = 0;
        ULONG64 AddressOfPspTTBP = 0, AddressOfPsTST = 0, i = 0;
        PETHREAD Thread = NULL;
        PEPROCESS tProcess = NULL;
        NTSTATUS status = 0;
        if (PspTerminateThreadByPointer == NULL)
        {
                AddressOfPsTST = (ULONG64)GetFunctionAddr(L"PsTerminateSystemThread");
                if (AddressOfPsTST == 0)
                        return STATUS_UNSUCCESSFUL;
                for (i = 1; i < 0xff; i++)
                {
                        if (MmIsAddressValid((PVOID)(AddressOfPsTST + i)) != FALSE)
                        {
                                if (*(BYTE *)(AddressOfPsTST + i) == 0x01 && *(BYTE *)(AddressOfPsTST + i + 1) == 0xe8) //目标地址-原始地址-5=机器码 ==> 目标地址=机器码+5+原始地址
                                {
                                        RtlMoveMemory(&callcode, (PVOID)(AddressOfPsTST + i + 2), 4);
                                        AddressOfPspTTBP = (ULONG64)callcode + 5 + AddressOfPsTST + i + 1;
                                }
                        }
                }
                PspTerminateThreadByPointer = (PSPTERMINATETHREADBYPOINTER)AddressOfPspTTBP;
                DbgPrint("PspTerminateThreadByPointer:%p\n", PspTerminateThreadByPointer);
        }
}

这能编译?什么编译器啊?
我读书少,不要骗我 !
2015-3-29 23:08
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
25
VS2013+WDK8.1~
2015-3-29 23:10
0
游客
登录 | 注册 方可回帖
返回
//