home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / LordLucifer / win32asm / tutorials / hide1.txt < prev    next >
Text File  |  2000-05-25  |  4KB  |  104 lines

  1. Hiding your program from the Ctrl+Alt+Del list
  2. -----------------------------------------------------------------------------
  3. by lord lucifer
  4. Thursday, June 24, 1999
  5.  
  6.  
  7. Introduction:
  8. -----------------------------------------------------------------------------
  9.  
  10. Here's a question that I have seen a lot.  To accomplish this, you need to
  11. resister the program as a service, by passing its process ID to the
  12. RegisterService() function.                                                  
  13.  
  14. This method makes use of the API GetProcAddress to get the function pointer
  15. for RegisterServiceProcess API.  This function pointer is then used to call
  16. the RegisterServiceProcess function.
  17.  
  18.  
  19.  
  20. Hiding the Application:
  21. -----------------------------------------------------------------------------
  22.  
  23. ; defined in the data section
  24.     szKernel32      db   "Kernel32.dll",0
  25.     szRSP           db   "RegisterServiceProcess",0
  26.  
  27. ; code to hide application from alt+ctrl+del
  28.     push   offset szKernel32        
  29.     call   GetModuleHandle           ; get the handle of kernel32.dll
  30.     push   offset szRSP
  31.     push   eax
  32.     call   GetProcAddress            ; get the address of the function
  33.     mov    ebx, eax                  ; save the pointer into ebx
  34.  
  35.     call   GetCurrentProcessId       ; get the current process's id
  36.  
  37.     push   1                         ; 1 = Register as Service
  38.     push   eax                       ; process id
  39.     call   ebx                       ; call RegisterServiceProcess
  40.  
  41.  
  42.  
  43. Cleaning Up:
  44. -----------------------------------------------------------------------------
  45.  
  46. You should always call RegisterServiceProcess again (using the previously
  47. described methods), but instead passing a 0 for the dwType argument, so that
  48. your program will unregister itself, and frees up its resources.
  49.  
  50. ; code to un-hide application from alt+ctrl+del
  51.     push   offset szKernel32        
  52.     call   GetModuleHandle           ; get the handle of kernel32.dll
  53.     push   offset szRSP
  54.     push   eax
  55.     call   GetProcAddress            ; get the address of the function
  56.     mov    ebx, eax                  ; save the pointer into ebx
  57.  
  58.     call   GetCurrentProcessId       ; get the current process's id
  59.  
  60.     push   0                         ; 0 = UnRegister as Service
  61.     push   eax                       ; process id
  62.     call   ebx                       ; call RegisterServiceProcess
  63.  
  64.  
  65. RegisterServiceProcess:
  66. -----------------------------------------------------------------------------
  67.  
  68. The RegisterServiceProcess function registers or unregisters a service
  69. process. A service process continues to run after the user logs off.
  70.  
  71. To call RegisterServiceProcess, retrieve a function pointer using
  72. GetProcAddress on KERNEL32.DLL. Use the function pointer to call
  73. RegisterServiceProcess.
  74.  
  75.  
  76. DWORD RegisterServiceProcess(
  77.     DWORD dwProcessId,
  78.     DWORD dwType
  79. );
  80.  
  81. Parameters
  82.  
  83.   dwProcessId
  84.       Specifies the identifier of the process to register as a service
  85.       process. Specifies NULL to register the current process.
  86.  
  87.   dwType
  88.       Specifies whether the service is to be registered or unregistered.
  89.       This parameter can be one of the following values.
  90.  
  91.       Value      Meaning
  92.       0          Unregisters the process as a service process.
  93.       1          Registers the process as a service process.
  94.  
  95. Return Values
  96.  
  97.   The return value is 1 if successful or 0 if an error occurs.
  98.  
  99.  
  100.  
  101. -----------------------------------------------------------------------------
  102. (C) 1999 Lord Lucifer
  103. lord-lucifer@usa.net
  104.