Beispiel #1
0
def python_dll_path():
    dllpath_size = 1024
    dllpath = ctypes.create_unicode_buffer(dllpath_size)
    dllpath_len = ctypes.windll.kernel32.GetModuleFileNameW(HMODULE(sys.dllhandle), dllpath, dllpath_size)
    if not dllpath_len:
        return ""
    return dllpath[:dllpath_len]
Beispiel #2
0
def GetBaseAddress(hProcess, ModName):
    baseaddr = 0
    imagesize = 0
    BIG_HANDLE_ARRAY = HMODULE * 1024
    arrHandle = BIG_HANDLE_ARRAY()
    needed = DWORD()
    res = windll.psapi.EnumProcessModulesEx(hProcess.__int__(),
                                            addressof(arrHandle),
                                            sizeof(arrHandle),
                                            addressof(needed), 0x03)
    if res:
        numofmod = needed.value / sizeof(HMODULE)
        for i in range(numofmod):
            hMod = HMODULE(arrHandle[i])
            TmpModName = create_string_buffer(1024)
            windll.psapi.GetModuleBaseNameA(hProcess.__int__(), hMod,
                                            TmpModName, len(TmpModName))
            if ModName.lower() == TmpModName.value.lower():
                ModInfo = MODULEINFO()
                windll.psapi.GetModuleInformation(hProcess.__int__(), hMod,
                                                  addressof(ModInfo),
                                                  sizeof(ModInfo))
                baseaddr = ModInfo.lpBaseOfDll
                imagesize = ModInfo.SizeOfImage
                #print "Module name:%s    Base address:%x" % (ModName.value,ModInfo.lpBaseOfDll)
            kernel32.CloseHandle(hMod)
    return (baseaddr, imagesize)
Beispiel #3
0
def IsSysWOW64(hProcess):
    syswow64 = False
    BIG_HANDLE_ARRAY = HMODULE * 1024
    arrHandle = BIG_HANDLE_ARRAY()
    needed = DWORD()
    res = windll.psapi.EnumProcessModulesEx(hProcess.__int__(),
                                            addressof(arrHandle),
                                            sizeof(arrHandle),
                                            addressof(needed), 0x03)
    if res:
        numofmod = needed.value / sizeof(HMODULE)
        for i in range(numofmod):
            hMod = HMODULE(arrHandle[i])
            TmpModName = create_string_buffer(1024)
            windll.psapi.GetModuleBaseNameA(hProcess.__int__(), hMod,
                                            TmpModName, len(TmpModName))
            if "wow64.dll" == TmpModName.value.lower():
                syswow64 = True
            kernel32.CloseHandle(hMod)
    return syswow64
Beispiel #4
0
def get_notifyicon_wnd_class():
    global _notifyicon_wnd_class
    if _notifyicon_wnd_class is None:
        hmodule = HMODULE(0)
        assert GetModuleHandleExA(0, None, byref(hmodule))
        log("GetModuleHandleExA(..)=%#x", int(hmodule.value))

        NIwc = WNDCLASSEX()
        NIwc.cbSize = sizeof(WNDCLASSEX)
        NIwc.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
        NIwc.lpfnWndProc = WNDPROC(NotifyIconWndProc)
        NIwc.hInstance = hmodule
        NIwc.hBrush = GetStockObject(win32con.WHITE_BRUSH)
        NIwc.lpszClassName = "win32NotifyIcon"

        NIclassAtom = RegisterClassExA(byref(NIwc))
        log("RegisterClassExA(%s)=%i", NIwc.lpszClassName, NIclassAtom)
        if NIclassAtom == 0:
            raise ctypes.WinError(ctypes.get_last_error())
        NIwc.NIclassAtom = NIclassAtom
        _notifyicon_wnd_class = NIwc
    return _notifyicon_wnd_class
Beispiel #5
0
def EnumModules(hProcess):
    BIG_HANDLE_ARRAY = HMODULE * 1024
    #BIG_HANDLE_ARRAY = DWORD * 1024
    arrHandle = BIG_HANDLE_ARRAY()
    needed = DWORD()
    res = windll.psapi.EnumProcessModulesEx(hProcess.__int__(),
                                            addressof(arrHandle),
                                            sizeof(arrHandle),
                                            addressof(needed), 0x03)
    if res:
        numofmod = needed.value / sizeof(HMODULE)
        for i in range(numofmod):
            hMod = HMODULE(arrHandle[i])
            ModName = create_string_buffer(1024)
            windll.psapi.GetModuleBaseNameA(hProcess.__int__(), hMod, ModName,
                                            len(ModName))
            ModInfo = MODULEINFO()
            windll.psapi.GetModuleInformation(hProcess.__int__(), hMod,
                                              addressof(ModInfo),
                                              sizeof(ModInfo))
            print "Module name:%s    Base address:%x" % (ModName.value,
                                                         ModInfo.lpBaseOfDll)
            windll.kernel32.CloseHandle(hMod)
Beispiel #6
0
def GetModuleHandleW(lpModuleName):
    return HMODULE(_GetModuleHandleW(lpModuleName))
Beispiel #7
0
        user32 = ['GetGuiResources'])

N = 500
dword_array = DWORD * N
aProcesses = dword_array()
cBytes = DWORD()

# constants for OpenProcess
PROCESS_QUERY_INFORMATION = 0x400
PROCESS_VM_READ           = 0x10
PROCESS_SET_QUOTA         = 0x0100

OPEN_PROCESS_FLAGS = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ

szProcessName = create_unicode_buffer(MAX_PATH)
hMod = HMODULE()
cBytesNeeded = DWORD()

class PROCESS_MEMORY_COUNTERS(Structure):
    _fields_ = [
        ("cb", DWORD),
        ("PageFaultCount", DWORD),
        ("PeakWorkingSetSize", SIZE_T),
        ("WorkingSetSize", SIZE_T),
        ("QuotaPeakPagedPoolUsage", SIZE_T),
        ("QuotaPagedPoolUsage", SIZE_T),
        ("QuotaPeakNonPagedPoolUsage", SIZE_T),
        ("QuotaNonPagedPoolUsage", SIZE_T),
        ("PagefileUsage", SIZE_T),
        ("PeakPagefileUsage", SIZE_T)
      ]