Наскоро, когато пишех софтуер, ми хрумна идея: ако пусна програма .exe добре защитена, но ако DLL не е защитена, приложението ми ще използва dll файла, дали другите ще дебъгват програмата ми през DLL файла?
Днес нека напишем специална програма за тестване, нека използваме приложението, за да извикаме метод в dll, както следва:
Кодът е прост:
DLL код:
Код на приложението:
След това създавам нов проект, създавам нова библиотека с класове и копирам същия тип и cs файл, както следва:
Нека заменим генерирания dll със следната фигура:
Програмата успешно извиква dll метода, който сме създали, как можем да предотвратим създаването на dll?
Измислих проста идея – да добавя ресурсен файл към приложението, да попълня dll файла за зареждане и стойността md5 на файла, входната точка на програмата, и първо да проверя стойността md5 на dll-а, която трябва да се зареди
Ако стойността MD5 на DLL файла не съответства на MD5 стойността на файла в списъка с ресурси, това означава, че DLL файлът е фалшифициран или злонамерено манипулиран. Това не е практикувано, логически е възможно!
|