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

 eXeL@B —› Крэки, обсуждения —› Опкод EBFE в начало системной функции
<< . 1 . 2 .
Посл.ответ Сообщение


Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 29 июля 2005 18:08
· Личное сообщение · #1

Господа,прошу помочь мне разобраться в следующей ситуации:
необходимо разместить опкод EBFE в начало системной функции LoadLibraryA в чужом процессе,чтобы таким образом отследить обращение чужого процесса к данной функции и получить тем самым некоторую информацию (имя загружаемой библиотеки,обратный адрес функции).Собственно в чём проблема...

const
Code : WORD = $FEEB;
var
ProcAddress : Pointer;
Temp_Protect : Cardinal;
OriginalData : WORD;
nBytesRead, nBytesWritten : Cardinal;
begin
ProcAddress := GetProcAddress(GetModuleHandle('Kernel32.dll'), 'LoadLibraryA');

VirtualProtectEx(processInfo.hProcess, ProcAddress, 2, PAGE_EXECUTE_READWRITE, Temp_Protect);
ReadProcessMemory(processInfo.hProcess, ProcAddress, @OriginalData, 2, nBytesRead);
WriteProcessMemory(processInfo.hProcess, ProcAddress, @Code, SizeOf(WORD), nBytesWritten);
VirtualProtectEx(processInfo.hProcess, ProcAddress, 2, Temp_Protect, Temp_Protect);
...
end;

...так вот функция VirtualProtectEx возвращает C0000018 (STATUS_CONFLICTING_ADDRESSES) и естесственно вся остальная констукция кода тоже рушится .
Хотелось бы узнать,почему так происходит ?
Т.к. такая же кодовая операция только с адресом,к примеру,точки входа проходит без проблем,т.е. на EP размещается необходимый опкод.
Читал в статьях Ms-Rem'а про "сплайсинг" API-функций,в которых он говорит,что перехват API,находящихся в чужом процессе, - весьма неудобная штука.Следовательно любознательный вопрос - почему это так (неудобно) ?
Далее он приводит просто монструозные коды внедрения собственных библиотек в чужой процесс путём создания удалённого процесса...
Собственно у меня дилемма - как поступить,если мне всего лишь необходимо узнать имя загружаемой библиотеки и обратный адрес функции LoadLibraryA,загружающей эту библиотеку .
Или как всё-таки заставить вышеприведённый код работать без ошибок ?

Весьма надеюсь на любые предложения,советы,вопросы с вашей,господа,стороны...

-----
the Power of Reversing team




Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 05 августа 2005 16:59
· Личное сообщение · #2

Ara пишет:
Идея достаточно хорошая

Хорошая идея зациклить Kernell32.dll ??? Ну перенаправить еще понял бы, но не зациклить...

-----
Research is my purpose





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 05 августа 2005 18:24
· Личное сообщение · #3

Error_Log
Под хорошей идеей имелось ввиду поставить в начало перехватываемой АПИ ССh (что Вы отвергли ввиду невозможности этого по непонятным причинам). Как выяснилось позже, надо перехватывать АПИ протектора, поэтому автор прав, что протектор может по своему истолковать int3.
А чем собственно не нравится идея зациклить какую-нить функцию в kernel32? Вариант не очень красивый, согласен, но для достижения цели вполне подходящий...




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 05 августа 2005 22:04
· Личное сообщение · #4

Господа,давайте всё же не отклонятся от актуальных вопросов,а то я уже начинаю впадать в транс от того,что функция GetModuleBaseName никак не хочет работать как надо .
Может проблема в библиотеке PsAPI.dll, в которой эта функция объявлена ?
Кстати,пробовал использовать функцию GetModuleFileName (из той же библиотеки) - тот же результат :
Ошибка 6 - ERROR_INVALID_HANDLE
Может кто-то встречался с подобным ?

-----
the Power of Reversing team



<< . 1 . 2 .
 eXeL@B —› Крэки, обсуждения —› Опкод EBFE в начало системной функции
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати