Сейчас на форуме: zds, UniSoft (+5 невидимых)

 eXeL@B —› Программирование —› Вопрос по модификации секции экспорта в запущенном процессе
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 23:43
· Личное сообщение · #1

Столкнулся с проблемой (проконсультируйте):

1) Запущен процесс, в него я заинжектил свою dll;
2) в своей dll написал функцию;
3) хочу что бы процесс вызывал мою функцию, вместо некоторой экспортируемой (например из kernel32.dll);
4) делаю это по классике через секцию импорта и подмену функции GetProcAddress;
5) все работает.

Теперь о проблеме:
если процесс - это вирус, и адрес необходимой экспортируемой функции осуществляется через эмуляцию GetProcAddress, то ни чего не работает по понятной причине, а подменить функцию очень хочется все равно, что делать???

Попытка была следующей:
после инжекта свой dll разобрал секцию экспорта kernel32.dll, и заменил RVA адрес необходимой функции на свой. Результат: обычный GetProcAddress перестал работать - выдает какую-то хрень (вопрос: почему?), мало того, я попытался тупо RVA адрес заменить на тот же самый (т.е. память в результате не изменилась), но посли попытки писать опять же GetProcAddress перестал работать.

При необходимости записи в область памяти где расположена секция экспорта права доступа менял на запись, потом вернул в первоначальный вид.

Кто сталкивался поясните плиз ....



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2013 23:53
· Личное сообщение · #2

Может кто знает другой подход к решению моей задачи?

B еще одно ограничение при решении задачи: подменить нужно очень много API функций и вызывающий процесс адреса этих функций получают не с помощью импорта или GetProcAddress




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 февраля 2013 00:29
· Личное сообщение · #3

Подмена в экспорте должна нормально работать, в том числе и для GPA. Естественно, проты это могут палить, но вирусня вряд ли. Ищи у себя ошибки.



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 февраля 2013 00:41
· Личное сообщение · #4

А подменять по логике вещей нужно RVA (т.е. адрес ячейки памяти для первой эксп. функции
export_section->AddressOfFunctions + base)?
Может я что-то не то подменяю?


И мне остается не понятным момент:

> мало того, я попытался тупо RVA адрес заменить на тот же самый (т.е. память в результате не изменилась), но посли попытки писать опять же GetProcAddress перестал работать.



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 февраля 2013 01:23
· Личное сообщение · #5

Сори друзья, нашел (я возвращал уже подмененный мной адрес, вот он и другой), все работает ...


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