18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353

Замена API функции

17.03.2015, 11:27. Показов 1254. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Не нашел подходящего раздела для темы - поэтому сильно не бейте.

Одно приложение использует API вызов из библиотеки user32.dll, функция GetForegroundWindow. Возможно ли каким либо образом заменить эту функцию на свою?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2015, 11:27
Ответы с готовыми решениями:

Замена RichTextBox на API функцию.
Есть готовая программа, в ней используется стандартный RichTextBox. Как его заменить с использованием функции API переписывая как...

Передача функций в функции, замена инициализации функции ключевыми словами
Хочу сделать фишку по типу property в c++/cli int property a{ int get(){ return value; } } и так же есть set Хочу...

Youtube API. Каким образом генерируется плеер? Замена другого блока на плеер
Здравствуйте. Есть такая функция. function cteateIframe(videoID, divID){ var player; player = new YT.Player(divID,...

11
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
17.03.2015, 17:17
Цитата Сообщение от xVahax Посмотреть сообщение
Возможно ли каким либо образом заменить эту функцию на свою?
Да.
1
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
17.03.2015, 21:00  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Да.
Спасибо, очень интересная статья. Но хотелось бы не перехватывая API, а каким либо образом подменой библиотеки для конкретного приложения. К примеру, написать библиотеку с идентичными названиями функций, во всех сделать вызов на функцию настоящей библиотеки, а в нужной функции написать свой код. Сделать такую библиотеку, теоретически, не проблема (если честно не пробовал, но думаю не сложно). Как заставить приложение работать именно с моей библиотекой?
0
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
17.03.2015, 21:21
Цитата Сообщение от xVahax Посмотреть сообщение
К примеру, написать библиотеку с идентичными названиями функций, во всех сделать вызов на функцию настоящей библиотеки, а в нужной функции написать свой код
Это возможно, но тогда придется изменить приложение, для которого производится замена, иначе оно не загрузит вашу библиотеку. Но если можно изменить приложение, то проще пропатчить вызов GetForegroundWindow или обработку ее результата.

Цитата Сообщение от xVahax Посмотреть сообщение
Как заставить приложение работать именно с моей библиотекой?
Изменить таблицу импорта исполняемого модуля.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
17.03.2015, 21:33
Цитата Сообщение от quwy Посмотреть сообщение
Изменить таблицу импорта исполняемого модуля
Этого может быть недостаточно.
Не исключены и обращения к EAT либы со стороны модуля, использующего ее.
EAT будет использована в случае обращения с использованием LoadLibrary + GetProcAddress.
Тогда либо EAT патчить либо IAT для еще как минимум для этих двух ф-ций.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
18.03.2015, 02:13
Цитата Сообщение от xVahax Посмотреть сообщение
Спасибо, очень интересная статья. Но хотелось бы не перехватывая API, а каким либо образом подменой библиотеки для конкретного приложения. К примеру, написать библиотеку с идентичными названиями функций, во всех сделать вызов на функцию настоящей библиотеки, а в нужной функции написать свой код. Сделать такую библиотеку, теоретически, не проблема (если честно не пробовал, но думаю не сложно). Как заставить приложение работать именно с моей библиотекой?
Столько слов, а речь в топике идет о весьма безобидной и простой функции GetForegroundWindow.
Ну и зачем её подмена нужна:?
0
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
18.03.2015, 08:15  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Сообщение от xVahax
К примеру, написать библиотеку с идентичными названиями функций, во всех сделать вызов на функцию настоящей библиотеки, а в нужной функции написать свой код
Это возможно, но тогда придется изменить приложение, для которого производится замена, иначе оно не загрузит вашу библиотеку. Но если можно изменить приложение, то проще пропатчить вызов GetForegroundWindow или обработку ее результата.
Сообщение от xVahax
Как заставить приложение работать именно с моей библиотекой?
Изменить таблицу импорта исполняемого модуля.
Нет, исходников приложения нет((, тогда бы и вопросов не было))

Насчет своей библиотеки: встречал такие примеры, когда кидаешь рядом с приложением пропатченную dll (причем ее там изначально не было) и приложение начинает после перезапуска работать именно с ней, причем библиотеки тоже системными были.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
18.03.2015, 12:36
Цитата Сообщение от xVahax Посмотреть сообщение
Нет, исходников приложения нет((, тогда бы и вопросов не было))
Это можно сделать и без исходников.

Цитата Сообщение от xVahax Посмотреть сообщение
причем библиотеки тоже системными были
Это вряд ли. Попробуйте сами, возьмите любую DLL, и скопируйте ее под именем user32.dll рядом с вашим EXE. Запустите его. Если бы все было так просто, EXE просто не запустился бы по причине того, что в лже-user32.dll нет ожидаемых функций. Однако процесс запустится как ни в чем не бывало, т.е. загрузит библиотеку из системного каталога, а не ту, что лежит рядом с тем же именем.
0
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
18.03.2015, 13:13  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Это можно сделать и без исходников.
Вряд ли это мне по силам... Но мне интересно, подскажите какую нибудь статью - я даже не знаю как это называется чтобы найти)))

Добавлено через 4 минуты
Цитата Сообщение от quwy Посмотреть сообщение
Это вряд ли. Попробуйте сами, возьмите любую DLL, и скопируйте ее под именем user32.dll рядом с вашим EXE. Запустите его. Если бы все было так просто, EXE просто не запустился бы по причине того, что в лже-user32.dll нет ожидаемых функций. Однако процесс запустится как ни в чем не бывало, т.е. загрузит библиотеку из системного каталога, а не ту, что лежит рядом с тем же именем.
Как вариант: при загрузке лже-dll не нашлось используемых функций и поэтому пришлось обратиться по зарегистрированному в системе адресу для этой dll. Но это так, мысли вслух...
0
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
18.03.2015, 13:38
Цитата Сообщение от xVahax Посмотреть сообщение
Вряд ли это мне по силам... Но мне интересно, подскажите какую нибудь статью - я даже не знаю как это называется чтобы найти)))
Все зависит от того, что вы хотите сделать. Затереть вызов GetForegroundWindow и заменить его на какую-то константу проще простого.

Цитата Сообщение от xVahax Посмотреть сообщение
Но это так, мысли вслух...
Я подробностей уже не помню, но вроде у Рихтера читал, что самые базовые DLL автоматически проецируются в адресное пространство процесса вне зависимости от его желания, и всегда именно те, которые использует сама система.
0
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
18.03.2015, 15:13  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Все зависит от того, что вы хотите сделать. Затереть вызов GetForegroundWindow и заменить его на какую-то константу проще простого.
Буду Вам весьма благодарен, если расскажете как это сделать, мне это интересно!

Добавлено через 2 минуты
Цитата Сообщение от quwy Посмотреть сообщение
Я подробностей уже не помню, но вроде у Рихтера читал, что самые базовые DLL автоматически проецируются в адресное пространство процесса вне зависимости от его желания, и всегда именно те, которые использует сама система.
Спорить не буду, т.к. не знаю)
0
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
18.03.2015, 15:23
Цитата Сообщение от xVahax Посмотреть сообщение
Буду Вам весьма благодарен, если расскажете как это сделать, мне это интересно!
Нужно взять отладчик уровня приложений, найти нужное место вызова GetForegroundWindow, пропатчить его сначала прямо в памяти, убедиться, что все работает как нужно, а потом заменить байты, соответствующие старому коду на байты нового кода в самом EXE. Но с этим лучше с новой темой в форуме по ассемблеру.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2015, 15:23
Помогаю со студенческими работами здесь

API - функции
Добрый вечер Господа!))) Вопрос - где можно найти толковую тнформацию по параметрам функции ExitWindowsEx Смысл - хочу сделать...

API функции
Народ дали вот такое задание С помощью API-функций создать графическое приложение, которое выводит 8-10 окружностей с разными атрибутами...

API функции
И снова здравствуйте, господа! как мне написать команды сохранить и открыть файл с помощью API функций? для поддержки Excel 2000. я...

API функции
создать программу описывающую сетевую карту с помощью API функции. интерфейс должен быть как при запуске диспетчера устройст.

API функции
Здраствуйте! Помогите пожалуйста с реализацией простенькой API функции кроме ExitProcess u MessageBox Буду презнателен. Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru