Dobry zaciemniacz (obfuscator)

0

Jak w temacie, szukam czegoś co rzeczywiście mogłoby chronić kod. Właśnie miałem oddać program w ręce testerów i zorientowałem się, że kompletnie nie mam czym go zabezpieczyć. Testowałem kilka narzędzi.
CodeVeil 5.0
CodeWall 2010
Skater .NET
Babel (dał się zdekompilować do kompletnie oryginalnego kodu)

Ale wszystkie można bardzo łatwo zdekompilować do oryginalnego lub prawie oryginalnego kodu - tak czy inaczej - czytelnego. SmartAssembly nawet nie włączałem, bo już wcześniej dekompilowałem taki kod.

Jest jedno dobre narzędzie, ale nie było podpisane w kodzie, który został zaciemniony. Kod można zdekompilować, ale powstaje straszny bałagan (wystarczający odstraszacz ; p).

Ktoś może polecić coś dobrego ? Na razie jedynie na to czekam, bo z otwartym kodem nie chcę oddawać programu w publiczne ręce : /
// ---
Jeszcze jest Crypto obfuscator, ale dostępna jedynie płatna wersja (która zapewne tania nie jest) - testowa nakłada ograniczenie czasowe na zaciemniony kod : /

0

A może dotfuscator z visual studio?

0

Ja zawsze korzystam z darmowego Eazfuscator.NET - otwierasz programik i przenosisz plik w odpowienie okno(drag-drop) i gotowe. Spróboj tego narzędzia.
Zresztą i tak jak ktoś zechcę to dobierze się do zabezpieczeń w twoim programie.

Nie wiem z jakich narzędzi korzystasz do dekompilacji ale mogę ci polecić to:
http://sourceforge.net/projects/dile/

0

Ten Ezosfucator.NET jest jednak płatny - jak z niego korzystałem jakiś czas temu to był darmowy ale teraz jest płatny...

0

Wiem, wiem. Po tym poście jeszcze kilka narzędzi przejrzałem, ale ostatecznie zabezpieczyłem jedynie kod głównego programu. Chciałem po prostu zaciemnić dodatkowe dll-ki, ale chyba nic z tego nie będzie. Jak dekompilacja komercyjnych narzędzi trwa 5 minut, to wątpię by darmowe mogły zapewnić znacznie większą ochronę. Trzeba będzie to zostawić tak jak jest : /

1
Slynx napisał(a):

Wiem, wiem. Po tym poście jeszcze kilka narzędzi przejrzałem, ale ostatecznie zabezpieczyłem jedynie kod głównego programu. Chciałem po prostu zaciemnić dodatkowe dll-ki, ale chyba nic z tego nie będzie. Jak dekompilacja komercyjnych narzędzi trwa 5 minut, to wątpię by darmowe mogły zapewnić znacznie większą ochronę. Trzeba będzie to zostawić tak jak jest : /

To ja może zapytam, co masz tak tajnego w kodzie że boisz się że ktoś go zobaczy? Czy może aż taki brzydki ;)?

No ale załóżmy że faktycznie chcesz chronić kod. O ile faktycznie nie stosujesz tam jakichś autorskich algorytmów, nie warto próbować czegoś więcej niż zwykły, dowolny obfuscator. Kilka z nich wypróbowałem, wszystkie robią podstawowe czynności, np. wypełniają różne czytelne stringi zaszyte w programie (jak nazwy funkcji) śmieciami. Pierwsza z brzegu lista - http://stackoverflow.com/questions/2161201/free-net-obfuscator.
Nie jestem pewien co masz na myśli pisząc że dekompilacja jest możliwa w 5 minut, otrzymanie oryginalnego kodu (w szczególności wspomnianych nazw) w dowolnym sensownym obfuscatorze powinno być niemożliwe.

No i nie ma czegoś takiego jak 'obfuscator nie do złamania', nieważne czy program jest w C#, Javie czy C++, jeśli ktoś (umiejący to robić) będzie chciał go złamać, możesz go najwyżej spowalniać ;]

0

Lepiej nie pytaj, bo to głupie pytanie. Właśnie o to chodzi, że kod jest elegancki, wielokrotnie optymalizowany i poprawiany, zwłaszcza pod kątem wydajności - ale nie to jest istotne. Powiedziałbym, że wewnątrz znajdują się klucze szyfrujące, ale te są w głównym kodzie - zaszyfrowane moją metodą. Jednak dll-ek nie mogę w taki sam sposób potraktować, dlatego potrzebny mi zwykły zaciemniacz. I nie musi byś "super ekstra", ważne żeby pomimo traktowania dekompilatorem pozostał syf, który wystarczająco zniechęci osoby szukające tam szczęścia ; p

A jeśli chodzi o te obfuscatory.... jak mam robić syf w kodzie (co ze spadkiem wydajności poprzez "motanie" kodu ? Zwłaszcza w czułych punktach), który i tak może być w 5 minut zdekompilowany do pierwowzoru, to lepiej sobie darować takie rozwiązania. Jak już coś robić to porządnie.

"obfuscatorze powinno być niemożliwe."

Powinno. To tak jak reklamy ochrony kodu, na stronach pod programami SmartAssembly, itp. to ładnie wygląda, jak się na tym nie znasz. I nie mów mi o tekstach "obfuscator nie do złamania". Nie bawmy się w takie gierki, pytam poważnie. Zawsze robiłem natywny, zamotany starter w c++, a program kompilowałem jako dll-ke, starter przechowywał i dostarczał klucze. To się sprawdzało, bo mimo, iż jest to kod zarządzany, rozkodowanie wymaga wydobycia kluczy zaszytych w kodzie natywnym - konieczna deasemblacja. Takie proste sztuczki, ale takie rozwiązanie nie zawsze jest możliwe. Tym razem, mam około 15 dll-ek w których muszę zrobić śmietnik, by nikomu nie chciało się bawić w czyszczenie kodu 10 razy większego niż oryginalny. Masa instrukcji skoku potrafi wystarczająco zniechęcić, a nie jest to coś o co każdy będzie się zabijać by wydobyć źródło. Nie znam obfuscatora, który nie poddał by się metodom dekompilacji, dlatego chcę jedynie takiego, który pozostawi śmietnik po takich próbach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1