Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Определить место вызова ReadFile |
Посл.ответ | Сообщение |
|
Создано: 26 февраля 2015 11:49 · Личное сообщение · #1 Всем привет! Если софтина LiveViewRift - это плеер, он бесплатный. Нужно его немного "подкорректировать", а точнее - перехватывать api чтения файла и менять входную информацию. Я уже написал соответствующую утилиту на основе библиотеки mhook. Утилита прекрасно работает на разных плеерах типа VLC и MPC, но на этом - не работает. Суть в том, что вызов ReadFile проиcходит, похоже, не из самого процесса LiveViewRift.exe. В общем я открыл IDA, поставил точку остановки в ReadFile, нажал в плеере Start и... Плеер спокойно начал проигрывать видео, не остановившись в отладчике. При этом, если открыть ProcessMonitor, то мы увидим, как процесс LiveViewRift.exe спокойно себе читает наш видео файл. Я в замешательстве ![]() Может кто сталкивался с подобным поведением, подскажите. ps плеер на Qt, ни чем не упакован, код чистый. Заранее спасибо ![]() |
|
Создано: 26 февраля 2015 12:03 · Личное сообщение · #2 |
|
Создано: 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 |