首页
社区
课程
招聘
[求助]Win10-64 汇编调用LoadLibraryExA异常(Win7-64正常)
发表于: 2016-3-15 14:59 5563

[求助]Win10-64 汇编调用LoadLibraryExA异常(Win7-64正常)

2016-3-15 14:59
5563
想修改MessageBeep的的内存 实现加载DLL, 在Win7-64位下运行正常, 但是拿到Win10-64位上运行时, 在LoadLibraryExA()内部访问越界, 请高手指点原因.

bool CTestInjectDlg::BeepToLoad()
{
        char tLoad[] = {
        0x40, 0x57,                                                /*        0-2                push rdi                                                        */
        0x45, 0x33, 0xc0,                                        /*        2-3                xor r8d, r8d                                                */
        0x33, 0xd2,                                                /*        5-2                xor edx, edx                                                */
        0x48, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*7-10        lea rcx, qwrod ptr ["AAA32.dll"]*/
        0x48, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*17-10 mov rax, [LoadLibraryExA]        */
        0xff, 0xd0,                                                /*        27-2        call rax,                                                        */
        0x33, 0xC0,                                                /*        29-2        xor eax, eax                                                */
        0x5f,                                                                /*        30-1        pop rdi                                                                */
        0xc3                                                                /*        31-1        ret                                                                        */
        };

        *(__int64*)(tLoad+9)                = (__int64)DLL_NAME;
        *(__int64*)(tLoad+19)                = (__int64)LoadLibraryExA;

        HANDLE tProc = GetCurrentProcess();
        SIZE_T tLen = 0;

        bool tRet = WriteProcessMemory(tProc, (LPVOID)MessageBeep, tLoad, 32, &tLen);
        if(false == tRet)
                MessageBox("WriteProcessMemory FAIL", 0, 0);
        else
                MessageBox("WriteProcessMemory SUCC", 0, 0);

        return tRet;
}
void CTestInjectDlg::OnBnClickedButton1()
{
        // TODO: 在此添加控件通知处理程序代码
        m_Addr_MessageBeep = (FUNC_MessageBeep)MessageBeep;

        BeepToLoad();
        //MessageBeep(tRet);
}
void CTestInjectDlg::OnBnClickedButton2()
{
        // TODO: 在此添加控件通知处理程序代码
        m_Addr_MessageBeep(0);
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 14889
活跃值: (4683)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
确认MessageBeep原来的代码能写的下你的tLoad。
貌似Hook掉处理更好些。
2016-3-15 16:29
0
雪    币: 163
活跃值: (103)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
char ShellCode[300]=                "\x40\x55\x48\x8b\xec\x48\x83\xec\x30\x33\xc0\x48\x89\x45\xf1\x88\x45\xf9\xc7\x45"
                "\xf6\x64\x6c\x6c\x00\xc7\x45\xf2\x41\x33\x32\x2e\x66\xc7\x45\xf0\x41\x41\xe8\x11"
                "\x00\x00\x00\x48\x8d\x4d\xf0\xff\xd0\x33\xc0\x48\x83\xc4\x30\x5d\xc3\xcc\xcc\xcc"
                "\x48\x89\x5c\x24\x08\x48\x89\x74\x24\x10\x48\x89\x7c\x24\x18\x65\x48\x8b\x04\x25"
                "\x60\x00\x00\x00\x48\x8b\x48\x18\x48\x8b\x71\x20\x4c\x8b\xde\x49\x8d\x43\xf0\x4d"
                "\x8b\x1b\x4c\x8b\x48\x30\x4d\x85\xc9\x0f\x84\x81\x00\x00\x00\x49\x63\x41\x3c\x42"
                "\x8b\x8c\x08\x88\x00\x00\x00\x85\xc9\x74\x71\x4d\x8d\x14\x09\x41\x8b\x4a\x0c\x49"
                "\x03\xc9\x45\x33\xc0\xeb\x14\x41\xc1\xc8\x0d\x0f\xbe\xd0\x3c\x61\x7c\x03\x83\xea"
                "\x20\x44\x03\xc2\x48\xff\xc1\x8a\x01\x84\xc0\x75\xe6\x41\x8b\x4a\x20\x33\xdb\x49"
                "\x03\xc9\x41\x39\x5a\x18\x76\x38\x8b\x39\x49\x03\xf9\x33\xd2\xeb\x12\xc1\xca\x0d"
                "\x3c\x61\x0f\xbe\xc0\x7c\x03\x83\xe8\x20\x03\xd0\x48\xff\xc7\x8a\x07\x84\xc0\x75"
                "\xe8\x42\x8d\x04\x02\x3d\x8d\x10\xb7\xf8\x74\x27\xff\xc3\x48\x83\xc1\x04\x41\x3b"
                "\x5a\x18\x72\xc8\x4c\x3b\xde\x0f\x85\x62\xff\xff\xff\x33\xc0\x48\x8b\x5c\x24\x08"
                "\x48\x8b\x74\x24\x10\x48\x8b\x7c\x24\x18\xc3\x41\x8b\x4a\x24\x49\x03\xc9\x44\x0f"
                "\xb7\x04\x59\x41\x8b\x4a\x1c\x49\x03\xc9\x42\x8b\x04\x81\x49\x03\xc1\xeb\xd4";
2016-3-22 19:13
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
请问win10下驱动注入DLL(LdrLoadDLL)这个后来解决了吗? 有解决方案可以分享一下? QQ:2519605146
2019-10-29 11:48
0
雪    币: 114
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享,进来学习了
2019-11-1 11:15
0
游客
登录 | 注册 方可回帖
返回
//