Guest User

Untitled

a guest
Jul 2nd, 2017
120
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;---------------------------------------------
  2. ; Get DLL List without API
  3. ; Copyright (C) by ManHunter / PCL
  4. ; http://www.manhunter.ru
  5. ;---------------------------------------------
  6.  
  7. format PE console 4.0
  8. entry start
  9.  
  10. include 'win32w.inc'
  11.  
  12. ;---------------------------------------------
  13.  
  14. struct  UNICODE_STRING
  15.     Length          dw ?
  16.     MaximumLength   dw ?
  17.     Buffer          dd ?
  18. ends
  19.  
  20. struct  LIST_ENTRY
  21.     Flink           dd ?
  22.     Blink           dd ?
  23. ends
  24.  
  25. struct  LDR_DATA_ENTRY
  26.     InMemoryOrderModuleList LIST_ENTRY
  27.     BaseAddress     dd ?
  28.     EntryPoint      dd ?
  29.     SizeOfImage     dd ?
  30.     FullDllName     UNICODE_STRING
  31.     BaseDllName     UNICODE_STRING
  32.     Flags           dd ?
  33.     LoadCount       dw ?
  34.     TlsIndex        dw ?
  35.     HashTableEntry  LIST_ENTRY
  36.     TimeDateStamp   dd ?
  37. ends
  38.  
  39. ;---------------------------------------------
  40.  
  41. section '.text' code readable executable
  42. align 10h
  43. data import
  44. library kernel32,'kernel32.dll',\
  45.         user32,'user32.dll'
  46.  
  47. include 'api/kernel32.inc'
  48. include 'api/user32.inc'
  49. end data
  50. align 10h
  51. mask        du 'Module: "%s"',13,10,'BaseAddress: %08Xh EntryPoint: %08Xh',13,10,13,10,0
  52. align 10h
  53.  
  54.     start:
  55.     ; EAX -> PEB
  56.     mov     eax,[fs:0x30]
  57.     ; EAX -> PEB_LDR_DATA
  58.     mov     eax,[eax+0x0C]
  59.     ; EBX -> InInitializationOrderModuleList
  60.     mov     ebx,[eax+0x1C]
  61.  
  62.     invoke  GetStdHandle,STD_OUTPUT_HANDLE
  63.     mov     esi,eax
  64.     @@:
  65.     ; Последняя запись?
  66.     cmp     [ebx+LDR_DATA_ENTRY.BaseAddress],0
  67.     je      @F
  68.  
  69.     cinvoke wsprintf,buff,mask,[ebx+LDR_DATA_ENTRY.FullDllName.Buffer],\
  70.             [ebx+LDR_DATA_ENTRY.BaseAddress],\
  71.             [ebx+LDR_DATA_ENTRY.EntryPoint]
  72.     invoke  WriteConsole,esi,buff,eax,dummy,0
  73.  
  74.     ; Указатель на следующую запись
  75.     mov     ebx,[ebx+LDR_DATA_ENTRY.InMemoryOrderModuleList.Flink]
  76.     jmp     @B
  77.  
  78.     @@:
  79.     ; Получить хэндл стандартного ввода stdin
  80.     invoke  GetStdHandle,STD_INPUT_HANDLE
  81.     mov     esi,eax
  82.     ; Установить режим консоли
  83.     invoke  SetConsoleMode,esi,NULL
  84.     ; Дождаться нажатия любой клавиши
  85.     invoke  ReadConsole,esi,buff,1,dummy,0
  86.  
  87.     invoke  ExitProcess,0
  88.  
  89. ;---------------------------------------------
  90.  
  91. section '.data' readable writeable
  92.  
  93. dummy       dd ?
  94. buff        du 1024 dup(?)
RAW Paste Data