Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. from ctypes import *
  2. import sys
  3. import struct
  4.  
  5. hDevice=windll.kernel32.CreateFileA(b'\\\\.\\aswSP_Open',
  6.                                     0x02000000, #MAXIMUM_ALLOWED
  7.                                     3,
  8.                                     None,
  9.                                     3,
  10.                                     0,
  11.                                     0)
  12. if (hDevice&0xffffffff)==0xffffffff:
  13.     print('0x%08x'%(windll.kernel32.GetLastError()))
  14.     sys.exit(0)
  15.  
  16. OutBuffer=b'\0'*4
  17. OutBufferSize=len(OutBuffer)
  18. n=c_ulong(0)
  19. windll.kernel32.DeviceIoControl(hDevice,
  20.                                 0xb2d60190,
  21.                                 None,
  22.                                 0,
  23.                                 OutBuffer,
  24.                                 OutBufferSize,
  25.                                 byref(n),
  26.                                 None)
  27.  
  28. Enabled=struct.unpack('<I',OutBuffer)[0]
  29. if Enabled==0:
  30.     print('avast! Self Protection is not enabled')
  31. else:
  32.     print('avast! Self Protection is enabled')
  33.     print('List of trusted PIDs:')
  34.     for Pid in range(4,4096,4):
  35.         InBuffer=struct.pack('<I',Pid)
  36.         InBufferSize=len(InBuffer)
  37.         OutBuffer=b'\0'*4
  38.         OutBufferSize=len(OutBuffer)
  39.         n=c_ulong(0)
  40.         windll.kernel32.DeviceIoControl(hDevice,
  41.                                         0xb2d600cc,
  42.                                         InBuffer,
  43.                                         InBufferSize,
  44.                                         OutBuffer,
  45.                                         OutBufferSize,
  46.                                         byref(n),
  47.                                         None)
  48.         if struct.unpack('<I',OutBuffer)[0]!=0:
  49.             print('    %4d'%(Pid))
  50.  
  51. windll.kernel32.CloseHandle(hDevice)