2011-10-26 11 views
7

Mam pewne zabezpieczenia wbudowane w program po stronie klienta, który pobiera bibliotekę DLL z sieci i wywołuje funkcję wewnątrz tej biblioteki DLL. DLL jest silne nazwie i funkcji w DLL wykorzystuje Assembly.GetCallingAssembly() do określenia zespół wywołujący tak, że można dokładnie uzyskać ścieżkę do programu, który nazwał go. Następnie wykonujemy sprawdzanie skrótu zespołu i sprawdzamy, czy jest poprawny.Sposób określania prawdziwego wywołującego zestawu

Mamy ludzi, którzy się przywiązali w trybie pełnego zaufania i są w stanie sfałszować wywołanie GetCallingAssembly, aby wskazać prawdziwy plik wykonywalny, podczas gdy oni uruchamiają zmodyfikowaną wersję tego. Czy istnieje coś innego niż GetCallingAssembly, którego mogę użyć, aby uzyskać prawdziwego dzwoniącego? Niektóre callstack lub coś, co może zapewnić rzeczywistą wykonywalny od GetCallingAssembly wydaje się być łatwo sfałszowane.

+0

Wypróbuj metodę GetEntryAssembly' zamiast ' – hazzik

+0

Pamiętaj, że jeśli pozwolisz na pełne zaufanie, mogą one również załatać GetEntryAssembly. Jeśli zezwolisz na pełne zaufanie, mogą one również załatać pobraną bibliotekę DLL i wyłączyć sprawdzanie skrótu. –

Odpowiedz

3

nie można zrobić tego podczas pracy w trybie pełnego zaufania. Pełne zaufanie oznacza, że ​​ludzie mogą robić takie rzeczy jak podszywanie się. Tutaj jest podobna discusison: reflection is possible on obfuscation

0

Nie jestem pewien, jak bezpieczne to jest, ale użyłem tego w przeszłości, aby uzyskać ścieżkę startową:

string startup_path = 
    Path.GetDirectoryName(typeof(SomeClassInDll).Assembly.Location); 
+0

Myślę, że ta osoba używa jakiegoś narzędzia, które zmienia CallingAssembly, Jeśli wyłączysz hasz, który go wykryliśmy, dzwoni do domu do serwera za pomocą skrótu, który jest generowany z wnętrza biblioteki dll, biblioteka dll zmienia niektóre tajne klucze w środku, który zmieni odpowiedź, zaszyfrował ten tajny klucz plus mieszanie zespołu, aby ustalić, czy jest zmodyfikowany i czy używają właściwego zestawu skrótu. Próbuję znaleźć jakieś metody, które mogę na to spojrzeć, ale może być nieco trudniej je podrobić. Może na przykład stos wywołań? – willthiswork89

Powiązane problemy