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

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

13.05.2022, 12:57. Показов 3374. Ответов 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
15.05.2022, 20:27
Студворк — интернет-сервис помощи студентам
cvi, давайте вернемся к вашему предложению:
Цитата Сообщение от cvi Посмотреть сообщение
Я Вам могу хоть сейчас два .ехе скомпилировать и скинуть
Скиньте.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
15.05.2022, 21:10
Могу ошибаться, но может проблема в том, что MessageBoxA - неюникодная версия функции.
А MessageBoxW (или MessageBox) - юникодная.
winuser.h (билдер XE5):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
WINUSERAPI
int
WINAPI
MessageBoxA(
    __in_opt HWND hWnd,
    __in_opt LPCSTR lpText,
    __in_opt LPCSTR lpCaption,
    __in UINT uType);
WINUSERAPI
int
WINAPI
MessageBoxW(
    __in_opt HWND hWnd,
    __in_opt LPCWSTR lpText,
    __in_opt LPCWSTR lpCaption,
    __in UINT uType);
#ifdef UNICODE
#define MessageBox  MessageBoxW
#else
#define MessageBox  MessageBoxA
#endif // !UNICODE
 
#if defined(_M_CEE)
#undef MessageBox
__inline
int
MessageBox(
    HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
    )
{
#ifdef UNICODE
    return MessageBoxW(
#else
    return MessageBoxA(
#endif
        hWnd,
    lpText,
    lpCaption,
    uType
        );
}
#endif  /* _M_CEE */
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
16.05.2022, 01:03  [ТС]
Выскакивает именно MessageBoxA. Это легко проверить по перехвату, подмене. Повторюсь... - код делфи, откомпиленый на разных версиях, работает!
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
16.05.2022, 01:07  [ТС]
Спасибо большое, что решили помочь... Отправляю...
Вложения
Тип файла: rar exe.rar (3.28 Мб, 14 просмотров)
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
16.05.2022, 12:54  [ТС]
Что то удалось увидеть? Есть какие нибудь идеи?...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
16.05.2022, 13:00
Цитата Сообщение от cvi Посмотреть сообщение
Что то удалось увидеть? Есть какие нибудь идеи?...
Пока ничего. Я ж не целыми днями на форуме. Вечером посмотрю.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
16.05.2022, 15:33  [ТС]
Понял... Спасибо! Пожалуйста извините.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 08:15
cvi, а можете ваши два проекта в 10.4.2 и 2010 запаковать и сюда прикрепить? Если там что-то не предназначенное для для сторонних глаз, то лучше тогда сделайте два консольных проекта (мой код для этого вполне пригоден), в каждой из версий соответственно, и прикрепите сюда.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
17.05.2022, 11:20  [ТС]
Конечно... Спасибо большое что не отказываете в помощи.
Вложения
Тип файла: rar all.rar (413.9 Кб, 8 просмотров)
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 13:00
cvi, Да, это я посмотрю, как доберусь до винды. А пока все-таки сделайте два именно консольных проекта, с кодом, который я выше привел. И просто скажите одинаково они работают или нет.

Что касается вашего кода, то насколько я понял, нужный вам MessageBox вызываете не вы, а библиотека где-то внутри себя?
Если да, то два предположения:
1) Возможно более новая версия библиотека уже использует W версию MesageBox, поэтому вы ее и не ловите.
2) Возможно боле новая версия вообще не использует системный MessageBox, а рисует полностью свой собственный.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
17.05.2022, 13:45  [ТС]
Да, Вы абсолютно правы - MessageBoxА вызывается из библиотеки где то внутри себя. И..... - вызывается именно MessageBoxА! Я загружал .ехе в Hex Works и там видно, что именно MessageBoxА! Ваши версии очень правдоподобны, если бы не одно НО... - делфийский код то, ссылку на который я давал, работает и там и там!... Скины то "работают" во всех версиях RadStudio.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 13:49
Цитата Сообщение от cvi Посмотреть сообщение
НО... - делфийский код то, ссылку на который я давал, работает и там и там!
Для гарантированного заключения нужно хорошо разбираться во внутренностях VCL (чего про меня сказать нельзя), но только одно это (процитированное) опять же не означает, что С++ и Delphi используют на 100% одинаковые части VCL.

Все-таки первым делом проверьте консольные варианты, без VCL вообще (тот код, что я привел ранее). Это позволит исключить много факторов.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
17.05.2022, 14:45  [ТС]
Хорошо, я попробую позже и напишу...

Добавлено через 36 минут
Консольники (без VCL) и там и там работают абсолютно одинаково! Срабатывает MessageBoxA(0, "test", "Unregistered skin", 0);

Добавлено через 11 минут
...Если вместо MessageBoxA пишу MessageBox или MessageBoxW, то сначала срабатывает MessageBoxA(0, "test", "Unregistered skin", 0); а затем MessageBoxA(0, "test", "test", 0); Если изменяю хоть на одну букву имя "Unregistered skin", то окно открывается и сразу закрываеться. Одинаково и там и там!
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 14:47
cvi, ну вот, таким незамысловатым образом мы установили, что код перехвата тут уже не при чем, значит мучить его дальше нет смысла. Однозначно понятно, что нюанс кроется в реализации VCL в разных версиях среды.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
17.05.2022, 15:20  [ТС]
Я уже это понял... Получается... - в C++ и в Delphi используются разные реализации VCL. Спасибо большое за помощь! Есть у меня ещё один вопрос, который я давненько никак не могу для себя решить... Кручусь вокруг да около... Но вопрос конкретно не в эту тему. Не знаю... - можно его тут задать ? Если да, то я тогда опишу суть проблемы...
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
17.05.2022, 15:29
Цитата Сообщение от cvi Посмотреть сообщение
можно его тут задать ?
лучше сформулируйте в отдельной теме - обсуждение может оказаться полезным и для других, а отдельная тема легче гуглится.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 16:41
Цитата Сообщение от cvi Посмотреть сообщение
Получается... - в C++ и в Delphi используются разные реализации VCL
Можете в 10.4.2 попробовать начать перехватывать W версию. Только не забудьте исправить аргументы.
Или поискать что вызывается вместо нее и перехватывать уже его.

Цитата Сообщение от cvi Посмотреть сообщение
Если да, то я тогда опишу суть проблемы...
Тут действительно лучше новую тему сделать, чтобы правила форума не нарушать.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
17.05.2022, 18:20  [ТС]
Пробовал уже в 10.4.2 W версию. Поствил const wchar_t, wcscmp. Строка if( (PVOID)Thunk->u1.Function == __ADDRES ) тогда срабатывает. Т.е. - адрес в библиотеке такой есть..., но подмены не происходит...

Добавлено через 13 минут
Хотелось бы конечно докопаться до сути...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
17.05.2022, 23:35
cvi, в какой момент программа должна выдавать этот MessageBox, что заставляет ее это сделать? Опишите чего вы пытаетесь достичь.
0
0 / 0 / 0
Регистрация: 13.05.2022
Сообщений: 36
18.05.2022, 00:00  [ТС]
Мне надо наоборот, что бы MessageBoxA с заголовком "Unregistered skin" не выскакивал перед запуском проги. Его запускает сама библиотека если скин незаригестрированый. Таковых не много..., но они есть. Чтобы его перехватить, нужно поправить таблицу импорта. Перехватить его надо на точке входа, т.е. до того, как приложение начнёт выполнение.

Добавлено через 2 минуты
Всё это работает, но... только в 2010. А в 10.4 оно выскакивает. А от него я уже отхожу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2022, 00:00

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru