首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法获取内核级进程的基地址

无法获取内核级进程的基地址
EN

Stack Overflow用户
提问于 2021-06-02 17:57:20
回答 1查看 46关注 0票数 2

我正在尝试将我的Python程序附加到这个名为"ntoskrnl.exe"的内核级exe上,并写入它的内存。

然而,我无法通过pymem或读写内存将我的程序附加到"ntoskrnl.exe"上,我想知道是否有人可以帮助我将我的程序附加到"ntoskrnl.exe"上,并获得它的基地址并写入它的内存。

到目前为止,我已经尝试过pymem:

代码语言:javascript
运行
复制
pm = pymem.Pymem("ntoskrnl.exe")
base = pm.base_address

和读写内存:

代码语言:javascript
运行
复制
rwm = ReadWriteMemory()
process = rwm.get_process_by_name("ntoskrnl.exe")

这两个都会给我process not found错误!任何关于如何将我的程序附加到内核级进程并获得它的基地址的帮助都将非常感谢!谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-06-12 22:32:15

我也一直在尝试这个。到目前为止,我能找到的只有以下内容:

代码语言:javascript
运行
复制
def get_base_address(driver=None):
    """ Returns base address of kernel modules """

    if platform.architecture()[0] == "64bit":
        lpImageBase = (c_ulonglong * 1024)()
        lpcbNeeded = c_longlong()
        psapi.GetDeviceDriverBaseNameA.argtypes = [c_longlong, POINTER(c_char), c_uint32]
    else:
        lpImageBase = (c_ulong * 1024)()
        lpcbNeeded = c_long()
    driver_name_size = c_long()
    driver_name_size.value = 48
    psapi.EnumDeviceDrivers(byref(lpImageBase), c_int(1024), byref(lpcbNeeded))

    for base_addr in lpImageBase:
        driver_name = c_char_p("\x00" * driver_name_size.value)
        if base_addr:
            psapi.GetDeviceDriverBaseNameA(base_addr, driver_name, driver_name_size.value)
            if driver == None and driver_name.value.lower().find("krnl") != -1:
                print("[+] Retrieving kernel info...")
                print("[+] Kernel version: {:s}".format(driver_name.value))
                print("[+] Kernel base address: {:#x}".format(base_addr))

                return (base_addr, driver_name.value)
            elif driver_name.value.lower() == driver:
                print("[+] Retrieving {:s} info...".format(driver_name))
                print("[+] {:s} base address: {:#x}".format(driver_name, base_addr))
                
                return (base_addr, driver_name.value)
    return None

get_base_address("ntoskrnl.exe")

我只是很高兴我不是一个人在野外追逐XD!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67802876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档