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

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

13.05.2022, 12:57. Показов 2916. Ответов 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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
18.05.2022, 00:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от cvi Посмотреть сообщение
Чтобы его перехватить, нужно поправить таблицу импорта. Перехватить его надо на точке входа, т.е. до того, как приложение начнёт выполнение.
Это уже ваше решение проблемы. Но я спрашивал не об этом. Я спрашивал о том какая задача.

Цитата Сообщение от cvi Посмотреть сообщение
Его запускает сама библиотека если скин незаригестрированый.
Что за скин? В смысле как эта ситуация вообще стала возможной?
Опишите предысторию.
Про возможные варианты решения потом поговорим.
1
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
18.05.2022, 12:21  [ТС]
Описывать, особо, нечего... Обычные скины для оформления прог - "AlphaControls"... Я их давно использую. Но у них есть скины защищёные. И вот на них то выскакивает это окошко. И когда было больше времени, я решил попробовать перевести делфийский код перехвата и подмены. Дело не в нескольких скинах..., а просто в решении уже этой задачи. Не привык отступать. Да и интересно это всё. Ведь познание чего то и есть развитие.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru