Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Отловить чтение файла
Посл.ответ Сообщение

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

Создано: 04 января 2017 13:17
· Личное сообщение · #1

Есть такой код
Code:
  1. 104259F6 | 6A 00                 | push 0                                   |
  2. 104259F8 | 50                    | push eax                                 |
  3. 104259F9 | FF 75 18              | push dword ptr ss:[ebp+18]               |
  4. 104259FC | FF 75 14              | push dword ptr ss:[ebp+14]               |
  5. 104259FF | FF 75 10              | push dword ptr ss:[ebp+10]               |
  6. 10425A02 | FF 75 0C              | push dword ptr ss:[ebp+C]                |
  7. 10425A05 | FF 75 08              | push dword ptr ss:[ebp+8]                |
  8. 10425A08 | FF 15 30 80 47 10     | call dword ptr ds:[<&CreateFileW>]       |

Программа останавливается на нем огромное количество раз, но мне нужен именно тот момент, когда происходит открытие нужного мне файла. Как это организовать?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 04 января 2017 13:35
· Личное сообщение · #2

Conditional breakpoint

| Сообщение посчитали полезным: random

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

Создано: 04 января 2017 13:59
· Личное сообщение · #3

Угу, я знаю об этом. Но не знаю как правильно составить условие для бряка.
В доках по x64dbg скудное описание по условных брекпоинтам.



Ранг: 42.9 (посетитель), 13thx
Активность: 0.040
Статус: Участник

Создано: 04 января 2017 15:13 · Поправил: cryptX
· Личное сообщение · #4

random
Собственно первый шаг найти в каком регистре будет имя файла, в твоем случий из msdn можно найти описание функций CreateFileW (W означает что функция "юникодовская"):

Code:
  1. HANDLE WINAPI CreateFile(
  2.   _In_     LPCTSTR               lpFileName,
  3.   _In_     DWORD                 dwDesiredAccess,
  4.   _In_     DWORD                 dwShareMode,
  5.   _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  6.   _In_     DWORD                 dwCreationDisposition,
  7.   _In_     DWORD                 dwFlagsAndAttributes,
  8.   _In_opt_ HANDLE                hTemplateFile
  9. );


т.е имя файла в будет в еах,

потом уже conditional breakpoint на адресс 104259F8:

в олли будет так:
Code:
  1. [UNICODE[eax]] == "Yourfilename.txt"


в x64dbg не пробовал, но мне кажется будет работать тоже.

| Сообщение посчитали полезным: samtehnik, random

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

Создано: 04 января 2017 16:05
· Личное сообщение · #5

cryptX пишет:
т.е имя файла в будет в еах

В [ebp+8] ;)
Олли выдает ошибку unknown character sequence, но возможно это из-за того, что я указываю путь к файлу, а не само имя. Но теперь суть ясна, спасибо.



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 04 января 2017 16:16 · Поправил: dosprog
· Личное сообщение · #6

random пишет:
В [ebp+8] ;)

BP CreateFileW. Указатель на имя файла в [esp+4]

random пишет:
Олли выдает ошибку unknown character sequence


Потому, что там не <character sequence>, а <указатель на character sequence>




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


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