Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36

Правка таблицы импорта

13.05.2022, 12:57. Показов 3357. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Вопрос по правке таблицы импорта. Мне попался делфийский код по перехвату и подмене "MessageBoxA" в user32. Вот ссылка: https://pastebin.com/00FbHHwN
Но я сишник... и решил переписать его под С++. Всё нормально..., но есть НЮАНС (!) - на RAd Studio 2010 нормально компилируется и работает, а вот RAd Studio 10.4.2 и RAd Studio 11 - так же нормально компелируется..., сама прога работает, но перехвата и подмены не происходит! Не пойму... - в чём причина? Код абсолютно одинаковый. Нашёл в инете ещё пару кодов. Переделал их "под себя" - та же картина!... - в 2010 идёт подмена, а в 10.4.2 нет. Не находит он "MessageBoxA" в билотеке. Подскажите пожалуйста в каком направлении смотреть. За ранее благодарен за любую подсказку.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2022, 12:57
Ответы с готовыми решениями:

Получение таблицы импорта pe файла
С экспортом разобрался, теперь бы получить импорт. Нашел статьи но не могу разобраться( Добавлено через 49 минут type ...

Файл без таблицы импорта
Вопрос может быть и в тему, но мне очень интересно. Как можно создать полноценный исполняемый файл для винды, не использующий таблицу...

Массовое отображение и правка файлов в виде таблицы
Добрый день. Возникла необходимость переработать большое количество файлов, а последний раз программировать я пытался лет десять назад, не...

55
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
18.05.2022, 00:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от cvi Посмотреть сообщение
Чтобы его перехватить, нужно поправить таблицу импорта. Перехватить его надо на точке входа, т.е. до того, как приложение начнёт выполнение.
Это уже ваше решение проблемы. Но я спрашивал не об этом. Я спрашивал о том какая задача.

Цитата Сообщение от cvi Посмотреть сообщение
Его запускает сама библиотека если скин незаригестрированый.
Что за скин? В смысле как эта ситуация вообще стала возможной?
Опишите предысторию.
Про возможные варианты решения потом поговорим.
1
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
18.05.2022, 12:21  [ТС]
Описывать, особо, нечего... Обычные скины для оформления прог - "AlphaControls"... Я их давно использую. Но у них есть скины защищёные. И вот на них то выскакивает это окошко. И когда было больше времени, я решил попробовать перевести делфийский код перехвата и подмены. Дело не в нескольких скинах..., а просто в решении уже этой задачи. Не привык отступать. Да и интересно это всё. Ведь познание чего то и есть развитие.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
18.05.2022, 13:03
Цитата Сообщение от cvi Посмотреть сообщение
Но у них есть скины защищёные. И вот на них то выскакивает это окошко. И когда было больше времени, я решил попробовать перевести делфийский код перехвата и подмены.
Уже яснее.
Если я правильно понял:
1) Вы используете некий сторонний компонент для С++ Builder\Delphi
2) Этот компонент в определенный момент времени (когда?) вызывает MessageBox
3) Вам надо перехватить этот MessageBox

Так?
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
18.05.2022, 14:27  [ТС]
Абсолютно всё верно. Выскакивает до того, как приложение начнёт выполняться. Поэтому всякие FindWindow тут не подходят. Только перехват и подмена до запуска. И оно работает в 2010. И перехватывает именно MessageBoxA. Осталось добиться того же в 10.4. И именно в С++, та как в делфи и там и там работает.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
18.05.2022, 21:40
Цитата Сообщение от cvi Посмотреть сообщение
Осталось добиться того же в 10.4. И именно в С++, та как в делфи и там и там работает.
С этим все ясно.

Цитата Сообщение от cvi Посмотреть сообщение
Только перехват и подмена до запуска.
Почему вы уверены, что в 10.4 в этот момент используется именно MessageBoxA, а не другая функция?
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
18.05.2022, 23:02  [ТС]
А что ещё может использоваться?... Библиотека стороннего компонента то работает одинаково... Независимо от версии компилятора... И в делфи то код не менялся!... И работает, выходит, независимо от того, на какой версии он будет откомилен. Вот скрин с 'Hex Works', сделанный с .exe 10.4.
Миниатюры
Правка таблицы импорта  
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
19.05.2022, 00:37
cvi, соберите мне в 2010 это приложение с AlphaControls, но БЕЗ перехвата. Т.е. чтобы оно также показывало окно, как в 10.4 сейчас.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
19.05.2022, 01:33  [ТС]
Вот оно...
Вложения
Тип файла: rar 2010.rar (1.25 Мб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
19.05.2022, 01:39  [ТС]
Я Вашу идею понял... Этой надписи нет. Осталась только надпись и текст самого окошка.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
21.05.2022, 18:59  [ТС]
Вопрос остался не решённым... Какие есть идеи?
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
21.05.2022, 21:05  [ТС]
Посмотрите пожалуйста - в архиве два файла .doc. Один файл --- 2010 читает user32, а другой --- 10.4 читает user32. В списке, что читает 2010 - есть MessageBoxA, а в списке, что читает 10.4 - его нет. Как такое может быть?... Они что, разные библиотеки читают?...
Вложения
Тип файла: rar 0.rar (7.7 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
22.05.2022, 14:26  [ТС]
Да перехватывал я MessageBoxW... Подмены только не происходит и... не произойдёт! Потому, что перехватывать надо MessageBoxА. Делфи то ловит MessageBoxА (!) и... - это делает благополучно! Писал я Вам об этом уже не раз.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
22.05.2022, 15:30
Цитата Сообщение от cvi Посмотреть сообщение
Писал я Вам об этом уже не раз.
Я пропущу мимо ушей ваше раздражение.

По теме:
В общем, появилась идея.
Добавьте перед функцией main вот такой код
C++
1
2
3
4
void dummy() 
{
    MessageBoxA(0, "", "", 0);
}
Вызывать ее не надо, просто добавьте.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
22.05.2022, 17:48  [ТС]
Спасибо большое..., но ничего не дало. С MessageBoxA даже не проходит строку if( (PVOID)Thunk->u1.Function == __ADDRES ), а с MessageBoxW строка if( (PVOID)Thunk->u1.Function == __ADDRES ) пропускает, но подмены не происходит в последующем коде... и не произойдёт, потому что мне надо каким то образом найти именно MessageBoxA в user32. Тогда всё сразу получиться. Я просто не знаю как это сделать. Почему 11 его там не находит, а 2010 находит... Делфи, ведь, тоже находит... и там и там...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
22.05.2022, 18:09
Цитата Сообщение от cvi Посмотреть сообщение
но ничего не дало.
Совсем ничего? Теперь в дампе таблицы импорта эта функция должна была появиться.

Еще попробуйте код перехвата запустить до main.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
22.05.2022, 19:29  [ТС]
Агааа.... Срабатывать - оно не срабатывало... Но сейчас посмотреть - появиться ли MessageBoxA в дампе таблицы импорта...

Добавлено через 4 минуты
Нет его в списке!...( Всё по прежнему.

Добавлено через 5 минут
Почему не получается найти MessageBoxА в библиотеке?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2022, 19:29

Инструменты для редактирования таблицы импорта pe?
Доброго! Есть бинарник под десятку, хочу завести его под семёркой. Он использует несколько winapi из user32, kernel32 и др, которых в...

Контрол для импорта таблицы в файл Word
Приветствую, Друзья! Подскажите контрол для импорта в вордовский файл таблицы, состоящей из пяти столбцов(первые три столбца описывают...

После импорта таблицы, пропадает сортировка - настоящая головоломка
Есть БД. Возникла необходимость обновить таблицу (набранную в точно такой-же, но из-вне). Вначале импортом воспользовался-проблема (ниже),...

Как получить имена Dll файлов из таблицы импорта
Добрый день. Нужно получить имена Dll файлов из таблицы импорта и при этом иметь возможность заблокировать запуск приложение....

Автоматическое создание формы на основе созданной таблицы в результате импорта данных (VBA)
Доброе время суток, Уважаемые! Подскажите, пожалуйста, решение задачи. Задача: Необходимо после импорта данный из разных однотипных...


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

Или воспользуйтесь поиском по форуму:
56
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru