Autor Wątek: Ukrywanie zasobów  (Przeczytany 2018 razy)

Offline counterClockWise

  • Użytkownik

# Listopad 26, 2006, 22:39:48
Piszę większy projekt w technologii .NET i nigdy wcześniej mnie to specjalnie nie interesowało, ale tym razem jest bardzo ważne.
Jest jakis dobry sposób na ukrycie swoich zasobów (obrazów, tekstrur, dźwięków, napisów) ? Żeby naprawde ciężko było je wyciągnąć.

No bo wyciągnięcie zasobów nawet skompilowanych do exe lub dll jest w .NET banalne :/ Nawet szyfrowanie nie wchodzi w grę, bo przecież taki Reflector pokaże cały kod - nawet z komentarzami, a więc także procedury deszyfrujące.
Jednak natywne binarki windowsowe trzeba dissasemblować i to najwyżej do assemblera. Trudność jest znacznie większa.

Czy tylko drogie Obfuscatory wchodzą w grę? 

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Moderator
    • xion.log

# Listopad 26, 2006, 22:45:02
Ale co ma reverse-engineering kodu do ukrywania zasobów? Jeśli chcesz zabezpieczyć dostęp do obrazów, tekstur, dźwięków, to przecież różnych algorytmów szyfrowania/kompresji jest od groma i jeszcze więcej

Offline counterClockWise

  • Użytkownik

# Listopad 26, 2006, 23:49:08
Wydaje mi się, że reverse-engineering kodu pokaże jak nasza aplikacja deszyfruje te obrazy żeby ich użyć.

agent_J

  • Gość
# Listopad 27, 2006, 00:06:09
Jeszcze zadaj sobie pytanie iczy ktokolwiek będzie chciał używać tych zasobów. IMO zwykłe szyfrowanie wystarczy + obfuscator do procedur deszyfrujących - większość (nieprogramistów) się zniechęci.

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Listopad 27, 2006, 00:08:53
Zawsze można podejść do sprawy tak, że jak komuś będzie zależało to i tak rozszyfruje :D

PS. Świetny programik ten Reflector, nie wiedziałem nawet że takowe istnieją (tzn. pokazujące cały kod) :)
« Ostatnia zmiana: Listopad 27, 2006, 00:20:43 wysłana przez kdteam »

Offline mINA87

  • Użytkownik

# Listopad 27, 2006, 00:26:51
Nie ma zbyt dużego sesnu aż takie szyfrowanie, bo przecież istnieje dziura analogowa i wykorzystując ją można wsiorbać wszystko co leci przez API graficzne/muzyczne :] Nawet nie dziura analogowa, bo nie zczytujemy bezpośrendnio z pamięci urządzeń graficznych/muzycznych, co hookojemy procedurki API do wczytywania zasobów. Polecałbym Ci następujące metody które możesz połączyć
- VFS w osobnej bibliotece, zajmujący się szyfrowaniem zasobów. Biblioteka zoptymalizowana pod kątem reverse engeeneringu - napisana C/C++/ASM + szyfrowanie i zaśmiecanie kodu
- wrzucenie kodu zarządzanego do zaszyfrowanego pliku i wykorzystanie ręcznego sterowania wirtualną maszyną CLR
- napisanie własnego loadera PE, który robiłby dużo. (myślałem o napisaniu loadera, który współpracowałby low-levelowo z VFSem i wczytywał wszystkie biblioteki właśnie z archiwum)
- napisanie wirtualnej maszynki parsującej krytyczny kod.
Każda z powyższych metod utrudnia wydobycie zasobów, ale nie uniemożliwia tego. Przecież wszystko da się zreversować i/lub ominać. Niestety, ale nawet rozwiązania typowo hardware'owe nie są maxymalnie bezpieczne o czym się przekonali twórcy konsol :]

Offline counterClockWise

  • Użytkownik

# Listopad 27, 2006, 01:06:31
Dzięki za odpowiedzi :)
Jestem jak najbardziej świadomy, że te działania tylko utrudniają (a wszystko jest możliwe do złamania) co podkreśliłem na wstępie :) Już mam plan jak to zrobić :) Dzięki.