Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / AV в команде call qword ptr [rel NNN] / 18 сообщений из 18, страница 1 из 1
04.08.2018, 11:50
    #39683291
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Столкнулся с тем, что в x64 приложении (не моем) стало возникать загадочное AV. Предположительно моя dll (плагин к не моему приложению) является причиной. Радует то, что AV всегда возникает в одном и том же месте. Дебагер показывает, что AV происходит на строке call qword ptr [rel 0006ed57]. Предполагаю, что 0006ed57 - это какое нибудь смещение в какой нибудь таблица экспорта, а моя dll портит эту таблицу. В момент AV в стеке вызовов моей dll нет. Собственно вопрос к знатокам ассемблера - что такое rel 0006ed57, как мне рассчитать адрес в памяти, где лежит реальный адрес, который будет использоваться для вызова подпрограммы. И можно ли поставить в Delphi breakpoint на изменение памяти?
...
Рейтинг: 0 / 0
04.08.2018, 11:59
    #39683292
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
https://www.gunsmoker.ru/2018/05/random-crashes.html

Почитай, возможно, это как раз твой случай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.08.2018, 12:03
    #39683294
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Dimitry SibiryakovПочитай, возможно, это как раз твой случай.Спасибо, я это читал, случай мой, но мне нужно понять, что именно я порчу, что бы искать место, где я это порчу. Собственно вопрос именно об определении того, что я порчу.
...
Рейтинг: 0 / 0
04.08.2018, 12:25
    #39683297
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Aniskin,

рекомендую включить range check, buffer overflow для начала. также можно воспользоваться EurekaLog с включенным расширенным менеджером памяти.
...
Рейтинг: 0 / 0
04.08.2018, 12:29
    #39683299
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
makhaonрекомендуюСделал это еще до написания поста.
...
Рейтинг: 0 / 0
04.08.2018, 12:48
    #39683301
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Aniskinмне нужно понять, что именно я порчу, что бы искать место, где я это порчу

Это в статье тоже написано.

Можешь также воспользоваться DrMemory.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.08.2018, 12:58
    #39683302
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Dimitry SibiryakovЭто в статье тоже написано.

(Меня несколько удивляют подобные ответы.) Статья, безусловно, очень хорошая, но метод исследования не применим к моей ситуации.

Я задал лишь один вопрос - что такое rel 0006ed57, как мне рассчитать адрес в памяти, где лежит реальный адрес, который будет использоваться для вызова подпрограммы. Это все, что мне нужно знать на данном этапе.
...
Рейтинг: 0 / 0
04.08.2018, 13:03
    #39683303
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
AniskinЯ задал лишь один вопрос - что такое rel 0006ed57, как мне рассчитать адрес в памяти, где
лежит реальный адрес, который будет использоваться для вызова подпрограммы. Это все, что
мне нужно знать на данном этапе.

Боже ж ты мой... Какой широтой знания надо обладать, чтобы предположить, что "rel" это
сокращение от "relative" и нагуглить, что указанное смещение прибавляется к адресу
инструкции, следующей за call?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.08.2018, 13:09
    #39683305
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Dimitry Sibiryakov"rel" это сокращение от "relative"До этого я догадался, спасибо за подтверждение.
Dimitry Sibiryakovнагуглить,Гуглил по запросу "call qword ptr rel", не нашел. Если ткнешь в конкретную ссылку, скажу спасибо.
Dimitry Sibiryakovчто указанное смещение прибавляется к адресу инструкции, следующей за callСпасибо за пояснение, вот этого я и ждал, а не пространных комментариев.
...
Рейтинг: 0 / 0
04.08.2018, 13:21
    #39683307
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
AniskinГуглил по запросу "call qword ptr rel", не нашел.

Чтобы естественный интеллект победил искусственный надо гуглить asm call "rel"
именно так, с кавычками. Первая ссылка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.08.2018, 16:35
    #39683331
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Мое предположение оказалось не верным, содержимое памяти rel 0006ed57 не портится. Исключение возникает в user32.dll где то внутри функции UserCallWinProcCheckWow. Стек выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 	0000000009170fd8()	Unknown
>	user32.dll!UserCallWinProcCheckWow()	Unknown
 	user32.dll!DispatchMessageWorker()	Unknown
 	windows.storage.dll!CShellTaskScheduler::_TT_MsgWaitForMultipleObjects()	Unknown
 	windows.storage.dll!CShellTaskScheduler::TT_TransitionThreadToRunningOrTerminating()	Unknown
 	windows.storage.dll!CShellTaskThread::ThreadProc()	Unknown
 	windows.storage.dll!CShellTaskThread::s_ThreadProc()	Unknown
 	SHCore.dll!ExecuteWorkItemThreadProc()	Unknown
 	ntdll.dll!RtlpTpWorkCallback()	Unknown
 	ntdll.dll!TppWorkerThread()	Unknown
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown

Сразу после загрузки моей dll в DebugOutput есть следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\comdlg32.dll'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\winspool.drv'
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001870D02E, 0x00000000169C4930, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\UIRibbon.dll'. Symbols loaded.
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(62)\windows.storage.dll!00007FFE6FE13AA2: (caller: 00007FFE6FEF3EB6) ReturnHr(228) tid(578) 80004001 Not implemented
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(89)\windows.storage.dll!00007FFE6FE13AEE: (caller: 00007FFE6FEF386A) ReturnHr(229) tid(578) 80004005 Unspecified error
DLL THREAD ATTACHException thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001870D02E, 0x0000000013B488F0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
DLL THREAD DETACHException thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001870D02E, 0x0000000013C081E0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
The thread 0x2920 has exited with code 0 (0x0).
onecoreuap\shell\windows.storage\homefolder.cpp(506)\windows.storage.dll!00007FFE6FF91FE2: (caller: 00007FFE6FEBB123) ReturnHr(230) tid(29f4) 80070490 Element not found.
    CallContext:[\DefView_Sort] 
onecoreuap\shell\windows.storage\regfldr.cpp(1242)\windows.storage.dll!00007FFE6FF8EA95: (caller: 00007FFE6FEB7FA8) ReturnHr(231) tid(29f4) 80070490 Element not found.
    CallContext:[\DefView_Sort] 
DLL THREAD ATTACHException thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001870D02E, 0x0000000013C0AE20, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
shell\shell32\banners\bannersettings.h(9)\SHELL32.dll!00007FFE71EF5A04: (caller: 00007FFE71EF4F9B) LogHr(22) tid(578) 80070002 The system cannot find the file specified.
shell\shell32\banners\datamodel.cpp(979)\SHELL32.dll!00007FFE72008D9C: (caller: 00007FFE71EF54CF) LogHr(23) tid(578) 80070057 The parameter is incorrect.
shell\shell32\banners\datamodel.cpp(809)\SHELL32.dll!00007FFE71EF5C1F: (caller: 00007FFE71EF5D8C) ReturnHr(96) tid(578) 80070490 Element not found.
shell\shell32\banners\datamodel.cpp(994)\SHELL32.dll!00007FFE71EF5DA6: (caller: 00007FFE71EF54CF) ReturnHr(97) tid(578) 80070490 Element not found.
shell\shell32\syncproviderrecyclebin.cpp(92)\SHELL32.dll!00007FFE71EF4958: (caller: 00007FFE71EF4B1D) ReturnHr(98) tid(578) 80070490 Element not found.
DLL THREAD ATTACHException thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001870D02E, 0x0000000013BE0840, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(89)\windows.storage.dll!00007FFE6FE13AEE: (caller: 00007FFE6FEF386A) ReturnHr(232) tid(578) 80004005 Unspecified error
Exception thrown at 0x0000000009170FD8 in explorer.exe: 0xC0000005: Access violation executing location 0x0000000009170FD8.


Поделитесь любыми, даже самыми странными идеями, из за чего такое может быть и как такое в принципе можно победить.
...
Рейтинг: 0 / 0
04.08.2018, 18:12
    #39683342
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Используй уже DrMemory.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.08.2018, 15:17
    #39683452
а компот
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
AniskinМое предположение оказалось не верным, содержимое памяти rel 0006ed57 не портится. Исключение возникает в user32.dll где то внутри функции UserCallWinProcCheckWow. Стек выглядит так:

Код: plaintext
1.
2.
3.
 	0000000009170fd8()	Unknown
>	user32.dll!UserCallWinProcCheckWow()	Unknown
 	user32.dll!DispatchMessageWorker()	Unknown

Поделитесь любыми, даже самыми странными идеями, из за чего такое может быть

https://stackoverflow.com/questions/5138156/access-violation-exception-in-64bit-mfc-version
...
Рейтинг: 0 / 0
05.08.2018, 18:14
    #39683477
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Aniskin,

у меня вылетало AV, когда я в DLL работал с ActiveX и при освобождении DLL в ней не дожидался полного завершения работы этих ActiveX объектов.
...
Рейтинг: 0 / 0
05.08.2018, 22:54
    #39683510
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
авторException thrown at 0x0000000009170FD8 in explorer.exe: 0xC0000005: Access violation executing location 0x0000000009170FD8

0000000009170fd8() Unknown
> user32.dll!UserCallWinProcCheckWow() Unknown

Судя по данным, у вас передача управления на мусор при вызове оконной процедуры. Вероятнее всего, испорчен адрес оконной процедуры.

Посмотрите, что лежит в RSP. Предположительно там будет указатель на указатель адреса возврата. Найдите этот вызов (в user32). Вероятнее всего, он будет опосредованный. Посмотрите откуда читается смещение или указатель для вызова. Посмотрите, что по этой памяти лежит. Перезапускайтесь и ставьте туды бряк на данные. Ждите, пока бряк сработает. Повторить по необходимости.
...
Рейтинг: 0 / 0
05.08.2018, 23:43
    #39683512
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
GunSmokerСудя по данным, у вас передача управления на мусор при вызове оконной процедуры. Вероятнее всего, испорчен адрес оконной процедуры.

Посмотрите, что лежит в RSP. Предположительно там будет указатель на указатель адреса возврата. Найдите этот вызов (в user32). Вероятнее всего, он будет опосредованный. Посмотрите откуда читается смещение или указатель для вызова. Посмотрите, что по этой памяти лежит. Перезапускайтесь и ставьте туды бряк на данные. Ждите, пока бряк сработает. Повторить по необходимости.

Спасибо за подробный алгоритм. Буду пробовать. Тут я чуть подробнее описал контекст проблемы - может быть еще какие нибудь идеи будут?
...
Рейтинг: 0 / 0
06.08.2018, 22:39
    #39683992
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
GunSmokerСудя по данным, у вас передача управления на мусор при вызове оконной процедуры. Вероятнее всего, испорчен адрес оконной процедуры.У вас, как я понимаю, очень большой опыт расследования подобных инцидентов. Скажите, будет ли вам интересно расследовать мой случай на коммерческой основе? Можно оттолкнутся от цен Microsoft - они берут $250 за инцидент. Или сами назовите стоимость вашего времени.
...
Рейтинг: 0 / 0
07.08.2018, 12:41
    #39684201
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AV в команде call qword ptr [rel NNN]
Могу попробовать посмотреть, к примеру, через TeamViewer. Напишите на alex eurekalog.com.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / AV в команде call qword ptr [rel NNN] / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]