Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Нестандартная работа с dll   Найти похожие ветки 

 
Frozzen   (2004-12-06 07:55) [0]

Здравствуйте господа!
Возможно ли реализовать такое: выделяем память, помещаем туда длл и или же отдельную фкнкцию, и вызываем ее.


 
Digitman ©   (2004-12-06 08:01) [1]

возможно


 
Frozzen   (2004-12-06 08:31) [2]

подскажите методы пожайлусто
или чего почитать


 
Digitman ©   (2004-12-06 08:35) [3]

hLib := LoadLibrary("mylib.dll"); //выделяем память и загружаем библиотеку
MyProc := GetProcAddress(hLib, "MyProc"); //получаем адрес эксп.процедуры MyProc()
MyProc(параметры); //вызываем эту процедуру


 
novice_man ©   (2004-12-06 08:37) [4]


hLib := LoadLibrary("mylib.dll"); //выделяем память и загружаем библиотеку

@MyProc := GetProcAddress(hLib, "MyProc"); //получаем адрес эксп.процедуры MyProc()
MyProc(параметры); //вызываем эту процедуру


 
Fay ©   (2004-12-06 08:39) [5]

2 novice_man ©   (06.12.04 08:37) [4]
В смысле?


 
Digitman ©   (2004-12-06 08:40) [6]


> novice_man ©   (06.12.04 08:37) [4]


"баран" вовсе не обязателен


 
novice_man ©   (2004-12-06 08:43) [7]

"баран" вовсе не обязателен
Точно :), но везде в литературе (которая попадала) в руки было так и не задовался вопросом ПОЧЕМУ?
Так вот ПОЧЕМУ?


 
Fay ©   (2004-12-06 08:47) [8]

>> но везде в литературе (которая попадала) в руки было
Left side cannot be assigned to


 
novice_man ©   (2004-12-06 08:51) [9]

Попробовал так и нормально, проглатил компилятор:

var
hLib: Cardinal;
ppp: procedure;
begin

ppp := GetProcAddress(hLib, "MyProc")

end;

Правда не проверял как сработает ;).


 
Fay ©   (2004-12-06 08:53) [10]

2 novice_man ©   (06.12.04 08:51) [9]
А теперь
@ppp := GetProcAddress(hLib, "MyProc")
?


 
Frozzen   (2004-12-06 08:54) [11]

А без LoadLibrary возможно
допустим длл-зашифрована


 
novice_man ©   (2004-12-06 08:55) [12]

Так я проверил оба варианта! Никакой разницы! Компилится нормально.


 
Fay ©   (2004-12-06 08:57) [13]

2 novice_man ©   (06.12.04 08:55) [12]
Sorry, я на Integer-е проверял 8). Видимо, Delphi просто разрешает такую фигню 8)


 
Digitman ©   (2004-12-06 08:59) [14]


> допустим длл-зашифрована


так расшифруй ! делов-то ..
а далее - [3]


 
novice_man ©   (2004-12-06 09:05) [15]

Frozzen   (06.12.04 08:54) [11]

А без LoadLibrary возможно
допустим длл-зашифрована


Что значит зашифрована?


 
Frozzen   (2004-12-06 09:05) [16]

исли ее в темп расшифровывать
то это уязвиме место


 
Frozzen   (2004-12-06 09:07) [17]

крипто алгоритмом зашифрована


 
Digitman ©   (2004-12-06 09:08) [18]


> Frozzen   (06.12.04 09:05) [16]


> уязвиме место


сделай это "место" "неуязвимым"

и вообще непонятно "чего тебе надобно, старче"


 
Fay ©   (2004-12-06 09:08) [19]

2 Frozzen   (06.12.04 07:55)
Сходите на wasm.ru. Довольно быстро поймёте, что не стоит изобретать этот велосипед - он не поедет.


 
Frozzen   (2004-12-06 09:15) [20]

В общем так
хочу ключевую функцию поместить в длл, зашифровать эту длл ее. допустим ключем ид-винчестера. Ну а затем расшифровать в память и выполнить.


 
novice_man ©   (2004-12-06 09:16) [21]

Удачи!


 
Digitman ©   (2004-12-06 09:18) [22]


> хочу ключевую функцию поместить в длл


зачем ? эту ДЛЛ будет использовать более чем одно приложение ?


 
novice_man ©   (2004-12-06 09:19) [23]

И почему это програмисты не любят пользователей своего (своих) продуктов.

Вопрос: у Вас стоит лицензионная версия OS и Delphi? Если да то сколько это стоит?


 
Fay ©   (2004-12-06 09:37) [24]

Во какая страшная вещь пришла в голову 8)
var
 Lib, h : DWORD;
begin
 h := CreateFile("c:\lib.DLL", GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0);
 if h = INVALID_HANDLE_VALUE then RaiseLastOsError;
 Lib := LoadLibrary("c:\lib.dll");
 try
   if Lib = 0 then RaiseLastOsError;
   FreeLibrary(Lib);
 finally
   CloseHandle(h);
 end;


 
Frozzen   (2004-12-06 10:13) [25]

novice_man
Стоит задача придумать защиту

Digitman

нет
но можно не длл,
наверно придется писать свой загрузчик


 
Frozzen   (2004-12-06 10:19) [26]

Fay
не понял маневра


 
Digitman ©   (2004-12-06 10:21) [27]


> Стоит задача придумать защиту


защиту от ЧЕГО ?


> придется писать свой загрузчик


загрузчик ЧЕГО ?


 
Frozzen   (2004-12-06 10:27) [28]

стоит задача придумать систему защиты от переноса приложения на другии машины. И как можно сильнее затруднить жизнь тому, кто будет ломать эту защиту.


 
Digitman ©   (2004-12-06 10:45) [29]


> придумать систему защиты от переноса приложения на другии
> машины


задача сводится как минимум к "придумыванию" собственной файловой системы, что ведет к "придумыванию" собственной операционной системы, поддерживающей "придуманную" файловую систему

только так можно исключить перенос приложения на другие машины


> как можно сильнее затруднить жизнь тому, кто будет ломать
> эту защиту


задача сводится к принятию мер по защите от использования несанкционированной копии приложения, а не "защите от переноса" !

наиболее эфф.защита от трассировки с целью "взлома" - это самомодифицирующийся код .. но, imho, при таком уровне познаний решение этой задачи тебе попросту не по зубам - здесь необходимо как "Отче наш" знать и систему команд ЦП, и программирование на ассемблере и в машкоде, и принципы/особенности внутренней организации ОС, и принципы работы ЦП в защищенном режиме ..


 
Frozzen   (2004-12-06 10:48) [30]

Про самомодифицирующийся код я знаю - это тяжеловато
а вот вариант с шифрование функции, по-моему можно попробовать,
я проделывал подобное с файлами ресурсов.


 
Frozzen   (2004-12-06 10:50) [31]

И файловую систему, которая была расположена в большом файле, я уже реализовывал.


 
Frozzen   (2004-12-06 10:50) [32]

была как бы модель файловой системы


 
DiamondShark ©   (2004-12-06 10:54) [33]


> а вот вариант с шифрование функции, по-моему можно попробовать,

Метод ничуть не более устойчивый, чем "расшифровать в ТЕМП".


 
Digitman ©   (2004-12-06 11:06) [34]


> Frozzen   (06.12.04 10:50) [31]
> файловую систему, которая была расположена в большом файле,
> я уже реализовывал.


и изобрел очередной велосипед


> была как бы модель файловой системы


ты просто некий свой контейнерный формат изобрел, а не "как бы модель"

а ФС как была у тебя FAT32 (или что там у тебя - NTFS, HPFS), так она и осталась, и ничто не мешает скопировать твой контейнер на другую машину и так или иначе использовать его там


> вариант с шифрование функции


что она у тебя должна шифровать/дешифровать-то ? твой суперсекретный исп.код ? так ведь эту ф-цию точно так же можно оттрассировать и  понять что и как она шифрует/дешифрует ! придется тебе писать шифровальщик ф-ции шифрования) ... а шифровальщик этот тоже можно оттрассировать, поэтому придется писать и шифровальщик шифровальщика) ... и так - до бесконечности) .. сказка про белого бычка .. или, если угодно, про барона Мюнхгаузена, вытаскивающего себя за волосы из болота)


 
Frozzen   (2004-12-06 11:06) [35]

отчегож
допустим мы имеем зашифрованную функцию, которая выполняет какую-нибудь ключевую операцию и проверку на верность ид-машины.
Без этой функции программа не работает, изменить эту функцию трудно, поскольку зашифрована


 
Frozzen   (2004-12-06 11:07) [36]

крипто анализ это уже другая тема


 
Frozzen   (2004-12-06 11:09) [37]

про файловую систему-контейнер - это не было связано у меня с защитой


 
DiamondShark ©   (2004-12-06 11:10) [38]


> изменить эту функцию трудно, поскольку зашифрована

Зато никто не мешает найти точку, из которой вызывается эта функция и вставить туда заплатку.

Да и саму функцию несложно оттрасировать, потому что к моменту вызова она должна быть расшифрована. Ы?


 
Frozzen   (2004-12-06 11:11) [39]

и взлом алгоритма шифрования DES даже с известным алгоритмом - задача крайне не тривиальная


 
Frozzen   (2004-12-06 11:12) [40]

заплатка подразумевает вызов подобной функции?



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.034 c
14-1102016109
Stavskiy
2004-12-02 22:35
2004.12.19
Вернемся к Delphi


14-1101580285
TButton
2004-11-27 21:31
2004.12.19
Хотите узнать что чувствует человек после 69 часов бодрствования?


3-1101115642
RRRulex
2004-11-22 12:27
2004.12.19
обновление записи набора данных из 2-х связанных таблиц


3-1100874705
Snip
2004-11-19 17:31
2004.12.19
Загрузка из BLOB поля в OleContainer


1-1102409604
Dmitriy O.
2004-12-07 11:53
2004.12.19
Как ROWS В DbGrid (RxDbGrid) копировать в буфер ?





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