吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2402|回复: 3
上一主题 下一主题
收起左侧

[求助] Win10 X86_64下EAT Hook以及其他堆积问题求助

[复制链接]
跳转到指定楼层
楼主
Kiopler 发表于 2019-7-6 15:04 回帖奖励
    大家好,我是新人, 我有几个问题。
1. EAT HOOK在32位下以及运行成功,但不知为什么64位下一直失败.... 弄了好久心态都崩了... 拜托各位大神帮我调试一下,谢谢了!
[C++] 纯文本查看 复制代码
#include <windows.h>
#include <cstdio>
#include <tchar.h>

BOOL EATHook(LPCTSTR szDllName, LPCTSTR szFunName, LPVOID NewFun) {
        DWORD addr = 0;
        DWORD index = 0;
        DWORD dwProtect;
        SIZE_T dwWritten = 0;
        HMODULE hMod = LoadLibrary(szDllName);
        if (NULL == hMod)
                return(FALSE);
        PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hMod;
        PIMAGE_OPTIONAL_HEADER pOptHeader = (PIMAGE_OPTIONAL_HEADER)((PBYTE)hMod + pDosHeader->e_lfanew + 24);
        PIMAGE_EXPORT_DIRECTORY pExpDes = (PIMAGE_EXPORT_DIRECTORY)((PBYTE)hMod + pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
        PULONG pAddressOfFunctions = (PULONG)((PBYTE)hMod + pExpDes->AddressOfFunctions);
        PULONG pAddressOfNames = (PULONG)((PBYTE)hMod + pExpDes->AddressOfNames);
        PUSHORT pAddressOfNameOrdinals = (PUSHORT)((PBYTE)hMod + pExpDes->AddressOfNameOrdinals);

        for (int i = 0; i < pExpDes->NumberOfNames; ++i) {
                index = pAddressOfNameOrdinals[i];
                LPCTSTR pFuncName = (LPTSTR)((PBYTE)hMod + pAddressOfNames[i]);
                if (!_tcscmp((LPCTSTR)pFuncName, szFunName)) {
                        addr = pAddressOfFunctions[index];
                        break;
                }
        }
        VirtualProtect(&pAddressOfFunctions[index], 0x1000, PAGE_READWRITE, &dwProtect);
        pAddressOfFunctions[index] = (DWORD)NewFun - (DWORD)hMod;
        WriteProcessMemory(GetCurrentProcess(), &pAddressOfFunctions[index], (LPCVOID)((LPDWORD)NewFun - (LPDWORD)hMod), 8, &dwWritten);
        VirtualProtect(&pAddressOfFunctions[index], 0x1000, dwProtect, &dwProtect);

        return(TRUE);
}

int WINAPI MyMessageBox(
        HWND    hWnd,
        LPCTSTR lpText,
        LPCTSTR lpCaption,
        UINT    uType
) {
        _tprintf("Hello, world!\n");

        return(0);
}

typedef int (WINAPI* LPFNMESSAGEBOX)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

int _tmain() {
        EATHook("USER32.dll", "MessageBoxA", MyMessageBox);
        HMODULE hDll = GetModuleHandle("USER32.dll");
        LPFNMESSAGEBOX lpMessageBox = (LPFNMESSAGEBOX)GetProcAddress(hDll, "MessageBoxA");
        if (NULL == lpMessageBox)
                return(-1);
        lpMessageBox(NULL, "Hello, EAT Hook", "Info", MB_OK);

        return(0);
}


2. 我想问一下,如果我在64位下远程线程注入,希望突破SESSION0隔离,能够注入到比如explorer.exe等系统服务进程里面该怎么办? 我用ZwCreateThreadEx注入发现要么注入成功但没反应,要么就是注入成功进程崩溃(explorer.exe的时候),要么就直接失败。(已获取Debug权限)。该怎么做呢,这到底是什么问题?

3. 远程线程注入时而成功时而失败这正常吗??

4. Windows下WDK编程有什么好的书推荐吗? 我在看<Windows驱动编程详解>,虽然WDM式驱动还用,但很老的DDK开发包现在都不用了。有什么更好一点的入门书籍吗? 谢谢。

谢谢各位的查看和帮助!!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
无瑕黑心肠 发表于 2019-7-6 22:07
对于你的问题你可以参考我的回复:
1、32位进程地址范围是0x00000000 ~ 0xFFFFFFFF,而64位进程地址范围是0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF,所以你使用DWORD保存地址并不可靠(因为系统模块都是在高位地址的,你hook的时候地址被截断成DWORD类型,这必然会导致hook出错)。
2、远程线程注入是完全可行的,除非目标进程有防护或是检测。对于时而失败时而正常,第一条已经做出答复。
3、关于Windows驱动开发的中文书籍大概有那么几本(原文自encoderlee):
《Windows驱动开发技术详解》(强烈推荐先看这本)
《WindowsWDM设备驱动程序开发指南》(比较老了,2000年出版的,以win98、win2000为目标系统)
《Windows设备驱动程序WDF开发》(为数不多讲WDF的)
《Windows 7设备驱动程序开发》(为数不多讲WDF的,且比较新,这本书的英文版是2010年出版的,中文译版是2012年出版的)
《竹林蹊径:深入浅出windows驱动开发》
《寒江独钓:Windows内核安全编程》
《天书夜读:从汇编语言到Windows内核编程》

《Windows内核安全与驱动开发》(是《天书夜读》《寒江独钓》的合订本以及升级版)
后面的这四本其实不太适合作为入门书籍,而适合作为进阶书籍,对一些基础的概念和原理的讲解没有《Windows驱动开发技术详解》那么多。
3#
 楼主| Kiopler 发表于 2019-7-7 07:51 |楼主
无瑕黑心肠 发表于 2019-7-6 22:07
对于你的问题你可以参考我的回复:
1、32位进程地址范围是0x00000000 ~ 0xFFFFFFFF,而64位进程地址范围是 ...

谢谢大神!!!!我会去试一下
4#
 楼主| Kiopler 发表于 2019-7-7 07:53 |楼主
无瑕黑心肠 发表于 2019-7-6 22:07
对于你的问题你可以参考我的回复:
1、32位进程地址范围是0x00000000 ~ 0xFFFFFFFF,而64位进程地址范围是 ...

谢谢大神!! 我会去尝试下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 10:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表