Сейчас на форуме: _MBK_, Adler (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Получить полный путь к exe из PEB?
Посл.ответ Сообщение


Ранг: 88.2 (постоянный), 111thx
Активность: 0.070.01
Статус: Участник

Создано: 12 апреля 2011 16:50
· Личное сообщение · #1

Можно ли?

Нужен код на асме

Сам нарыл такое:

Code:
  1. MOV EAX,DWORD PTR FS:[30]
  2. MOV EAX,DWORD PTR DS:[EAX+10]
  3. LEA ESI,DWORD PTR DS:[EAX+290]


Получаем указатель на PEB, затем указатель на RTL_USER_PROCESS_PARAMETERS, затем в esi получаем юникод строку пути загрузки бинарника. А вот как получить полный путь - папка+файл? Да еще и в ASCII



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 12 апреля 2011 17:31
· Личное сообщение · #2

lea esi,[eax+7с4] в аски ты не получишь,только самому перевести.



Ранг: 5.5 (гость), 3thx
Активность: 0.010
Статус: Участник

Создано: 12 апреля 2011 17:42
· Личное сообщение · #3

Полный путь с именем файла в юникод режиме
Code:
  1.   MOV EAX,FS:[18]
  2.   MOV EAX,[EAX+30]
  3.   MOV EAX,[EAX+C]
  4.   ADD EAX,0C
  5.   MOV ESI,[EAX]
  6.   LEA ESI,[ESI+28]
  7.   MOV ESI,[ESI]





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 12 апреля 2011 18:10
· Личное сообщение · #4

Code:
  1.          .586
  2.          .model flat, stdcall
  3.          option casemap :none
  4.          assume fs:nothing
  5.          include \MASM32\INCLUDE\kernel32.inc
  6.          include \MASM32\INCLUDE\user32.inc
  7.          include \MASM32\INCLUDE\ntdll.inc
  8.          
  9.  
  10.          includelib \MASM32\LIB\kernel32.lib
  11.          includelib \MASM32\LIB\user32.lib
  12.          includelib \MASM32\LIB\ntdll.lib
  13.  
  14.  
  15. .data
  16. tit db "Path:", 0
  17.  
  18.  
  19. .data?
  20. SourceString      db 8 dup (?)
  21. DestinationString db 8 dup (?)
  22.  
  23. .code
  24.  
  25. start:
  26.  
  27. mov eax,dword ptr fs:[018h]
  28. mov eax,dword ptr ds:[eax+030h]
  29. mov eax,dword ptr ds:[eax+010h]
  30. mov ecx,dword ptr ds:[eax+040h]
  31. mov eax,dword ptr ds:[eax+044h]
  32.  
  33. mov dword ptr ds:[SourceString],ecx
  34. mov dword ptr ds:[SourceString+4],eax
  35.  
  36. push 1
  37. push offset SourceString
  38. push offset DestinationString
  39. call RtlUnicodeStringToAnsiString
  40.  
  41. mov eax, DWORD PTR DS:[DestinationString+4]
  42.  
  43. push 0
  44. push offset tit
  45. push eax
  46. push 0
  47. call MessageBoxA
  48.  
  49. push 0
  50. call ExitProcess
  51.  
  52. end start
  53.  


-----
Nulla aetas ad discendum sera




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 12 апреля 2011 18:40 · Поправил: cppasm
· Личное сообщение · #5

Если есть возможность вызывать API (RtlUnicodeStringToAnsiString), почему тогда сразу не вызвать GetCommandLineA и отрезать все параметры после имени образа?
Переносимость выше чем работа с PEB.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 12 апреля 2011 19:18 · Поправил: ELF_7719116
· Личное сообщение · #6

Airenikus
Может нужен путь другого процесса? Обычно через Peb читают именно в таком раскладе.
Из unicode в ascii быстрее:
Code:
  1. MOV ESI, offset unicode_str
  2. MOV EDI, offset ascii_str
  3. NXT:
  4. MOVSB
  5. ADD ESI, 1
  6. CMP WORD [ESI],0
  7. JNE NXT
  8. MOV [EDI],0





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 12 апреля 2011 19:26
· Личное сообщение · #7

ELF_7719116 Если в строке unicode будут русские буквы, то в ascii получится лажа

-----
Nulla aetas ad discendum sera





Ранг: 88.2 (постоянный), 111thx
Активность: 0.070.01
Статус: Участник

Создано: 12 апреля 2011 19:41
· Личное сообщение · #8

Нужен путь именно для своего процесса.

Мне бы без API А то как бэ:

Code:
  1. push MAX_PATH
  2. push offset PATH
  3. push 0
  4. call kernel32.GetModuleFileNameA





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 12 апреля 2011 20:13
· Личное сообщение · #9

Airenikus пишет:
Нужен путь именно для своего процесса.

Мне бы без API А то как бэ

Шеллкодес.

-----
Лучше быть одиноким, но свободным © $me




Ранг: 60.6 (постоянный), 20thx
Активность: 0.070
Статус: Участник

Создано: 13 апреля 2011 02:25 · Поправил: s0l
· Личное сообщение · #10

Airenikus пишет:
Мне бы без API

Получаешь KernelBase, парсишь экспорт и оттуда уже вызываешь API(без них никуда:s6
Сам недавно парился:
https://ssl.exelab.ru/f/action=vthread&forum=2&topic=17908&page=0#6


 eXeL@B —› Вопросы новичков —› Получить полный путь к exe из PEB?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати