⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 查找进程.asm

📁 对于写一些感染系统文件的病毒或木马时,那个"系统文件保护"好象满让人讨厌的,下面给大家一个关闭系统文件保护汇编例子,希望对和我一样初学win32汇编的新手有点帮助!
💻 ASM
字号:
;根据程序名,查找进程id
;冰狐浪子作品代码节选
;include  kernel32.inc
;includelib  kernel32.lib
;  例:
;  namePr  db  "EXPLORER.EXE",0
;  ............
;  invoke  _findProcess,offset namePr
;  .if eax
;  找到
;  .else
;  没找到
;  .endif


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;清零
_ZeroMemory  proc  _lpDest,_dwSize
    
    push  edi
    cld
;push  _lpDest
    mov  edi,_lpDest
    mov  ecx,_dwSize
    xor  eax,eax

    rep  stosb
;pop  eax
    pop  edi
    ret

_ZeroMemory  endp

;计算字符串长度(带尾部的0)
_lstrlen  proc  _lpString
    push  edi
    cld
    mov  edi,_lpString
    mov  ecx,-1
    xor  al,al
    repnz  scasb
    mov  eax,edi
    sub  eax,_lpString
    pop  edi
    ret
_lstrlen  endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;;查找进程id  参数:@ProcessName指向进程名的大写字符串地址
;;eax=返回的id(eax=0表示没找到)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_findProcess  proc  @ProcessName
    local  @StringLength    ;@ProcessName指向的字符串长度
    ;用于获取进程
    local  @hSnapShot
    local  @stProcess:PROCESSENTRY32

;********************************************************************
; 计算传入 进程名 字符串的长度(带尾部的0)
;********************************************************************

    invoke  _lstrlen,@ProcessName
    mov  @StringLength,eax

    invoke  _ZeroMemory,addr @stProcess,sizeof @stProcess
    mov  @stProcess.dwSize,sizeof @stProcess
    invoke  CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    mov  @hSnapShot,eax

    invoke  Process32First,@hSnapShot,addr @stProcess
    .while  eax
      lea  esi,@stProcess.szExeFile
      push  esi
      mov  edi,esi
;变为大写字母
      _nextz:
      lodsb
      cmp  al,60h
      jc  @F 
      cmp  al,7Bh
      ja  @F
      and  al,not 20h
@@:      STOSB

      cmp  al,"\"
      jnz  @F
      pop  ecx  ;保存的esi出栈,无用
      push  esi
@@:
      or  al,al
      jne  _nextz

      mov  ecx,@StringLength    ;字符串比较
      pop  esi
      mov  edi,@ProcessName
      repz  cmpsb

      .if  ZERO?  ;找到了同名进程(ZF=1)
        mov eax,@stProcess.th32ProcessID
        jmp  @F
      .endif

      invoke  Process32Next,@hSnapShot,addr @stProcess
    .endw
    push eax
    invoke  CloseHandle,@hSnapShot
    pop eax
@@:    ret
_findProcess  endp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -