示例#1
0
def add_submenu_item(h_menu, name, w_id=None):
    h_submenu = user32.CreatePopupMenu()

    mi_info = MENUITEMINFOW()
    mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
    mi_info.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_ID | MIIM_BITMAP
    mi_info.fState = MFS_ENABLED
    mi_info.hSubMenu = h_submenu
    mi_info.wID = random.randint(0x10, 0xff) if w_id is None else w_id
    mi_info.dwTypeData = name
    mi_info.hbmpItem = HBMMENU_SYSTEM  # (required to set nPosition to 1 in trigger)

    item = UNICODE_STRING.from_string(name)

    result = error_on_null(
        syscall.NtUserThunkedMenuItemInfo(
            h_menu,  # HMENU hMenu
            0,  # UINT  nPosition
            False,  # BOOL  fByPosition
            True,  # BOOL  fInsert
            ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
            ctypes.byref(item)  # PUNICODE_STRING pstrItem
        ))
    print("NtUserThunkedMenuItemInfo submenu result: 0x{0:08x}".format(result))
    return h_submenu
示例#2
0
def trigger(h_menu, name, w_id, n_position, f_by_position):
	mi_info = MENUITEMINFOW()
	mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
	mi_info.fMask = MIIM_STRING | MIIM_ID
	mi_info.fType = MFT_STRING
	mi_info.fState = MFS_ENABLED
	mi_info.wID = w_id

	item = UNICODE_STRING.from_string(name)

	result = error_on_null(syscall.NtUserThunkedMenuItemInfo(
		h_menu,                 # HMENU hMenu
		n_position,             # UINT  nPosition
		f_by_position,          # BOOL  fByPosition
		True,                   # BOOL  fInsert
		ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
		ctypes.byref(item)      # PUNICODE_STRING pstrItem
	))
	return result
示例#3
0
def add_menu_item(h_menu, name, w_id=None):
	mi_info = MENUITEMINFOW()
	mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
	mi_info.fMask = MIIM_STRING | MIIM_ID
	mi_info.fType = MFT_STRING
	mi_info.fState = MFS_ENABLED
	mi_info.wID = random.randint(0x1000, 0xffff) if w_id is None else w_id

	item = UNICODE_STRING.from_string(name)

	result = error_on_null(syscall.NtUserThunkedMenuItemInfo(
		h_menu,                 # HMENU hMenu
		-1,                     # UINT  nPosition
		True,                   # BOOL  fByPosition
		True,                   # BOOL  fInsert
		ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
		ctypes.byref(item)      # PUNICODE_STRING pstrItem
	))
	print("    mi_info->wID = 0x{0:04x}".format(mi_info.wID))
	return result
示例#4
0
def trigger(h_menu, name, w_id, n_position, f_by_position):
    mi_info = MENUITEMINFOW()
    mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
    mi_info.fMask = MIIM_STRING | MIIM_ID
    mi_info.fType = MFT_STRING
    mi_info.fState = MFS_ENABLED
    mi_info.wID = w_id

    item = UNICODE_STRING.from_string(name)

    result = error_on_null(
        syscall.NtUserThunkedMenuItemInfo(
            h_menu,  # HMENU hMenu
            n_position,  # UINT  nPosition
            f_by_position,  # BOOL  fByPosition
            True,  # BOOL  fInsert
            ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
            ctypes.byref(item)  # PUNICODE_STRING pstrItem
        ))
    return result
示例#5
0
def add_menu_item(h_menu, name, w_id=None):
    mi_info = MENUITEMINFOW()
    mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
    mi_info.fMask = MIIM_STRING | MIIM_ID
    mi_info.fType = MFT_STRING
    mi_info.fState = MFS_ENABLED
    mi_info.wID = random.randint(0x1000, 0xffff) if w_id is None else w_id

    item = UNICODE_STRING.from_string(name)

    result = error_on_null(
        syscall.NtUserThunkedMenuItemInfo(
            h_menu,  # HMENU hMenu
            -1,  # UINT  nPosition
            True,  # BOOL  fByPosition
            True,  # BOOL  fInsert
            ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
            ctypes.byref(item)  # PUNICODE_STRING pstrItem
        ))
    print("    mi_info->wID = 0x{0:04x}".format(mi_info.wID))
    return result
示例#6
0
def add_submenu_item(h_menu, name, w_id=None):
	h_submenu = user32.CreatePopupMenu()

	mi_info = MENUITEMINFOW()
	mi_info.cbSize = ctypes.sizeof(MENUITEMINFOW)
	mi_info.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_ID | MIIM_BITMAP
	mi_info.fState = MFS_ENABLED
	mi_info.hSubMenu = h_submenu
	mi_info.wID = random.randint(0x10, 0xff) if w_id is None else w_id
	mi_info.dwTypeData = name
	mi_info.hbmpItem = HBMMENU_SYSTEM  # (required to set nPosition to 1 in trigger)

	item = UNICODE_STRING.from_string(name)

	result = error_on_null(syscall.NtUserThunkedMenuItemInfo(
		h_menu,                 # HMENU hMenu
		0,                      # UINT  nPosition
		False,                  # BOOL  fByPosition
		True,                   # BOOL  fInsert
		ctypes.byref(mi_info),  # LPMENUITEMINFOW lpmii
		ctypes.byref(item)      # PUNICODE_STRING pstrItem
	))
	print("NtUserThunkedMenuItemInfo submenu result: 0x{0:08x}".format(result))
	return h_submenu