Get PID, //bosh
By: a guest | Mar 20th, 2010 | Syntax:
ASM (NASM) | Size: 2.27 KB | Hits: 41 | Expires: Never
.386 ;Get Pid by //bosh 21.03.2010
.model flat, stdcall ;WINASM
option casemap:none
includelib kernel32.lib
include kernel32.inc
include windows.inc
includelib user32.lib
include user32.inc
IsSameA proto :DWORD, :DWORD
GetPidByName proto :DWORD
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
.data
szError db "Check Entry!",0
.data?
hInstance HINSTANCE ?
szProcessName db 64 dup(?)
hSnapshot HANDLE ?
dwPid DWORD ?
p32Process PROCESSENTRY32 <>
.const
ERROR_NO_MORE_FILES equ 18
IDD_DLGBOX equ 1001
IDC_GETPID equ 1005
IDC_PROCESS equ 1003
IDC_PID equ 1008
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, IDD_DLGBOX, NULL, addr DlgProc, NULL
invoke ExitProcess,eax
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if (uMsg == WM_COMMAND)
mov eax, wParam
.if (eax == IDC_GETPID)
invoke GetDlgItemText,hWnd, IDC_PROCESS,offset szProcessName,64
push EBX
push EDI
push ESI
invoke GetPidByName,offset szProcessName
pop ESI
pop EDI
pop EBX
mov dwPid, eax
cmp eax,0
jle @f
invoke SetDlgItemInt,hWnd,IDC_PID,dwPid,0
@@:
invoke SetDlgItemText,hWnd,IDC_PID,offset szError
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog, hWnd, 0
.endif
xor eax,eax
ret
DlgProc endp
IsSameA proc dwArray1:DWORD,dwArray2:DWORD
mov ESI, dwArray1
mov EDI, dwArray2
.while (BYTE ptr [ESI] != 0)
mov CL,BYTE ptr[ESI]
mov DL, BYTE ptr [EDI]
cmp CL,DL
jne EXIT
inc ESI
inc EDI
.endw
mov eax, 1
ret
EXIT:
xor eax, eax
Ret
IsSameA endp
GetPidByName proc addProcName:DWORD
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov hSnapshot, eax
mov p32Process.dwSize, $- PROCESSENTRY32
invoke Process32First,hSnapshot,offset p32Process
mov EDX, addProcName
push addProcName
mov EBX,offset p32Process.szExeFile
invoke IsSameA,EDX,EBX
pop EDX
.while (EAX == 0)
push EDX
invoke GetLastError
pop EDX
cmp EAX,ERROR_NO_MORE_FILES
je EXIT
push EDX
invoke Process32Next,hSnapshot,offset p32Process
pop EDX
push EDX
invoke IsSameA,EDX,offset p32Process.szExeFile
pop EDX
.endw
mov eax,p32Process.th32ProcessID
ret
EXIT:
xor eax, eax
Ret
GetPidByName endp
end start