Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Вниззаписать свою функцию в стороннюю DLL... Найти похожие ветки
← →
mr. Faga (2004-04-08 15:39) [0]подскажите как сделать сабж, плииз, или хотя бы что нужно курить для того чтоб понять как это сделать!
← →
Алхимик © (2004-04-08 15:42) [1]Нужно бросить курить, чтобы понять, что этого сделать нельзя.
← →
Digitman © (2004-04-08 15:42) [2]курить нужно ту самую траву .. а то не знаешь .. не маленький ужо ..
← →
Гаврила (2004-04-08 15:42) [3]в смысле что сторонняя DLL без сорса ?
← →
Kerk © (2004-04-08 15:45) [4]сделать это можно, только геморрой
← →
mr. Faga (2004-04-08 15:46) [5]Господа Алхимик © и Digitman ©, ну Вы очень оргинальны... а по теме ответить не судьба, я прав?
← →
Алхимик © (2004-04-08 15:46) [6]Нужно бросить курить, чтобы понять, что этого сделать нельзя.
← →
Digitman © (2004-04-08 15:47) [7]т.е. покурил и заполучи, фашист, геморрой
← →
Verg © (2004-04-08 15:51) [8]
> Digitman © (08.04.04 15:47) [7]
> т.е. покурил и заполучи, фашист, геморрой
Это же каким местом фашист должен курить, чтобы заработать геморрой? :)))
← →
mr. Faga (2004-04-08 15:51) [9]мда, а я думал подскажут что-нить... :(
а в ответ только идиотские коменты :(
← →
Digitman © (2004-04-08 15:53) [10]а как ты хотел ? на идиотский вопрос - идиотские "коменты" ..
← →
Гаврила (2004-04-08 15:55) [11]>>Verg © (08.04.04 15:51) [8]
LOL
да уж, фашистам не позавидуешь :-)
← →
Тимохов © (2004-04-08 15:55) [12]теоритически можно.
но теоритически, как известно, можно все...
← →
mr. Faga (2004-04-08 15:56) [13]а что идиотского в вопросе?
ну не знаю я как это делается, хотя такое сделать имхо можно...
ведь делают же подобные вещи всякие упавщики типа AsPack или я не прав?
← →
Digitman © (2004-04-08 15:57) [14]угу .. можно все .. даже "геморроем" траву курить
← →
Тимохов © (2004-04-08 15:58) [15]Сергей, но теоретически то можно.
← →
serge35 (2004-04-08 15:58) [16]Кури Беломор - от него армат нежнее...
← →
Digitman © (2004-04-08 16:00) [17]
> всякие упавщики
они-то , упавщики. может, и делают .. а вот тебе "в ломы" объяснить, что есть "записать свою функцию в стороннюю DLL" .. зато про "курево" ты шустро намекнул ..
← →
panov © (2004-04-08 16:02) [18]Пишешь свою DLL, с идентичными названиями функций и параметров, добавляешь нужную функцию, вместо чужой DLL подклыдываешь свою. При вызове "не твоей" функции выполняешь функцию из чужой dll.
← →
Digitman © (2004-04-08 16:04) [19]
> Тимохов © (08.04.04 15:58) [15]
теоретически можно и на голову себе встать своими же пятками
> mr. Faga
скажи, зачем тебе это "геморройное курение", и получишь тысячу рекомендаций, как без "курительного геморроя" решить ту же задачу
← →
mr. Faga (2004-04-08 16:04) [20]задача следующаа, есть дллка, мне ее хочется зашифровать и запихнуть в нее функцию расшифровки, думаю насчет первой части тут все понятно, а вот со второй частью что-то у меня проблемы...
я и спросил что нужно почитать как сделать нечто подобное, вот.
Надеюсь понятно объяснил.
← →
Digitman © (2004-04-08 16:05) [21]
> мне ее хочется зашифровать
нахрена ?
← →
Матлабист (2004-04-08 16:10) [22]1. Изучаешь сегменты DLL. Прикидываешь, куда вставить свои.
2. Делаешь свою DLL с однй функцией. Указываешь нужным образом ImageBase
3. Подкидываешь в исходную DLL новую секцию кода (секцию данных, если необходимо)
4. Смотришь в твоей relocation table какие адреса там есть и аккуратно подвидываешь их в искомую DLL.
5. Если твой код требует инициализации, медитируешь над объеинением PROCESS_ATTACH, THREAD_ATTACH.
6. Пересобираешь заново все секции DLL.
← →
serge35 (2004-04-08 16:25) [23]7.Досташь пачку сигарет и куришь.
← →
Digitman © (2004-04-08 16:26) [24]
> Матлабист
ты видать заболел
при "как"-постановке вопроса тебе придется читать цикл лекций по граду контрвопросов, а-ля "что такое" :
- сегменты DLL
- ImageBase
- секция кода, секция данных
- relocation table
- PROCESS_ATTACH, THREAD_ATTACH
- и т.д. и т.п.
← →
Матлабист (2004-04-08 16:30) [25]> Digitman © (08.04.04 16:26) [24]
Если у человека есть интерес, почему бы и нет. А нету интереса --- и вопросов не будет.
← →
mr. Faga (2004-04-08 16:41) [26]
> Digitman ©
Про сегменты я в курсе я в курсе, про relocation table тоже :))
а вот остальное к сожалению даже не представляю :(
> Матлабист
а по подробней можно, чем смотреть, чего читать по теме и тд :)
Интерес есть :)))
← →
y-soft © (2004-04-08 17:59) [27]IMHO самый дельный ответ - panov © (08.04.04 16:02) [18]
Просто и действенно, можно не только добавить новые функции, но при желании и изменить поведение существующих...
Остальное - их серии "как делать хирургические операции с помощью топора" - теоретически можно, но практически бесполезно...
← →
Mim1 (2004-04-08 21:25) [28]Зашифровть чтобы враг не добрался? А если расшифровщик лежит рядом что помешает врагу им воспользоваться? :)
← →
Saturn_ (2004-04-08 22:20) [29]2 mr. Faga
Те че врема девать некуда? Фигней заниматся?
2 Mim1 (08.04.04 21:25) [28]
расшифровщик зашифрован чтоб враг немог его розшифровать и потом им воспоьзоватся для расшифровки :))
← →
mr. Faga (2004-04-09 15:33) [30]2Saturn_
Время есть куда девать, но диплом-то надо сделать...
У меня тема диплома -- "Защита динамических библиотек от несанкционированного распространения", вот теперь и ищу инфу как это сделать :)
← →
Рамиль © (2004-04-09 16:17) [31]
> Защита динамических библиотек от несанкционированного распространения
Слушай, а зачем тебе чужие dll защищать?!.
← →
mr. Faga (2004-04-09 16:25) [32]ну задача так прям не стояла, те не было конкретных указаний на чужие, так что можно и свои, вот тока как, я что-то не представляю :(
← →
Матлабист (2004-04-09 16:28) [33]Основной ресурс это
http://www.osdever.net/docs/PECOFF.pdf?the_id=49
Сегменты, кстати, не DOS-овые (в смысле реального режима). Итак, в кратце. Приложение Windows выполняется в плоском 4 Гбайтном адресном пространстве. Каждый в своем. Вопрос в том, что не под всеми 4 Гб расположена физическая память. Если вы промазали и попали в пустое место, возникает Access violation. При загруке DLL/EXE в этом пространстве резервируются и загружаются секции, описанные в загружаемом файле. Каждая секция имеет начальный адрес, длину, флаги, а также смещение и длину в файле. Первый этап загрузки DLL/EXE состоит в том, что 1) для каждой секции резервируется, выделяется и заполняется нулями виртуальная память (в 4 Гб пространстве) и 2) копируются данные из файла. Некоторые секции имеют заданный заранее формат (например, таблицы экспорта/импорта). Поскольку DLL загружается динамически, может случиться так, что те адреса, на которые "планировалось" загрузить DLL, окажутся уже занятыми. В этом случае используется таблица релокации, которая содержит список всех адресов, которые нужно настроить (т. е. по сути добавить разницу между "планируемым" и "полученым адресом"). Сегменты в EXE-файле, обычно, неперемещаемы (по той причине, что при загрузке EXE-файла предполагается, что вся память пуста).
Еще в образе EXE/DLL-файла есть указатель на точку входа --- адрес, с которого начинается выполнение EXE-файла. Для DLL єто указатель на специальную функцию DllMain, которая вызывается для того, чтобы DLL могла проинициализировать/деинициализируется свои данные. Этой функции передается один из параметров DLL_PROCESS_ATTACH, DLL_THREAD_ATTACH, DLL_THREAD_DETACH, DLL_PROCESS_DETACH всякий раз, когда либо процесс загружает DLL, либо когда новый поток обращается к DLL. Более подробно уже посмотри у Рихтера, либо в MDSN.
Итак, навскидку... чтобы добавить функцию в DLL, нужно написать программу, которая разберет секции этой DLL, добавить новую секцию/секции, перезапишет ее.
← →
Digitman © (2004-04-09 16:52) [34]
> У меня тема диплома -- "Защита динамических библиотек от
> несанкционированного распространения", вот теперь и ищу
> инфу как это сделать :)
ну считай, что облажался ты крепко, выбрав тему именно в такой формулировке)
ибо пока распространение происходит в рамках одной и той же ОС-среды/платформы, защититься от несанкционированного распространения попросту невозможно ...
а вот защита (в той или иной степени) от несанкционированного использования (!!) распространенного тем или иным образом в тех или иных целях некоего ПО - это задача вполне реальная на практике
и для реализации подобной задачи , imho, вовсе не обязательно сразу бросаться менять образ и структуру РЕ-файла ..
← →
Матлабист (2004-04-09 16:58) [35]Да, кстати, шифрование и ижо с ним могут сказаться на производительности ;) Если пошифроватьсегмент кода, то теряется смысл в самой DLL --- другой процесс не сможет использовать в памяти копию этой DLL-ки.
← →
mr. Faga (2004-04-10 10:47) [36]
> ну считай, что облажался ты крепко, выбрав тему именно в
> такой формулировке)
Это я уже понял :(((
> а вот защита (в той или иной степени) от несанкционированного
> использования (!!) распространенного тем или иным образом
> в тех или иных целях некоего ПО - это задача вполне реальная
> на практике
Подскажи как сделать или что почитать по теме :)))
← →
Digitman © (2004-04-10 11:20) [37]
> mr. Faga
одна из неплохих идей предложена в [32]
другая наипростейшая (но далеко не наилучшая) по реализации идея - использование системы защиты инф-ции с пом. электр.ключей HASP, HARDLOCK, NOVEX
← →
mr. Faga (2004-04-10 11:35) [38]
> Digitman ©
[32] это куда читать?
В аське можешь объяснить подробнее?
← →
Digitman © (2004-04-10 12:48) [39]пардон, не в [32], а в [35]
← →
mr. Faga (2004-04-10 12:56) [40]
> Digitman ©
это понятно, осталось тока понять с чего начинать :)))
можешь подсказать как зашифрованный кусок разворачивать и передавать ему управление?
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.035 c