Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Система, Windows API > Перехват и подмена зеачений реестра в чужом приложении


Автор: Jiro 02.12.17, 22:06
Нужно в одной программе перехватывать обращения к реестру и подменять данные на свои.
По сути это касается серийного номера диска, т.е. ветки HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

Ищу примеры или либы, само собой free.
Есть чё?

Автор: Krid 04.12.17, 07:13
Перехват WinAPI на Delphi

Автор: Jiro 04.12.17, 17:16
Krid Гуглом я тоже пользоваться умею и все кийворды по данной теме тоже знаю, но от этого пользы никакой.
Тонны исходников по теме внедрения в чужой процесс и перехвата с подменой не работают в новых форточках.
Как я пониманию данная тема под Delphi табуированна, видимо расчитывать можно только на то что кто-то поделится.

Автор: Fr0sT 05.12.17, 07:14
Цитата Jiro @
данная тема под Delphi

Данная тема под Delphi ничем не отличается от данной темы под что угодно. Поэтому не обязательно искать прям готовую реализацию.
Цитата Jiro @
Тонны исходников по теме внедрения в чужой процесс и перехвата с подменой не работают в новых форточках.

А вот это надо было сказать сразу, чтобы все понимали, что ты уже сделал для поиска решения и в чем конкретно затруднение

Автор: Jiro 06.12.17, 10:10
Fr0sT
Ну если конкретно то не работает injection, то-ли он в новых версиях Win 10 x64 реализуется только через драйвер, то ли ещё что-то там.
Есть всякие платные решения, типа madshi (очень дорого), smalldonkey (закрылся), SwiPE($200-$450 как бы тоже не особо дёшего). Других не нашёл.

Вобще если есть у кого контакт с аffтором smalldonkey я бы ему черканул, помню он обещал дать свою игрушку если понадобится, правда без исходников.

Автор: ЫукпШ 06.12.17, 10:39
Цитата Jiro @
Ну если конкретно то не работает injection, то-ли он в новых версиях Win 10 x64 реализуется только через драйвер, то ли ещё что-то там.

У меня сейчас нет win10 никакой.
Давай я дам тебе приложение (dllinjector) + dll (x86/x64) для примера, попробуем - будет работать или нет ?
----
Так, я нашёл комп с установленной WIN10 x64.
Инжекция и перехват устойчиво работают.
Для варианта x86, и для варианта x64 под системой x64.
Никаких отличий от win7,8 не обнаружено.
Административные привилегии не требуются.
----
Есть только одно ограничение - некоторые антивирусы (DrWeb) считают такие
действия "опасными" и препятствуют таким мероприятиям.
В этом случае надо крутить настройки антивируса.

Автор: Jiro 09.12.17, 07:03
ЫукпШ
Только сегодня зашёл. А где посмотреть ? на антивирусы пофиг.

Автор: ЫукпШ 09.12.17, 16:16
Странно, невозможно приаттачить файл 450К. Это у всех так ? :huh:
Всё-таки сейчас не 1995 год, когда 450К считались значительным размером.

Вот ссылка, попробуй работает или нет ?
dllInjector.7z

Автор: Jiro 10.12.17, 04:49
ЫукпШ
Пока не тестил, просто хочу прояснить один момент.
А сорсы то есть или предполагается то что я буду каждый раз запускать чужой dllinjector.exe?

Автор: ЫукпШ 10.12.17, 21:05
Цитата Jiro @
А сорсы то есть или предполагается то что я буду каждый раз запускать чужой dllinjector.exe?

1. Jiro, это всё написал я сам, исходники все есть. Всё на С++,
я начал писать в тему только после упоминания о драйверах..
2. Перехват winapi выполнен почти точно по Рихтеру, исходники
имеются прямо в тексте его книги и на прилагающемся к книге CD.
Эта тема у Рихтера подробно разобрана.
Однако я не стал тупо использовать чужие исходники, а пользовался книгой
как руководством. Писал сам из своих представлений, как лучше.
Скрытый текст

Насколько я понимаю, перехват WinApi заменой адреса в таблице импорта - штатное
средство отладки Виндус. Для этих мероприятий используется Виндусовая dll "dbghelp.dll".

3. Не понятно, что именно тебе нужно.
Если надо исследовать и отладить множество приложений, удобнее dllInjector.
Однако, не всегда возможно его использовать.
Например, прицепиться к службе, вероятно, так не удастся никак.
Как я понял, тебе нужно изменить работу одного чужого приложения,
изменяя результат чтения реестра. Для этого DllInjector не удобен
и не нужен.

Делаем так:
- пишем dll перехвата по-Рихтеру. Или как хочешь по другому.
- Ищем и качаем утилиту "IIDKing". Эта утилита добавляет
ссылку на твою dll в любой указанный исполнимый модуль (в таблицу импорта).
- Всё. Твоя dll законный участник подсудимого процесса.
- Из уведомления DLL_PROCESS_ATTACH делаем перехват.
---
Вот эта статья из 3-х частей широко разошлась по сети (исходники на Паскале):
Перехват API функций в Windows NT
Внимательно читая 2-ю часть и производя перевод с Паскаля на С я и смастерил dllInjector.

Автор: Krid 08.01.18, 12:49
Цитата Jiro @
Как я пониманию данная тема под Delphi табуированна

Отнюдь. Если надо, опубликую. Просто никто до этого особо не интересовался (вот и сам ТС куда-то пропал :)).
Короче, Jiro, будет тебе код, если ты объявишься :)

Автор: Jiro 13.01.18, 19:03
Поправка на ветер, та задача которая требовала данное решение была снята.
Но в хоте потуг я понял что inject из примеров работает, а не работает код перехвата из dll которые писались под XP ...

Krid
В принципе уже не надо, но на будущее думаю пригодится, а то потом опять искать ...
Так, что как начинающий архивариус исходников, приму в дар :)

Автор: ЫукпШ 18.01.18, 22:52
Цитата Jiro @
Но в хоте потуг я понял что inject из примеров работает, а не работает код перехвата из dll которые писались под XP ...

По всей вероятности, надо изменить параметр защиты памяти.
Этим перехват под ХР (и далее) может отличаться от перехвата для WIN2000.
(Использовать "VirtualProtectEx")
---
я так делал. Это с++, однако захочешь - разберёшься.
MImpChanger.zip (, : 176)

Автор: power2009 30.01.18, 00:19
Цитата ЫукпШ @
Цитата Jiro @
Но в хоте потуг я понял что inject из примеров работает, а не работает код перехвата из dll которые писались под XP ...

По всей вероятности, надо изменить параметр защиты памяти.
Этим перехват под ХР (и далее) может отличаться от перехвата для WIN2000.
(Использовать "VirtualProtectEx")
---
я так делал. Это с++, однако захочешь - разберёшься.
MImpChanger.zip (, : 176)

Ясно, обойдусь тогда без замены цвета, пусть будет как есть. Спасибо за консультацию.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)