eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Ошибка при вызове функции из DLL
Посл.ответ Сообщение

Ранг: 0.5 (гость)
Статус: Участник

Создано: 6 июля 2013 22:53 · Поправил: Dmitry89 New!
Цитата · Личное сообщение · #1

Мне нужно добавить MessageBoxA в программу, чтобы он выводился при запуске. Для этого я через CFF Explorer в разделе Import Adder подключил библиотеку USER32.dll, импортировал по имени MessageBoxA и нажал Rebuild Import Table. В меню Import Directory я получил FTs (IAT) для USER32.dll и сложил ее с 00400000 (Import Base)
Получил 16-ричное число - адрес для вызова MessageBoxA.
В Olly я добавил JMP на этот адрес, и функция вызова MessageBoxA автоматически определилась (выводится как JMP <&user32.MessageBoxA> ). Затем в коде я заполнил необходимые параметры через PUSH, и добавли CALL с адресом на JMP <&user32.MessageBoxA>.


Code:
  1. 006CD911      6A 00         PUSH 0
  2. 006CD913      6A 00         PUSH N.006CD91C
  3. 006CD915      6A 00         PUSH N.006CD92D
  4. 006CD917      6A 00         PUSH 0
  5. 006CD919      E8 FF871400   CALL <&user32.MessageBoxA>


Проблема в том, что программа просто вылетает на строчке CALL. Я думал что возможно неправильно задаю параметры. Чтобы это проверить я сделал свою DLL с фуекцией f(), которая вызывает мессенжбокс. Затем я подключил ее аналогично тому, как это делал с USER32. Но к сожалению CALL тоже крашит программу. dll я проверил и она нормально подцепляется программой, которую я написал в VC2010, т.ч. проблема явно не в ней. Если кто с таким сталкивался, подскажите как можно это исправить?

Ранг: 281.6 (наставник)
Статус: Участник
Destroyer of protectors

Создано: 6 июля 2013 23:19 New!
Цитата · Личное сообщение · #2

Dmitry89
где exe?

Ранг: 0.5 (гость)
Статус: Участник

Создано: 7 июля 2013 00:25 New!
Цитата · Личное сообщение · #3

С проблемой разобрался, надо было адрес предварить DWORD.


Ранг: 1997.8 (!!!!)
Статус: Модератор
retired

Создано: 7 июля 2013 12:31 New!
Цитата · Личное сообщение · #4

Видимо, на этом можно закрыть.
 eXeL@B —› Вопросы новичков —› Ошибка при вызове функции из DLL
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS