2013-03-21 13 views
7

Czy muszę zaszyfrować plik exe, który jest dla mnie kompilatorem Microsoft Visual C++? Mam grę z kilkoma bibliotekami i mam wszystkie zasoby zaszyfrowane, ale martwię się, że ludzie włamują się do exe i zmieniają kod, czy to możliwe?C++ Szyfrowanie Exe?

+16

Witamy w świecie DRM ... To walka ... to ... ty ... nie ... nie ... wygraj ... – Mysticial

+1

Na początek, musisz zdekapitować exe a następnie go uruchomić (będzie to musiało być na dysku lub będziesz musiał zrobić naprawdę zwariowane gówno z pamięci, aby uruchomić go z pamięci): po co zawracać sobie głowę robieniem tej całej pracy? Po prostu zaszyfruj same dane, jeśli są tak ważne, a nie .exe. –

+1

W przypadku gry oceniam to jako całkowicie bezsensowne. W przypadku programów, w których uzasadnia to rodzaj ceny, niektóre systemy oparte na kluczach sprzętowych zapewniają przynajmniej pewne bezpieczeństwo, ale ich cena oznacza, że ​​są one zwykle używane tylko w przypadku stosunkowo drogiego oprogramowania (tysiące dolarów). –

Odpowiedz

4

Nie ma sposobu na tworzenie oprogramowania bez możliwości konfiguracji. Jeśli znajduje się na komputerze użytkownika, to teoretycznie ma nad nim pełną kontrolę.

Co można zrobić, to utrudnić ludziom złamanie. To, czego szukasz, to "Executable compression". Armadillo robi coś takiego, podobnie jak UPX.

Pełna lista pakujących w formacie PE znajduje się pod numerem here.

Aby szyfrować spakowane zasoby, można użyć formatu LZMA SDK z formatem archiwum, który obsługuje szyfrowanie. Uważaj jednak, gdy próbujesz ukryć ten klucz szyfrowania. Jak mówią: "możesz biegać, ale nie możesz się ukryć" :)

Witamy w brzydkim świecie DRM.

+0

W jaki sposób profesjonalne gry korzystające z C++ sprawiają, że przeciętny gracz nie może otworzyć swoich zindeksowanych plików zip przy pomocy zasobów i programu uruchamiającego exe, jeśli jest to takie łatwe? – user2184442

+4

@ user2184442 Nie robią tego. Dlatego przeciętny gracz może po prostu pobrać pęknięcie i uruchomić grę bez płyty CD w napędzie ... – Mysticial

+3

Szyfruje je, ale potem, aby gra użyła tych zasobów, musi je odszyfrować. Aby to zrobić, algorytm, który wykonuje deszyfrowanie, musi również znajdować się na komputerze użytkownika, tak aby użytkownik kończył zarówno zaszyfrowanym zipem, jak i środkiem do jego odszyfrowania. Stamtąd wiesz, co następuje. –

0

To nie ma większego sensu. Aby wykonać program, będzie musiał zostać odszyfrowany w pamięci, aby odszyfrowany kod znalazł się w pamięci, skąd może zostać zrzucony.

Można jednak podpisać plik wykonywalny (szczegółowe informacje można znaleźć pod numerem this article). Gdy plik wykonywalny jest podpisany, jest on chroniony integralnością, a najlepsze jest to, że jest obsługiwany przez większość systemów operacyjnych, w tym Windows. Jeśli plik wykonywalny zostanie zmodyfikowany, system operacyjny może wykryć sabotaż i nie uruchomi go (lub przynajmniej ostrzeże użytkownika).

+1

Czy próbowałeś wyładunku spakowanego EXE? To nie jest takie proste. Pakujący wstawia również kod, który może zostać przypadkowo wyzwolony po podłączeniu do debuggera i przejściu przez kod, aby osiągnąć stan, w którym obraz może zostać porzucony. Nie jest to niemożliwe, ale jest pułapką. Nie trywialne. –

3

Niezależnie od tego, z której techniki skorzystasz, jeśli wyślesz zarówno plik wykonywalny, jak i zasoby do użytkownika końcowego, a jeśli będzie tego wart, w końcu będzie on pęknięty i nie możesz nic z tym zrobić. Proces odszyfrowywania może być trudniejszy, ale zwiększenie bezpieczeństwa wpłynie tylko na legalnych użytkowników, a Ty stracisz czas, który możesz poświęcić na ulepszenie oprogramowania.

Programiści Apple są z pewnością lepsi od ciebie i mnie, ale wszyscy ich iPhone'owie w końcu dostali jailbreak.