Проблемы с хукингом LdrInitializeThunk в NtResumeThread

Тема в разделе "WASM.WIN32", создана пользователем gribodemon, 25 ноя 2009.

  1. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138
    Вот поэтому я специально и взял это понятие в кавычки. =)

    Я не отрицаю, что у меня мало опыта в программирование подобных вещей.
    Я, поэтому и взял за основу путь, описанный в статье MSRem'а.
    Потом появляешься ты и начинаешь рубить мачете мои представления о глобальном хукинге. Большое спасибо за инфу и за код. Обязательно его пойму и заюзаю как будет время.
     
  2. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138
    Кстати, вот что MS-Rem писал об этом:

    Any comments?
     
  3. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Это полностью лишённая смысла фраза, из юзермода не существует способа глобально захватить стаб, единственное решение - хардварные точки останова и обработка брейка. Я уже устал повторять что код изменять нельзя, как вы не поймёте захват кода модификацией его это зло.
    На счёт остального я сказал выше - дохуя текста, но сути нет, что это ??
    Ненавижу тупых тролей.. Рэма умер, повесили его или сам он сделал то, чего делать нельзя.. мы сожалеем. В связи с этим мертво почти всё о чём он писал. Изменяется софт, изменяется ось, изменяются механизмы. Я могу кучу своего текста процетировать, это не поможет человеку, пока он не начнёт слушать. Для большинства тут маздай это нечто отрешённое от реальности, в связи со средой обитания соответствующей.. реально же всё банально просто, существует группа точек, через который выполняется смена кпл(колец защиты). С точки зрения ядра это калбэки, всего их 5(не учитывая прогрузку пользовательского трап-фрейма в 3-х сервисах), с точки зрения пользовательского режима это шлюзы. Шлюзы прерываний, исключений и системные стубы. Какимбы образом не происходила передача управления между кольцами защиты неизбежно будут вызваны эти точки, иного способа нет. Аналагично как всяко дрочево с калгейтами и пр., по сути это излишне - незачем юзать нестабильные шлюзы вызова, в которых изза подкачки и разрешённых прерываниях возникает крах, если можно использовать ловушки, которые маздай и любая другая ось юзает изза их достаточной аппаратной реализации. Аналогично и первичная апк - это всеголишь ядерный калбэк, такойже как и множество теневых калбэков. У них всех своя модель вызова, свои нюансы. Также возможность использования их зависит полностью от уровня кода, как например здесь - пока лодер не выполнил инициализацию себя и сторонних модулей невозвожен вызов его и использование высокоуровневого функционала, единственно возможный функционал соответственно это нативапи, который вызывает отвращение и ужос у всех, ибо там необходимо использовать ум, в отличае от скриптов, где всё сделает среда(Грейту привет..). Таким образом и описываемые механизмы призваны только показать основы, код его работал только в лабораторных условиях. Например недавно была описана техника захвата разрушением указателей, это мощный мехонизм, но для большинства он не доступен, ибо всяко задача будет иметь уникальное решение, которое без мехонизма сегментации осознать невозможно.. Хотя это только пример, но он хорошо отражает суть оного.
    Эмсирем не дал основы. Он дал некоторые стотьи, которые расчитаны на тупое стадо, да там описаны основы, но не должным образом, не знай сути не всякий воспримет. Тут на ум приходит Зомби, хотя это иное, он дал нам "святые" основы, тоесть он отец сцены. И описание его также доступно пониманию узкому кругу людей. Вывод - не следует использовать сторонний мехонизм, не осознав его и всех механизмов на которых он основан и что следуют далее.
    Противный термин хук, както невольно я стараюсь его избегать, вызывает неприятные ассоциации с кривым шадовом.. В чём смысл подобного захвата ?
    Глобальны это понятие очень расплывчатое, например обьекты ядра для него локальны, вне зависимости от количества их описателей и процесса, которому описатели принадлежат. Обьект один, находится он по фиксированному адресу. Также и здесь. Глобальный захват подразумевает контроль кода не зависимо от планировщика. Тоесть без разницы текущий процесс, что достигается захватом точек, через которые прохисходит передача управления во всех процессах и на всех процессорах. Те последовательные манипуляции с потоками трудно назвать глобальными. Вобще не понятные термины и цели.. При захвате первичной апк нет возможности контролировать её поведение их юзермода, тоесть нельзя доставить стартупапк ранее и изменить яденый контекст, но есть иные способы. Создание разделяемой памяти, калбэки, дебуг, логирование(о'да это кошерный функционал!) и остальное. Хотя всё, что есть на паблике достаточно для решения вашей задачи.
    sp: Спешите бред на излишек пива..