我正在尝试将我的Python程序附加到这个名为"ntoskrnl.exe"的内核级exe上,并写入它的内存。
然而,我无法通过pymem或读写内存将我的程序附加到"ntoskrnl.exe"上,我想知道是否有人可以帮助我将我的程序附加到"ntoskrnl.exe"上,并获得它的基地址并写入它的内存。
到目前为止,我已经尝试过pymem:
pm = pymem.Pymem("ntoskrnl.exe")
base = pm.base_address和读写内存:
rwm = ReadWriteMemory()
process = rwm.get_process_by_name("ntoskrnl.exe")这两个都会给我process not found错误!任何关于如何将我的程序附加到内核级进程并获得它的基地址的帮助都将非常感谢!谢谢
发布于 2021-06-12 22:32:15
我也一直在尝试这个。到目前为止,我能找到的只有以下内容:
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!
https://stackoverflow.com/questions/67802876
复制相似问题