不依靠任何外部檔案實現遠程進程(win32 asm)

來源:互聯網
上載者:User

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; RemoteThread.asm
; 向 Explorer.exe 進程中嵌入一段遠程執行的代碼
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令進行編譯和連結:
; ml /c /coff RemoteThread.asm
; rc RemoteThread.rc
; Link /subsystem:windows RemoteThread.obj RemoteThread.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat, stdcall
  option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 檔案定義
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
include  Macro.inc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 資料區段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?
lpLoadLibrary dd ?
lpGetProcAddress dd ?
lpGetModuleHandle dd ?
dwProcessID dd ?
dwThreadID dd ?
hProcess dd ?
lpRemoteCode dd ?

  .const
szErrOpen db '無法開啟遠程線程!',0
szDesktopClass db 'Progman',0
szDesktopWindow db 'Program Manager',0
szDllKernel db 'Kernel32.dll',0
szLoadLibrary db 'LoadLibraryA',0
szGetProcAddress db 'GetProcAddress',0
szGetModuleHandle db 'GetModuleHandleA',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include  RemoteCode.asm

start:
  invoke GetModuleHandle,addr szDllKernel
  mov ebx,eax
  invoke GetProcAddress,ebx,offset szLoadLibrary
  mov lpLoadLibrary,eax
  invoke GetProcAddress,ebx,offset szGetProcAddress
  mov lpGetProcAddress,eax
  invoke GetProcAddress,ebx,offset szGetModuleHandle
  mov lpGetModuleHandle,eax
;********************************************************************
; 尋找檔案管理工具視窗並擷取進程ID,然後開啟進程
;********************************************************************
  invoke FindWindow,addr szDesktopClass,addr szDesktopWindow
  invoke GetWindowThreadProcessId,eax,offset dwProcessID
  mov dwThreadID,eax
  invoke OpenProcess,PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or /
   PROCESS_VM_WRITE,FALSE,dwProcessID
  .if eax
   mov hProcess,eax
;********************************************************************
; 在進程中分配空間並將執行代碼拷貝過去,然後建立一個遠程線程
;********************************************************************
   invoke VirtualAllocEx,hProcess,NULL,REMOTE_CODE_LENGTH,MEM_COMMIT,PAGE_EXECUTE_READWRITE
   .if eax
    mov lpRemoteCode,eax
    invoke WriteProcessMemory,hProcess,lpRemoteCode,/
     offset REMOTE_CODE_START,REMOTE_CODE_LENGTH,NULL
    invoke WriteProcessMemory,hProcess,lpRemoteCode,/
     offset lpLoadLibrary,sizeof dword * 3,NULL
    mov eax,lpRemoteCode
    add eax,offset _RemoteThread - offset REMOTE_CODE_START
    invoke CreateRemoteThread,hProcess,NULL,0,eax,0,0,NULL
    invoke CloseHandle,eax
   .endif
   invoke CloseHandle,hProcess
  .else
   invoke MessageBox,NULL,addr szErrOpen,NULL,MB_OK or MB_ICONWARNING
  .endif
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.