.data
  szMyDll        db "\lyshark.dll",0h       ; 要注入的DLL
  szDllKernel    db "Kernel32.dll",0h
  szLoadLibrary  db "LoadLibraryA",0h
  lpFileName     db "Tutorial-i386",0h      ; 指定要注入进程
  lpDllName      dd ?
.data?
  szMyDllFull    db MAX_PATH dup (?)
  lpLoadLibrary  dd ?
  dwProcessID    dd ?     
  dwThreadID     dd ?
  hProcess       dd ?
.code
  main PROC
; 准备工作:获取dll的全路径文件名、获取LoadLibrary函数地址等
    invoke GetCurrentDirectory,MAX_PATH,addr szMyDllFull
    invoke lstrcat,addr szMyDllFull,addr szMyDll
    invoke GetModuleHandle,addr szDllKernel
    invoke GetProcAddress,eax,offset szLoadLibrary
    mov lpLoadLibrary,eax
; 查找文件管理器窗口并获取进程ID,然后打开进程
    invoke FindWindow,NULL,addr lpFileName
    invoke GetWindowThreadProcessId,eax,offset dwProcessID
      mov dwThreadID,eax
      invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,dwProcessID
    mov hProcess,eax
; 在进程中分配空间并将DLL文件名拷贝过去,然后创建一个LoadLibrary线程
    invoke VirtualAllocEx,hProcess,NULL,MAX_PATH,MEM_COMMIT,PAGE_READWRITE
    mov lpDllName,eax
    invoke WriteProcessMemory,hProcess,eax,offset szMyDllFull,MAX_PATH,NULL
    invoke CreateRemoteThread,hProcess,NULL,0,lpLoadLibrary,lpDllName,0,NULL
    ret
  main endp
end main
版权声明:本博客文章与代码均为学习时整理的笔记,文章 [均为原创] 作品,转载请 [添加出处] ,您添加出处是我创作的动力!









