Форум: "Основная";
Текущий архив: 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