首页
社区
课程
招聘
[讨论]X64内核APC注入莫名其妙的事
发表于: 2019-8-11 15:44 4057

[讨论]X64内核APC注入莫名其妙的事

2019-8-11 15:44
4057
这几天研究着x64内核APC注入,网上有代码,但都是X86系统的。
x64的没有,有的要么是注入没有反应,要么崩溃的。
论坛里面的那代码我也下载了,x64不行(有人成功,但我的不行,同样的代码难道是我系统有问题?偏移我也矫正了,提高权限也不行)
所以我干脆自己从新写了一套x64内核APC注入代码,不过程序崩溃一直都是0xC0000005。
一定有人说,要地址 not address << 2 啊,那是x64注入32程序的,我直接注入x64一样崩溃,亲自逆向了NtQueueAPCThreadEx,照着做一样崩溃,我了个去,我都想骂人了。
当然,我注入的是ShellCode,注意到崩溃的都是ShellCode的代码段。

崩溃的Shellcode:
BYTE APCShellMxbCode[] = {
0x51, 0x52, 0x41, 0x50, 0x41, 0x51, //push r8 ,push r9 ,push rdx push rcx
0x45, 0x33, 0xC9,
0x45, 0x33, 0xC0,
0x33, 0xD2,
0x33, 0xC9,
0x48, 0xC7, 0xC0, 0xB8, 0x12, 0x54, 0X77, //这里是mov rax,xxxxxx (MessageBoxA的地址)
        0XFF, 0XD0, //call rax
0x41, 0x59, 0x41, 0x58, 0x5A, 0x59,//pop rcx,pop rdx pop r9 ,pop r8
        0xC3};

成功的 Shellcode:
BYTE APCShellMxbCode[] = {
0x51, 0x52, 0x41, 0x50, 0x41, 0x51, 0x50,  // push rax push r8 ,push r9 ,push rdx push rcx
0x45, 0x33, 0xC9,
0x45, 0x33, 0xC0,
0x33, 0xD2,
0x33, 0xC9,
0x48, 0xC7, 0xC0, 0xB8, 0x12, 0x54, 0X77, //这里是mov rax,xxxxxx (MessageBoxA的地址)
        0XFF, 0XD0,//call rax
0x58, 0x41, 0x59, 0x41, 0x58, 0x5A, 0x59, //pop rax, pop rcx,pop rdx pop r9 ,pop r8
        0xC3};

C语言代码: MessageBox(null,null,null,mb_ok)

哦,原来你使用了什么寄存器的值,就要保存起来,不然会崩溃,就连 rax 都不能放过。
难道要求怎么严格?
但又说回来,既然APC注入怎么严格,但为什么x86就不要怎么严格?
;

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

最后于 2019-8-11 15:46 被cheating编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 9217
活跃值: (1886)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
微软文档:


2019-8-11 17:23
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
2019-8-12 07:25
0
雪    币: 914
活跃值: (2473)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
4
大手子开始玩注入了?
2019-8-12 08:36
0
游客
登录 | 注册 方可回帖
返回
//