Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-91745
explorer
2003-07-15 07:46
2003.07.28
Обработка нажатия кнопки


3-91672
АТ
2003-06-28 02:10
2003.07.28
Несовместимость типов Float в InterBase и типа Real в Delphi


14-91836
Hollywood
2003-07-10 19:10
2003.07.28
А как вообще зарегистрироваться на этом форуме?


6-91781
MegaVolt
2003-05-19 16:39
2003.07.28
Почему виснет функция WNetOpenEnum..WNetEnumResource..WNetCloseEn


3-91662
Sensor
2003-07-05 18:23
2003.07.28
Запихнуть две таблицы в одну DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский