Share Pastebin
Guest
Public paste!

Get PID, //bosh

By: a guest | Mar 20th, 2010 | Syntax: ASM (NASM) | Size: 2.27 KB | Hits: 41 | Expires: Never
Copy text to clipboard
  1. .386                                                                                                                    ;Get Pid by //bosh 21.03.2010
  2. .model flat, stdcall                                                                                    ;WINASM
  3. option casemap:none
  4.  
  5. includelib kernel32.lib
  6. include kernel32.inc
  7. include windows.inc
  8. includelib user32.lib
  9. include user32.inc
  10.  
  11. IsSameA proto :DWORD, :DWORD
  12. GetPidByName proto :DWORD
  13. DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
  14.  
  15. .data
  16. szError                 db                              "Check Entry!",0
  17.  
  18.  
  19. .data?
  20. hInstance               HINSTANCE               ?
  21. szProcessName   db                              64 dup(?)
  22. hSnapshot               HANDLE                  ?
  23. dwPid                   DWORD                   ?
  24. p32Process      PROCESSENTRY32          <>
  25.  
  26. .const
  27. ERROR_NO_MORE_FILES             equ     18
  28. IDD_DLGBOX                              equ             1001
  29. IDC_GETPID                              equ             1005
  30. IDC_PROCESS                             equ             1003
  31. IDC_PID                                 equ             1008
  32.  
  33. .code
  34. start:
  35. invoke GetModuleHandle, NULL
  36. mov    hInstance,eax
  37. invoke DialogBoxParam, hInstance, IDD_DLGBOX, NULL, addr DlgProc, NULL
  38. invoke ExitProcess,eax
  39.  
  40. DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  41.  
  42. .if (uMsg == WM_COMMAND)
  43.         mov eax, wParam
  44.         .if (eax == IDC_GETPID)
  45.         invoke GetDlgItemText,hWnd, IDC_PROCESS,offset szProcessName,64
  46.         push EBX
  47.         push EDI
  48.         push ESI
  49.         invoke GetPidByName,offset szProcessName
  50.         pop ESI
  51.         pop EDI
  52.         pop EBX
  53.         mov dwPid, eax
  54.         cmp eax,0
  55.         jle @f
  56.         invoke SetDlgItemInt,hWnd,IDC_PID,dwPid,0
  57.         @@:
  58.         invoke SetDlgItemText,hWnd,IDC_PID,offset szError
  59.         .endif
  60.        
  61. .elseif uMsg == WM_CLOSE
  62.         invoke  EndDialog, hWnd, 0
  63.  
  64. .endif
  65.  
  66. xor eax,eax
  67. ret
  68. DlgProc endp
  69.  
  70. IsSameA proc dwArray1:DWORD,dwArray2:DWORD
  71. mov ESI, dwArray1
  72. mov EDI, dwArray2
  73.  
  74. .while (BYTE ptr [ESI] != 0)
  75. mov CL,BYTE ptr[ESI]
  76. mov DL, BYTE ptr [EDI]
  77. cmp CL,DL
  78. jne EXIT
  79. inc ESI
  80. inc EDI
  81. .endw
  82.  
  83. mov eax, 1
  84. ret
  85.  
  86. EXIT:
  87. xor eax, eax
  88. Ret
  89. IsSameA endp
  90.  
  91. GetPidByName proc addProcName:DWORD
  92.  
  93. invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
  94. mov hSnapshot, eax
  95. mov p32Process.dwSize, $- PROCESSENTRY32
  96. invoke Process32First,hSnapshot,offset p32Process
  97.  
  98. mov EDX, addProcName
  99. push addProcName
  100. mov EBX,offset p32Process.szExeFile
  101. invoke IsSameA,EDX,EBX
  102. pop EDX
  103.  
  104. .while (EAX == 0)
  105.         push EDX
  106.         invoke GetLastError
  107.         pop EDX
  108.         cmp EAX,ERROR_NO_MORE_FILES
  109.         je EXIT
  110.         push EDX
  111.         invoke Process32Next,hSnapshot,offset p32Process
  112.         pop EDX
  113.         push EDX
  114.         invoke IsSameA,EDX,offset p32Process.szExeFile
  115.         pop EDX
  116. .endw
  117.  
  118. mov eax,p32Process.th32ProcessID
  119. ret
  120.  
  121. EXIT:
  122. xor eax, eax
  123. Ret
  124. GetPidByName endp
  125.  
  126. end start