Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
11-1065880939
Hamer1
2003-10-11 18:02
2004.05.02
Как экстрактировать Ресурс


3-1081234012
Patrick
2004-04-06 10:46
2004.05.02
Использование коллекции Properties для ADODataSet


3-1080810273
clickmaker
2004-04-01 13:04
2004.05.02
ADO->MIDAS->ClientDataSet не пашет фильтр по BooleanField


4-1078495625
Gas
2004-03-05 17:07
2004.05.02
Помогите получить список елементов на форме чужого приложения.


1-1081978534
BAY
2004-04-15 01:35
2004.05.02
OpenGL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский