2010-05-24 7 views
8

obecnie rozwijam aplikację C# .Net, w której używam niestandardowego formantu, który opracowałem jakiś czas temu. Potrzebuję plik dll do wysłania w nowej aplikacji - ale zrozumiałe nie chcę, aby plik dll był używany dla zagranicznych aplikacji.Jak zapobiec ładowaniu dll z innych aplikacji

Dlatego potrzebuję niestandardowej biblioteki dll do kompilacji w ramach nowej aplikacji. Obecnie biblioteka dll jest kopiowana do katalogu aplikacji.

Wszelkie pomysły? Powinien być trywialny imho.

Dzięki & pozdrowienia, Daniel

+0

Jeśli umieścisz swój kod na czyimś komputerze, mogą go uruchomić. Wszystko, co robisz, aby temu zapobiec, jest co najwyżej chwilowym upustem. –

Odpowiedz

3

zajrzeć do IL Merge. To narzędzie pozwala łączyć wiele zespołów .NET w jeden zespół.

I przytoczyć:

ILMerge jest narzędziem, które może być stosowane do łączenia wielu zespołów NET w jednym zespole. ILMerge pobiera zestaw złożeń wejściowych i łączy je w jeden zestaw docelowy. Pierwszym zbiorem na liście zespołów wejściowych jest zespół podstawowy. Gdy podstawowy zespół jest plikiem wykonywalnym, wówczas zespół docelowy jest tworzony jako plik wykonywalny z tym samym punktem wejścia, co zespół podstawowy. Ponadto, jeśli zespół podstawowy ma silną nazwę i jest dostarczany plik .snk, wówczas zespół docelowy jest ponownie podpisywany za pomocą określonego klucza, tak że ma również silną nazwę.

Należy jednak wziąć pod uwagę, że ludzie mogą nadal używać utworzonego zespołu. Zajrzyj do obfuskacji i licencji, aby trzymać się z dala od kłopotów, ale pamiętaj, że jeśli ktoś bardzo tego zażąda, dostanie go.

Pewne rzeczy sprawiają, że jest o wiele trudniej, jak na przykład usługa sieciowa, ale nawet wtedy nie jest to pełny dowód.

1

Jeśli można zmienić DLL z kontrolą własnego, możesz ...

  1. Oznacz wszystko w DLL kontroli wewnętrznej.
  2. Skompiluj swój zestaw tak, aby biblioteka wywołująca DLL miała dostęp do wewnętrznych elementów kontrolnej biblioteki DLL.
  3. Zarejestruj wywołującą bibliotekę DLL.

Aby uzyskać szczegółowe informacje, jak to zrobić, zapoznaj się z tym MSDN page.

0

Istnieje wiele różnych hacków, które możesz zrobić, aby utrudnić użytkownikom korzystanie z nich. Wszystkie można ominąć, ale takie jest życie.

Możesz zajrzeć na tej odpowiedzi tutaj zabronienie nieznany zespół odwołać swój zespół: Secure C# Assemblies from unauthorized Callers

powinien zaciemniać swój zespół, jeśli jesteś naprawdę nerwowy o tym. To spowoduje, że będzie on trudniejszy do zdekompilowania.Coś takiego jak Babel działa świetnie: http://babelobfuscator.blogspot.com/

Można również użyć ILMerge do przechowywania zespołu w innym zespole. Jednak ten zestaw zostanie wyodrębniony i wyeksponowany w czasie wykonywania. Możesz zrobić coś wzdłuż tych linii, aby wyodrębnić zasoby binarne z jednego zespołu i utworzyć tymczasowy zespół, który zostanie użyty w czasie wykonywania. Jeśli ktoś jest naprawdę zmotywowany, może także znaleźć tymczasowy montaż ...

Prawdziwe pytanie brzmi: jak daleko chcesz się posunąć !? W pewnym momencie nie będzie tego wart. Tam się zatrzymujesz.

+0

Hum, nie chcę iść naprawdę daleko - chcę tylko, żeby dll nie był widoczny w katalogu aplikacji na pierwszy rzut oka lub jakoś zabezpieczyć go przed osadzaniem go z łatwością. Wiem: wszystko stworzone przez ludzi może zostać zhakowane lub zniszczone przez ludzi. Jeśli Microsoft, Apple i inne duże firmy nie są w stanie osiągnąć prawdziwej ochrony przed hackowaniem swojego oprogramowania - jak mogę pomyśleć o tym, żeby być w stanie ... ;-) – dhh