Сейчас на форуме: igorcauret, Rio (+6 невидимых)

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

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 февраля 2015 11:49
· Личное сообщение · #1

Всем привет!
Если софтина LiveViewRift - это плеер, он бесплатный.
Нужно его немного "подкорректировать", а точнее - перехватывать api чтения файла и менять входную информацию. Я уже написал соответствующую утилиту на основе библиотеки mhook. Утилита прекрасно работает на разных плеерах типа VLC и MPC, но на этом - не работает.
Суть в том, что вызов ReadFile проиcходит, похоже, не из самого процесса LiveViewRift.exe. В общем я открыл IDA, поставил точку остановки в ReadFile, нажал в плеере Start и... Плеер спокойно начал проигрывать видео, не остановившись в отладчике. При этом, если открыть ProcessMonitor, то мы увидим, как процесс LiveViewRift.exe спокойно себе читает наш видео файл.
Я в замешательстве
Может кто сталкивался с подобным поведением, подскажите.

ps
плеер на Qt, ни чем не упакован, код чистый.

Заранее спасибо




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 26 февраля 2015 12:03
· Личное сообщение · #2

А кто обещал, что будет чтение файла? Может файл мапится, скажем. И где линк?



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 февраля 2015 12:15
· Личное сообщение · #3

вот плеер: http://soft.viarum.com/download/liveviewrift3131_win_220914.msi

Archer пишет:
Может файл мапится, скажем

Да, но ProcessMonitor четко показывает, что идет чтение искомого файла (по 32 кб).

Добавлено спустя 35 минут
Установил WinDbg и поставил точку остановки на ReadFile. И, о чудо! Отладчик вывалился в nvoglv32.dll - это библиотека nvidia.

[ASM]...
692c68b1 6a00 push 0
692c68b3 8d45fc lea eax,[ebp-4]
692c68b6 50 push eax
692c68b7 6a04 push 4
692c68b9 8d45f8 lea eax,[ebp-8]
692c68bc 50 p[/ASM]ush eax
692c68bd 57 push edi
692c68be ffd3 call ebx ; << вызов ReadFile
692c68c0 8b4dfc mov ecx,dword ptr [ebp-4] ss:002b:05b4fb3c=00000004
692c68c3 85c9 test ecx,ecx
692c68c5 0f84af000000 je nvoglv32!DrvPresentBuffers+0x205eaa (692c697a)
692c68cb 85c0 test eax,eax
692c68cd 0f84d9000000 je nvoglv32!DrvPresentBuffers+0x205edc (692c69ac)
...
[/ASM]

В общем, как я понял куда-то в Opengl передается имя файла, а он уже сам открывает.

Вопрос вот в чем. Почему тогда не удается подцепиться к процессу, перехватив ReadFile в основном процессе? Как я понимаю, адрес ReadFile для всех подключенных dll так же будет одним и тем же.


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


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