Форум: "Потрепаться";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
ВнизФункции и DLL Найти похожие ветки
← →
kullibin (2003-07-03 13:08) [0]Здравствуйте, подскажите пожайлуста, как из DLL-ки вытащить функцию или процедуру (полностью). Например из Kernel32.dll. Зарание благодарен.
← →
Digitman (2003-07-03 13:21) [1]хм .. "вытащить"... заноза что ли ?)
← →
Axis_of_Evil (2003-07-03 13:22) [2]LoadLibrary
GetProcAddress
...
← →
kullibin (2003-07-03 13:32) [3]>Digitman
Зароза не заноза но по зарез надо!
← →
Игорь Шевченко (2003-07-03 13:47) [4]Ну точно Кулибин :) Полностью - это надо очень долго определять размер процедуры :)))
← →
Digitman (2003-07-03 13:47) [5]
> по зарез надо
"позарез" пишется слитно)
ну а коль "надо", изволь прокомментировать это самое слово "вытащить" - совершенно непонятно, что ты под ним подразумеваешь... не телепат я, к сожалению))
← →
Morfein (2003-07-03 13:55) [6]Как вытащить? Да просто...:
1. Дизассемблируешь библиотеку (kernel32.dll)
2. Пишешь тестовую программу, которая вызывает нужную тебе функцию.
3. При помощи отладчика (как правило он есть в дизассамблере) пошагово отслеживаешь выполнение нужной функции и записываешь опкоды, операнды и адреса кода и данных на листочек.
4. Изменяешь начальные условия таким образом, чтобы в функции выполнялись все условные переходы и повторяешь пункт (3) для каждого варианта начальных условий, т.к. за один проход все варианты не охватишь...
5. С учётом записанного на листочек, пишешь свою функцию на ассемблере. Особое внимание обрати на записанные адреса - их придётся пересчитывать под новый базовый адрес. Возможно придётся подключить некоторые сторонние ресурсы, которые есть в исходной библиотеке (типа строк, или STRINGTABLE"ов, или диалоговых ресурсов)... Ресурсы тебе также подскажет дизассемблер...
Удачи...
← →
Игорь Шевченко (2003-07-03 14:04) [7]Morfein © (03.07.03 13:55)
Только не Kernel32.dll - она как и прочие MSовские часто используемые библиотеки оптимизирована под минимальное количество Page faults и простым дизассемблером там можно до старости ковыряться.
← →
Morfein (2003-07-03 14:06) [8]А кто сказал, что программы писать легко? ;)
← →
Digitman (2003-07-03 14:15) [9]Игорь, ну не стращай народ ядерно-страничными промахами, а то всех кулибиных распугаешь) .. На ком как не на кулибиных великое государство российское стояло и стоять будет))
← →
AlexRush (2003-07-03 15:17) [10]Нет никакой гарантии, что в коде между entrypoint"ом функции и последним ret"ом нет переходов jmp и условных. (Кто не верит - IDA в руки и в перет. Я такой код не раз наблюдал.)
Таким образом, ЧТО считать телом функции ?? Внутри той же kernel32 многие ф-и подобным образом "размазаны" по всему модулю.
← →
Morfein (2003-07-03 21:00) [11]>> AlexRush
Cпециально для таких дотошных людей как Вы, я написал пункт (4) :))
← →
kullibin (2003-07-04 16:37) [12]>Digitman
Не боись не распугает. Как были мы, так и будем!!!
>Morfein
А проще никак нельзя? Я до такого пока еще не дошел, хотя стараюсь.
← →
Cobalt (2003-07-04 18:32) [13]>kullibin (04.07.03 16:37)
Нет, проще уже некуда.
← →
kullibin (2003-07-09 12:29) [14]>Cobalt
А пример полностью скинуть можешь?
← →
pasha676 (2003-07-09 13:05) [15]Пример ломания dll? Оригинально. В каком виде интересно? Наверное в виде кинофильма с экрана.
← →
kullibin (2003-07-10 13:01) [16]>pasha676
Зачем сразу кинофильм. Просто код как это делается. Или еще лучше аналог функции RegisterServiceProcess выдернутой из Kernel32.DLL
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c