Такая проблема, не знал куда запостить, положил в бегинерс, так как сам полный профан в этом... Есть программа написанная мной, которая определенным образом использует шаренные секции другой (не ругайтесь, все легально), довольно все хитро сделано, но... У заказщика стоит один авер (из антихоливарных соображений название говорить не буду), который перехватывает в ядре определенный функционал (SSDT), NtCreateSection одна из них... При определенном вызове моей программой (ринг3) этой функции система падает в бсод... Хотел попросить Вас поделиться опытом о том, как можно отладить код перехватчика этой функции... то есть вызов происходит в юзермоде, потом спускается в кернел и вот дизасм ядерного обработчика мне нужно увидеть, чтобы понять в чем тут дело... какой функционал вы посоветуете использовать для этого? как бы вы его использовали? на что наиболее грамотно поставить точку останова? как лучше трассировать код? вобщем все вопросы по этой тематике... заранее спасибо! извиняйте, что задаю нубовские вопросы, если сильно бесит, то хоть направьте куда копать...
Rel Syser или WinDbg на перехват? или опять орать на дядю Женю.. я угадал? дядя Женя? хотя это вопрос прямиком в кернелмоде, ты правильно сделал что запостил сюда, после необоснованных высказываний, что ты считаеш себя чуть лучше Клерка, он бы там не долго прожил )
ставишь и настраиваешь vmware и windbg (как описано в кернел моде разделе). В варю авера и программу. Я не в курсе как там перехват выполнен - сплайсом или заменой адреса в SSDT. Если первое, то bp NtCreateSection и отлаживаете спокойно перехват. Если второе, то предварительно надо выяснить какой адрес в SSDT (dd KeServiceTable, потом dd на адрес первый, там соответсвенно адреса сервисов, смотришб который тебе нужен по номеру) и на него поставить точку останова (bp). PS не можешь в пм отправить, что за авер и что за параметры?
2Clerk зачем? он будет стопится ж на каждом вызове сервиса, в то время как он уже знает определенный круг сервисов, вызов которых вызывают бсод. Проще на их обработчики поставить точку останова.
izl3sa Трассировка начинается при вызове целевого сервиса. Все отладчики позволяют ставить условные брейки. При этом способе не нужно вобще сст затрагивать, мы сразу окажемся в необходимом сервисе.
да, вы правы. Я забыл что eax до kssdoit не изменится и будет содержать номер сервиса, к которому можно привязать условный bp. =)