Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Функции и 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
14-91810
TiRAN
2003-07-12 14:57
2003.07.28
Как с помощью Delphi послать файл по e-mail?


8-91769
БРУТЪ
2003-04-05 06:49
2003.07.28
Масштабирование канваса


14-91901
Jumbo
2003-07-12 17:51
2003.07.28
Дискеты и CD-диски


14-91829
Empleado
2003-07-10 17:00
2003.07.28
Построение веб сайтов


14-91873
paxer
2003-07-11 17:09
2003.07.28
Помогите с идиотским вопросом.