QIPTR 2019-05-02 22:36 采纳率: 33.3%
浏览 597
已结题

急求各位大神!OpenFileMapping错误,错误码显示句柄无效!

各位大大好,小弟这两天在写shellcode注入,测试程序是A程序创建了一个名为"SHINE"的文件映射对象然后B程序(vsasm文件模拟的shellcode)尝试打开这个对象并在其中写入B的命令行参数

我先用的VS嵌入ASM文件调试汇编版的shellcode可是在shellcode里调用OpenFileMappingA时总是失败,用汇编
获取了DOS错误码总是0x6(句柄无效),同时获取到NT错误码是0xC0000024STATUS_OBJECT_TYPE_MISMATCH(对象类型不匹配)。
于是小弟就用win2k源码查了下这个函数的调用过程,发现它会调用ObReferenceObjectByHandle函数,这里面好像有设置NTstatus为STATUS_OBJECT_TYPE_MISMATCH的过程,也不知道是不是这里出的错,一头雾水,还望各位前辈帮忙解决下!小弟非常感激!!!!
以下是程序源码:A程序创建了一个名为"SHINE"的文件映射对象然后B程序(模拟的shellcode)尝试打开这个对象并在其中写入B的命令行参数。

A程序:

char v2[] = "SHINE";

HANDLE      MappingHandle = NULL;
ULONG_PTR   VirtualAddress = NULL;
HANDLE      v1 = INVALID_HANDLE_VALUE;

v1 = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 0x1000, v2);

B程序:

VS内嵌的ASM文件,
OpenFileMappingA函数地址每次启动都是一样的所以写死了

.DATA

INP DB 'SHINE\0'

.CODE

Sub_1 PROC

            ;获取命令行参数保存到[rbp+8h]中
            mov         rax,qword ptr gs:[60h]
mov         rax,qword ptr [rax+20h]
mov         rax,qword ptr [rax+78h]
mov         qword ptr [rbp+8h],rax
            ;打开名为"SHINE"的文件映射对象,并获得内存首地址

            lea   r8,INP
xor         rdx,rdx
mov         rcx,6
mov  rax,00007ffb4ed0f5d0h      ;openfilemappingA首地址
call rax
mov         rax,qword ptr gs:[30h];获得TEB地址
xor         rbx,rbx
mov         ebx,dword ptr [rax+68h];偏移0x68处获得LastErrorValue
mov         ecx,dword ptr [rax+1250h];偏移0x1250处获得LastStatusValue
ret

Sub_1 ENDP

END

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)