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

Вниз

Нестандартная работа с 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.026 c
1-1102082863
MegaVolt
2004-12-03 17:07
2004.12.19
Почему один кусок кода работает а второй нет ведь они эквивалентн


3-1100498654
S@lik
2004-11-15 09:04
2004.12.19
Query


14-1101406105
Cerberus
2004-11-25 21:08
2004.12.19
lsass.exe


1-1101946013
Змей
2004-12-02 03:06
2004.12.19
listview


3-1101194416
Tomkat
2004-11-23 10:20
2004.12.19
Ремонт базы IB