Задача такая, есть два приложения юзермодных одно читает из памяти другого процесса, так вот мне надо узнать по каким адрессам оно читае, для этого я решил пропатчить kernel32.dll но не факт что оно там еще какнибуть хитро не мутет, темпаче что у нее еще и свой драйвет... так вот если у меня не получиться решить патчем кернела придеться писать дров а тут я лопух, я даже оценить сложность задачи не могу, так вот прозьба сказать в каком направлении рыть, и если задача не сложная можно за меня ее и решить написав драйвер. Просто пока я буду совсем разбираться время уйдет... ЗЫ простите писал второпях приду подправлю
SPA Для чтения и даже записи из памяти другого процесса не нужно никаких драйверов - есть стандартные и известные функции. Поэтому патчить kernel32 - что ты хочешь добиться, я не понимаю. Если приложение защищено, то ты добьешься синего экрана или систему угробишь совсем. Т.е. в любом случае : отладчик в руки и смотреть. Если защиты нет или простая - бряки на функции работы с памятью и Олли тебе покажет откуда и сколько читают и пишут. Если защита сложная, вот тогда уж помощи проси. У тебя еще нет задачи, т.ч. помощи ты рано просишь.
valterg А я то думал... ни оли ни сайс за километр не пускают, и какой смысл изучать эту прогу если нужны только адресса по которым она читает. Я думаю если юзаються юзер мод для чтения, почему бы не запатчить ReadProcessMemory так чтобы она кроме полезной нагрузки вела еще лог ее использования. И ваще ну изучу я эту прогу досканально потратив не меньше недели и что выйдет новая версия и усе.. Обьясни. Это я вас не совсем понял. Еще приложение прячет свой процесс, ради прикола поюзал мсремовский поисковик скрытах так там на половине юзерных опций бсод короче с одладкой больше мароки будет. ЗЫ sorry )))) ваще жестяк
SPA Чтобы правильно запатчить, надо сначала в отладчике это хоть раз увидеть, либо прочитать и понять массу статей. Нахера патчить - есть API шпионы - они все сами запатчат и покажут. У тебя типичный новичковый синдром. Сначала втихую делают что-то и приходят к выводу, обычно неправильному. Потом сами не могут свое решение выполнить и спрашивают совета. Потом новичок и другие долго-долго пудрят друг другу мозги и выясняется, что дело вовсе и не в чтении памяти. Скажи что делал, почему решил что дело в ReadProcessMemory, и почему ты уверен, что можно за один день научится патчить kernel32.dll
SPA В общем, если отмести лишний флуд и если тебе действительно надо узнать только адрес по которому одна программа пишет в другую, то надо и вправду взять API-hooker, поставить хук на NtWriteVirtualMemory и после анализировать логи. kerberos на сайте подойдет.
valterg Я думаю без проблем запатчу часа за 2-3 максимум... И еще что я делал, да ничего пока собственно, но вопрос в другом как еще можно прочитать память другого процесса, при этом из юзер мода, да еще и не вмешиваясь а дресное пространство процесса с которого читаем, вроде как не извращенских способов больше не знаю. Если есть скажите буду благодарен за любую помощь. Osen Вы почитай "флуд" и поймете что уж что что а апи шпионы не пойдут, т.к. даже процесса они не увидят! и антиотладка там хорошая... Все короче пошел сам копать... PS еслм был резок или еще чего сори просто злой сейчас )
SPA Ты что-то не то говоришь, память прочитать можно одним способом - функцией NtReadVirtualMemory(то что ее используют другие все и так знают), и зачем kernel32.dll патчить это уж совсем не то. Насчет "флуда", это я сказал про ответы в теме. Можно конечно через драйвер ручками реализовать NtReadVirtualMemory через запросы DeviceIoControl, но не думаю что это кто-то будет делать ибо это через жопу и никакой антиотладки не несет. А если шпионы процесса не могут увидеть, то надо именно с этим бороться(находить процесс) или реверсить чтение, если оно делается через жопу. Такое впечатление, что ты не знаешь и что такое антиотладка, и что такое вообще чтение из памяти. Вообще в таком случае надо не пальцы гнуть, а вежливо спрашивать ответы на интересующие вопросы.
Osen Ты очень внимательно читал что я написал? Очень, очень? Я написал что хочу перехватить NtReadVirtualMemory в ntdll(изначально я хотел патчить ReadProcessMemory в кернеле, но потом подумол почемубы сразу не ntdll) и ваще запатчив ntdll я и получу тот самы апи шпион который вы так призываете меня использовать, но мне не придеться реверсить ДРАЙВЕРА чтобы антишпионы его увидели, мне не придеться изучать прогу написанную на с# на котором я даже хело ворлд не написал мне ваще придеться лишь запатчить ntdll. Osen SPA Чтото я не писал... Кроме осена мне может ктонибуть сказать чем плох патч ntdll?
При желании можно сделать так, что ты никак не отследишь по каким адресам идет патч. Из юзера если следить то из юзера же можно и дергать напрямую int 2e/sysenter, минуя kenrel32/ntdll. из ядра можно делать KeStackAttachProcess + memcpy, это ты уже не похукаешь ничем.
Прога я почти уверен читает их юзер мода так что вы не партесть. Просто драйвер защиещает саму прогу от обнаружения и все, короче я решил патч. Попробую не получиться отпишу. вот я и просил написать за меня дров чтобы если и дергала то я всеравно бы знал. Great кстате не патч а рид памяти, но понятно что это еще сложнее отследить.
Так а что тут сложного, простой перехват KeStackAttachProcess. Про аппаратные точки останова и др. и слова не было.
SPA Ок. Кстати про int2E/sysenter забыл - очень даже реально может быть использовано. Я просто не разглядел у тебя идею о NTDLL, но старался читать внимательно, так что прошу прощения, если что не то сказал. По теме, патч NTDLL.DLL может подойти, если есть уверенность в том, что прога действительно его юзает. Конечно, патч ее надо сделать предельно правильно, а иначе могут быть большие проблемы. Ну и конечно надо фильтровать полученные логи, т.к. будет куча не нужного мусора (можно по имени процесса делать это сразу). Есть еще вариант - все таки попытаться запустить программу самому, а учитывая техники скрытия процессов фильтровать некоторые подозрительные действия (например, взаимодействие с драйвером, запись в ненужные ему процессы etc.) и программа это сделать позволит, т.к. она будет делать скрытие после запуска. И вообще мало понимаю в чем сложность аттача, если программа скрывает процесс, то можно тем же монитором отследить какое действие приводит к скрытию процесса (есть тот же System Safety Monitor) и убрать его. Т.е. я все о том, что патч NTDLL.DLL будет сложен в реализации и отладке, и я бы на твоем месте пошел бы другим путем. В случае совершенной невозможности использования мониторов патч NTDLL.DLL единственный способ, но явно более трудоемкий.
SPA Уже 12 часов прошло, а воз и ныне там Теперь объясню всем, в чем реально проблема. Имеется приложение неизвестно(возможно C#) на чем написанное и есть "подозрение", что хорошо защищенное : 1) его не видно в списке процессов, хотя если это java , то javaw - это не процесc... 2) примена антиотладка - опять не факт, т.к. товарищ ничего не хочет учить Опять же есть подозрение, что второй скрытый процесс читает память первого и если подсунем другую информацию, то "будет нам счастье"... Тов. SPA настолько уверен в себе(это последствия неучизма), что не хочет использовать(учить) отладчики и шпионы, а сам сейчас за 3 часа напишет патч ntdll.dll, который не испортит систему, не будет обойден защитой и будет правильно работать. Думаю, теперь он опять скажет, что все ерунда и он будет использовать INT 2E
Clerk ну можно использовать KeStackAttachProcess как сигнал для установки HW бряков на акцес к памяти конечно.. только уж больно это геморно.
valterg Спасибо что открыл глаза, но я написал про 3 часо когда ложился спать... короче все понятноя уже не от кого ничего не прошу! че надо товарищь valterg? Кстате проблеммы как токавой нет ты прочитал название топика, там не было помогите плиз и т.п. мне сейчас некогда, поэтому я написал "напишите за меня" т.е. действительно сам я писать ничего пока не буду, да и про то что я не люблю учиться это ты правильно подметил ) Умник! почитай внимательно... с помошью мсиремовского процесхантера его без проблемм видно.. мдя... подскажи шпион который "пробьет" эту прогу.. и кто тебе сказал что я не пробывал? + ко всему прога шифрованна и для работы требует подключения к серву мне все это раскапывать для того чтобы узнать пару дрессов, рациональный подход. PS Мне стало интересно я правда давно ничего не писал не делал, завтра-послезавтра попробую запатчить на время
SPA Я сразу и написал : задача не поставлена. Т.к. ты просил помощи, а вместо этого пошли полунамеки на непростые вещи, то решил все поставить на свои места. Не надо соревноваться : писать патч рано, т.к. не ясна защита. Что патчить и как зависит именно от этого, а значит без отладчика никуда. Либо зверя в студию и народ проанализирует, чем его "лечат". А иначе пустая болтовня это все. Отладчик Олли ты бы уже освоил за это время Я ведь правильно понял, что сначал тебе лог нужен доступа в память, чтобы понять что "подменить". Патч возможно и просто сделать, а вот логгер - чуть труднее.