Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› Подскажите новичку по перехвату Api функций |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 ноября 2011 17:16 · Личное сообщение · #1 Доброго времени суток. Разбираюсь с перехватом API функций через dll инъекцию. В сети нашел интересный пример и на нем сделал библиотечку которая подменяет нужные функции. В частности: GetDriveTypeA, GetVolumeInformationA, GetVersion, GetVersionExA Все они находятся в kernel32.dll, что усложняет задачку GetDriveTypeA и GetVersion удалось подменить выводы на нужные, а вот GetVolumeInformationA и GetVersionExA проблемы GetVolumeInformationA возвращает 0 (наверное потому что не знаю в какой регистр писать и в один ли ) А с GetVersionExA вообще труба каким образом и как там идет возврат. К сожалению приходится пользоватся почти наугад, завести на 64 битном 4 ядерном проце SoftIce не удалось а в виртуалке проблемы с видеодрайвером. Да и мешает еще одна проблема последний раз на асме писал лет 10 назад (уже с трудом что-то вспоминается). Прошу помощи подсказками: Каким софтом можно подсмотреть саму функцию kernel32 Советами по поводу вовратов от функции, примером или чем нибудь еще. В архиве программка мишень, библиотека, flat assembler и исходники всего. http://narod.ru/disk/31656508001/project.zip.html |
|
Создано: 19 ноября 2011 12:25 · Личное сообщение · #2 |
|
Создано: 19 ноября 2011 12:30 · Личное сообщение · #3 |
|
Создано: 19 ноября 2011 12:31 · Личное сообщение · #4 bowrouco Давай проще. ПЕКилл до мозга костей практик. На его счету несколько автораспоковщиков самых крутых протекторов, 5000 сломанных и закейгененых программ. Он РЕАЛЬНО делал все то, о чем пишет. Ты же теоретик, который на практике никогда не делал то, о чем пишешь и все твои теории навсегда останутся теориями. Кстати в шапке есть прога, можешь на ее примере показать нам "патч от Инде"? ----- StarForce и Themida ацтой! |
|
Создано: 19 ноября 2011 12:37 · Поправил: bowrouco · Личное сообщение · #5 Maximus > Он РЕАЛЬНО делал все то, о чем пишет. Дык в том и проблема. Может он делал то о чём пишет гдето там, но то о чём он пишет тут он даже не понимает. Я ничего не кейгеню и не пишу что я это делал. > Ты же теоретик, который на практике никогда не делал то, о чем пишешь и все твои теории навсегда останутся теориями. Многие из моих теорий реализовано в коде. Многие не реализованы изза высокой сложности и большого количества нужных человекочасов для реализации. Но я стараюсь. > Кстати в шапке есть прога, можешь на ее примере показать нам "патч от Инде"? Для меня сама идея портить код отвратительна, так что мне предложить вам нечего. Вдобавок эта задача примитивна. Да и реализаций даже системных достаточно - вирификатор, хотпатчер всякие либы, от мс была какаято забыл как называется. |
|
Создано: 19 ноября 2011 12:45 · Поправил: Alchemistry · Личное сообщение · #6 bowrouco Я знаю PE_Kill по его программам, а тебя только по срачам на васме, который я иногда читаю. У тебя сейчас прекрасная возможность показать себя и свои техники на практике как и предложил Maximus. Возьми задачу из шапки и сделай. А потом объясни это ТС, так чтобы он понял. Сделаешь - респект. Опять начнешь генерить бред или свалишь из темы - шито поделать десу. Блджад Клерк, сколько же у тебя свободного времени. upd. Для меня сама идея портить код отвратительна, так что мне предложить вам нечего. Вдобавок эта задача примитивна. Да и реализаций даже системных достаточно - вирификатор, хотпатчер всякие либы, от мс была какаято забыл как называется. Ну все ясно, очередной слив. |
|
Создано: 19 ноября 2011 13:00 · Личное сообщение · #7 |
|
Создано: 19 ноября 2011 13:04 · Личное сообщение · #8 Alchemistry Есть же LdrHotPatchRoutine() - готовый системный функционал, зачем велосипед изобретать. Вдобавок главное идея, потом алгоритм для её реализации, потом уже реализация в виде кода. Первое и второе тут никому не нужно, нужен готовый код. Алго то там как такового и нет - енумим потоки, проверяем что ни один из них не стоит на изменяемых инструкциях(чтобы на середине новой не оказался), если это так, то копируем код в буфер, пишем туда стаб и далее изменяем код. До тупого примитивно, что там реализовать, да и зачем мне это. Кстати давным давно, когда я был таким наивным и нубом как вы, я реализовал сие в виде либы. У меня есчо эти древние кодесы остались: Code:
Code:
Code:
Code:
Code:
Code:
И есчо с пол мегабайта такого дерьма. PE_Kill Жирно тролите товарищ. |
|
Создано: 19 ноября 2011 13:10 · Поправил: Alchemistry · Личное сообщение · #9 |
|
Создано: 19 ноября 2011 13:10 · Поправил: bowrouco · Личное сообщение · #10 Code:
Code:
Хм, занятный кодес последний > Требуется: реализовать православный перехват Инде, объяснить ТС решение. ТС нужен универсальный, сие не реализуемо, ибо решение зависит от кода. Кстате вы говорили про не православные патчи в моей реализации, а не про кошерные решения. У меня небыло задач, где я не знал вызываемых апи заранее |
|
Создано: 19 ноября 2011 13:15 · Личное сообщение · #11 |
|
Создано: 19 ноября 2011 13:19 · Личное сообщение · #12 |
|
Создано: 19 ноября 2011 13:37 · Личное сообщение · #13 bowrouco ТС нужен универсальный, сие не реализуемо, ибо решение зависит от кода. Кстате вы говорили про не православные патчи в моей реализации, а не про кошерные решения. У меня небыло задач, где я не знал вызываемых апи заранее Вот ты и сам признал негодность своего двига. Тебе чтобы перенаправить управление на свой обработчик нужно выполнить куеву тучу телодвижений. И так для каждой функции как я понимаю. Универсальности нет как таковой вообще. То есть негодно, выражаясь твоим языком. Идем дальше. Смотрю я твой двиг (один из вариантов) и вижу море x86 хардкода, не портируемого. А следовательно негодно. Ок, пошли дальше - собственно пейлоад двига, ну типа для чего ты его запилил. Двиг позиционируется как илитный кодес для скрытия от всяких аверских детекторов патчей и замена "негодного" патча (обсуждали раньше - кому интересно двигайте в соседний топ "и снова патчи"). Тут остановимся. Покажи мне авера, который орет на какие-то там перехваты и на основании этого выдает вердикт - малварь. Что касается разнообразного треша типа твоего любимого гмера - как правило до таких вещей доходит уже тогда когда юзер знает, что у него малварь. То бишь малвари так и так уже не жить - комп отрубается от инета - пейлоада от ботов нету, TTL бота стремительно приближается к нулю. А в энтерпрайз таким хукалкам ход заказан по объективным причинам, ибо там нужна стабильность и куча других вещей не свойственных твоим кодесам. Итоги: Непортируемый, не универсальный движок, документации внятной нет, статей (даже на васме) по нему нет, цели движка непонятны. Огромное количество хардкода для выполнения банальных операций. С другой стороны имеем "не тру" патч с трамплином, поддерживаемый на 100% мс и лишенный всех недостатков "тру патча Инде". Библа их называется Detours. Помимо нее существует туча других движков (некоторые кросс-платформ даже!), между прочим куда надежнее в плане стабильности, чем то что описывается в линках, что накидал PE_Kill во втором посте. Ну и че в итоге? А в итоге, православный патч от Инде то негодный оказывается. Потому и никто до сих пор не заюзал. Как и большинство из того что у тебя в log.txt (да я его читаю иногда) p.s. А между прочим ТС выдал список API для перехвата, для тренировки как сам написал. |
|
Создано: 19 ноября 2011 13:56 · Поправил: bowrouco · Личное сообщение · #14 Alchemistry > Вот ты и сам признал негодность своего двига. Я признаю что это не годно для вас и ваших дадач. Мне не нужно универсальное. Вы хотите функу Patch(ModuleName$, EntryName$). Чтобы можно было юзать это не зная даже что делает EntryName$ и как реализована. Когда я чтото реализую то чётко знаю все функи< которые мне нужно отслеживать. Вы это считаете не годным, пусть будет так. Проблема в том, что для использования тогоже IDP нужно знать реализацию кода, который будет отслеживаться. Есть средства автоматизации, но также не универсальные. Вдобавок IDP причём тут совершенно не понятно, в том семпле это только как один из множества способов получить управление внутри апи, это опорное место для дальнейшей маршрутизации. > Смотрю я твой двиг (один из вариантов) и вижу море x86 хардкода, не портируемого. А следовательно негодно. Там нет вообще хардкода(хотя кто знает что вы под этим понимаете). Если бы вы посмотрели сурс, то нашли бы там в хидере "MI" - это именно и значит что хардкода нет, нет привязки расстоянию между инструкциями, нет статических данных. Портабельность - это нельзя портировать на x64, там нет LDT. Но замена сегментов не единственное решение, можно использовать дизасм, но так как это тяжёлый код и я не юзаю x64, то мне достаточно текущего движка. > GetVersion Это нет смысла даже патчить, версия и её копия лежат в PEB. > GetDriveType & GetVolInfo Они наверно использует ProcessDeviceMap и NTRTL для манипуляции путями, например юзают хип. Есть стопяцот способов это отслеживать. Но вы главную мысль потеряли как обычно - отложенная передача управления позволяет контролировать апи до и после вызова имеющейся. Так бы решал я. Вам же сие не годно, ибо не универсально. Но самое главное касается непосредственно этой темы - какие движки левые, если хотпатч это системный механизм, для этого и имеется почти во всех процедурах префикс. Кстати провайдер верификации позволяет сделать это вообще без исполнения кода - задаётся список имён апи и модулей и из дллмейн отдаётся нэйтиву, а там верификатор сам всё запатчит |
|
Создано: 19 ноября 2011 14:33 · Личное сообщение · #15 bowrouco епта, какого хрена ты всё на свои задачи переводишь? Этот топик создавал не ты, раз отписался, помоги ТС решить его проблему, закодь функционал. Не можешь - иди на*й с этого топика и с этого форума, твои илитные сорсы ни кому не уперлись. ----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: SegFault |
|
Создано: 19 ноября 2011 14:37 · Личное сообщение · #16 PE_Kill Это вы переводите мои решения на свои задачи. У нас с вами разные цели и разные методы. Я ответил изначально совсем не вам, вы начали задавать вопросы и теперь куда то посылаете. А ТС тоже может получить полезное из этого обсуждения - я написал про хотпатч и верификатор, дело за малым - изучить как оно робит и заюзать. |
|
Создано: 19 ноября 2011 14:43 · Личное сообщение · #17 |
|
Создано: 19 ноября 2011 14:52 · Личное сообщение · #18 bowrouco Стоп приехали. Ты под верификатором понимаешь AVrf/RTL_VERIFIER? Ну ты даешь, Инде. ТС нужно простое решение, а ты предлагаешь значит пилить в реестр Image Executions Options параметры загрузки длл-ки, потом пилить собственно калбек и все это дело на нативе лишь для того чтобы менеджер тебе запилил IAT на интересующие тебя API. Тебе самому не кажется, что твоя идея реализация сложнее чем поставленная задача на несколько порядков? |
|
Создано: 19 ноября 2011 14:57 · Личное сообщение · #19 Alchemistry Да, AVRF. Опции в конфиг писать не обязательно, можно в обход этого заюзать. Сам пользовательский провайдер предельно прост. Я не предлагаю сложное, как например я грузил провайдер из ресурсов(длл), разбирал апи его инициализации, в зависимости от версии и дёргал вручную. Это сложно. А просто длл запилить куда уж проще. Не нравится провайдер - хотпатч есть. |
|
Создано: 19 ноября 2011 15:02 · Личное сообщение · #20 |
|
Создано: 19 ноября 2011 15:06 · Поправил: Alchemistry · Личное сообщение · #21 bowrouco пишет: Не нравится провайдер - хотпатч есть Оно самое вообще-то ТС и предлагается, если конечно под хотпатчем понимается решение МС, а не какой-нибудь твой термин. А насчет верифера - у него специфическое применение как средства диагностики системы самой же системой. Зачем его использовать ТС? Мало того что андок (андок в нормальных приложениях должен отсутствовать нафиг вообще), так еще с тем же успехом, но гораздо проще можно реализовать тот же баянистый IAT, на который дофига примеров в гугле. |
|
Создано: 19 ноября 2011 15:15 · Поправил: bowrouco · Личное сообщение · #22 PE_Kill > Так есть проблема в шапке, реши. Не можешь, какого хера тут делаешь тогда? Я решил. И привёл код. > Так хотпатч же не илитно, и кто его юзает - гавно. Тебя не понять. ТС нужен именно патч как сказали. Это его задача и без разницы элитно или нет. Какой же ты толстый троль. Хотя вероятно совсем с головой не дружишь, это бы обьяснило то что ты говоришь, либо имеешь ко мне какуюто не нависть, изза этого и так толсто тролишь. Хотя иначе было бы скучно, лучше так. Alchemistry > Оно самое вообще-то ТС и предлагается, если конечно под хотпатчем понимается решение МС, а не какой-нибудь твой термин. То самое, что реализуется самой осью. Имеется для этого интерфейс - LdrHotPatchRoutine(). |
|
Создано: 19 ноября 2011 15:23 · Личное сообщение · #23 |
|
Создано: 19 ноября 2011 15:26 · Личное сообщение · #24 bowrouco Она андок и хер пойми что у нее с легаси и как она в портах, если вообще есть. Не заявляю, что ее нельзя юзать, но в обычной программе, еще раз говорю, андок приемов не должно быть. Подсаживать нуба с первых же шагов на андок это в корне неверный шаг. Тот же патч можно реализовать своими руками или использовать готовые двиги, коих дофига и больше. В общем я давно заметил, что Инди всегда предлагает рвать гланды через вне зависимости от задачи. Будь проще епт. |
|
Создано: 19 ноября 2011 15:59 · Личное сообщение · #25 PE_Kill Если вы всё про колбеки, то в конце эмуляции дёргается нулевой. И в процессе обработки иногда тоже. CB_DumpCPUContext - видимо вы авер, раз гдето нашли эти константы, хотя не удивительно, я давно подозревал. Alchemistry Какая разница что андок, главное чтоб во всей линейке работала. Хотя я не смотрел как там у неё с совметсимостью, ибо для меня этот функционал интереса не представляет. В любом случае код NT закрыт и всякая попытка его потыкать это андок, мс не приводило бинарный код тойже GetVersion().. Вот теперь и я уже как троль |
|
Создано: 19 ноября 2011 16:12 · Личное сообщение · #26 bowrouco hotpatching появился начиная Win2003 SP1, вместе с какой-то версией компилера, не помню точно. В любом случае код NT закрыт и всякая попытка его потыкать это андок Ложь, п..оно самое и провокация. МС сделала такую замечательную штуку как "документация". Причем она как правило исчерпывающая по всем необходимым программистам вещам. Плюс Microsoft Press, целое издательство, где печатаются такие авторы как Рихтер, которого ты окрестил ламером и Руссинович. Документация и поддержка - то чего у твоих поделий отсутствует в принципе, текстовый документ на народе не вариант. MSDN + http://www.microsoft.com/resources/sharedsource/windowsacademic/researchkernelkit.mspx + WinDBG + политика по отношению к символам. + еще и еще Да Инде ты тролль, я знаю. |
|
Создано: 19 ноября 2011 16:17 · Поправил: bowrouco · Личное сообщение · #27 Alchemistry WRK это код ядра. Там нету винапи. А пижженый код, когда то утёкший - его балмер не одобряет. С таким же успехом я могу утверждать что всё чего нет в легальной документации, но есть в тех утёкших сурсах легально и документировано. Хотя последнее я и раньше утверждал. А с символами + дебуггер + есчо любой нужный инструмент всё становится документированным. Теперь вы понимаете что я должен понимать когда вы мне про документированность говорите. |
|
Создано: 19 ноября 2011 16:23 · Поправил: Alchemistry · Личное сообщение · #28 bowrouco Ты слышал звон, да не понял где он. Все эти инструменты идут в довесок к легальной документации, а не взамен ее. А что думает Балмер мне по три буквы, мне важно что думают клиенты моего софта. Нет андока - нет проблем с портом, со следующими версиями винды и т.д. А ты хочешь сказать я не могу перехватить GetVersion не зная как она реализована внутрене что-ли? Что за бред? Как раз твое илитное двигло тут навернется медным тазом, а вот старые как мир и стабильные методы сработают на ура. |
|
Создано: 19 ноября 2011 16:26 · Личное сообщение · #29 |
|
Создано: 19 ноября 2011 16:31 · Поправил: Alchemistry · Личное сообщение · #30 bowrouco А нафига мне знать реализацию функции для ее перехвата??? Ты вообще слышал о таком понятии как абстракция? Инкапсуляция, не? Для перехвата мне нужно знать только ее общее поведение - что она делает и ее интерфейс, то бишь прототип. Все. Для твоего двига же нужно чуть ли не побайтово знать потроха. Undocumented function - функция не описанная в оф. документации. Ничего расплывчатого тут нет. Не придумывай. |
|
Создано: 19 ноября 2011 16:35 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Подскажите новичку по перехвату Api функций |