![]() |
eXeL@B —› Основной форум —› вызов функции внедренной длл из других длл процесса |
Посл.ответ | Сообщение |
|
Создано: 02 августа 2006 12:49 · Личное сообщение · #1 при реинженериге одной внедряемой длл я столкнулся с тем, что эта длл как то умудряется заменить одну инструкцию вызовова в одной из родных дллек процесса инструкцию вызова одной из своих функций я прошу объяснить можно ли расчитать адрес вызова НЕ выполняя внутри оригинальных ддлек ни какого кода аля LoadLibrary или GetProcAddress или что то меняя в заголовках? З.Ы. у меня возникла одна идейка - домой приду проверю, но если можно поправьте сейчас: если я выполню call $+5/ pop ebx то я получу полный адресс инструкции "pop ebx" ? могу ли я вставить этот адрес с в родную длл процесса? то есть приведет ли это к вызову инструкции "pop ebx" из этой дллки? ![]() |
|
Создано: 02 августа 2006 13:00 · Личное сообщение · #2 hybrid пишет: умудряется заменить одну инструкцию вызовова в одной из родных дллек процесса инструкцию вызова одной из своих функций Чё-та намудрил. Напииш код, что на что меняется и где. Что подразумеывается под "оригинальной дллкой" ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 02 августа 2006 13:18 · Личное сообщение · #3 допустим есть процесс в который я хочу внедрить свою длл у этого процесс в адресном прострастве есть свои дллки пускай для определенности у него есть длл под названием original1.dll в ней есть такой код: ;==================== ;original1.dll ... int 3 internal_function1_of_original1.dll: push ebp mov ebp, esp sub ebp, X ... call internal_function2_of_original1.dll ... ret X int 3 ... int 3 internal_function2_of_original1.dll: push ebp bla bla .. ret int 3 ... ;==================== далее есть длл которая внедряется в адресное пространство процесса //==================== static int __declspec(naked) thunk() { ... } //------------------------------------------------------ int __stdcall DllMain(HINSTANCE hinst, unsigned long reason, void*) { switch ( reason ) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinst); ... break; case DLL_PROCESS_DETACH: ... break; } return 1; } //====================== после внедрения этой длл в cпроецированном коде origina1.dll меняется вызов "call internal_function2_of_original1.dll" на "call address_of_thunk" я хочу понять как расчитывается address_of_thunk ![]() |
|
Создано: 02 августа 2006 16:30 · Личное сообщение · #4 |
|
Создано: 02 августа 2006 19:52 · Личное сообщение · #5 |
![]() |
eXeL@B —› Основной форум —› вызов функции внедренной длл из других длл процесса |