2008-08-07 21 views
21

Napisałem (większość) aplikacji w środowisku Flex i zależy mi na ochronie kodu źródłowego. Uruchomiłem demo z wersji Trillix swf decompiler i otworzyłem plik SWF, który został zainstalowany w moim katalogu Program Files. Widziałem, że wszystkie pakiety actionscript, które napisałem, były tam. Nie jestem zbytnio zainteresowany tymi pakietami, mimo że istnieje znaczna ilość kodu, ponieważ nadal wydaje się on dość bezużyteczny bez plików mxml. Myślę, że nawracają się na actionscript, a przynajmniej mam nadzieję. Nadal jednak chciałbym zgłębić zaciemnianie.Obfuskacja Flex/Air

Czy ktoś ma jakiekolwiek doświadczenie z Flash Flash/Actionscript 3/Flex obfuscators? Czy możesz polecić dobry produkt?

Odpowiedz

13

Oto, co zrobię.

  • Skompiluj swoją aplikację do pliku SWF. Następnie zaszyfruj plik SWF za pomocą AES.

  • Zrób „wrapper” aplikację, która ładuje zaszyfrowanego pliku SWF do ByteArray przy użyciu URLLoader

  • Użyj biblioteki as3crypto odszyfrować swf w czasie wykonywania.

  • Po odszyfrowaniu użyj programu Loader.loadBytes, aby załadować odszyfrowany plik swf do aplikacji otoki.

To utrudni uzyskanie kodu. Nie niemożliwe, ale trudniejsze.

W aplikacjach AIR można pozostawić szyfrowany plik SWF podczas dostarczania aplikacji użytkownikowi końcowemu. Następnie możesz podać klucz rejestracyjny, który zawiera klucz używany do odszyfrowania pliku SWF.

Również tutaj znajduje się link do obfuscatora AS3. Nie jestem pewien, jak dobrze działa. http://www.ambiera.com/irrfuscator/index.html

20

Procedura zaproponowana przez maclema nie będzie naprawdę zatrzymać żadnego atakującej uzyskanie źródła - „Wniosku wrapper” będą musiały być niezaszyfrowane więc atakujący będą mogli dowiedzieć się, że używasz AES (lub inny algorytm) i uzyska klucz odszyfrowywania w podobny sposób (ponieważ musi być gdzieś w postaci zwykłego tekstu). Gdy to zrobi, będzie w stanie odszyfrować twój plik SWF.

Jedynym niezawodnym rozwiązaniem (no ...) jest jakaś obfuscator - używamy Amayeta, która działa dla Flex w najnowszej wersji - zobacz http://www.amayeta.com/software/swfencrypt/.

+1

Myślę, że to jest odpowiedź, która powinna zostać przyjęta. –

3

Cóż, moim zdaniem, najprostszym i najbezpieczniejszym rozwiązaniem jest mieszanką maclema i Borek odpowiedź:

zaciemnianie kodu mogą być wielki Headach jeśli nie obejmują go w procesie od początku i jeśli Aplikacja jest dość duża: prawdopodobnie obfuskacja spowoduje, że twoja aplikacja zostanie uszkodzona, jeśli użyjesz pakietów zdalnych (i nie zadeklarujesz tego do obfuscatora), jeśli użyłeś wielu zmiennych nienaukowych w Obiektach lub klasach dynamicznych ....

A więc: jeśli zrobisz rozwiązanie maclema na twojej dużej aplikacji i użyjesz obfuskacji na opakowaniu (która jest małą aplikacją, która prawdopodobnie będzie bardzo łatwa do zaciemnienia) to kod będzie najbezpieczniejszy, a hasle będzie t. Tylko bardzo zły pirat poświęciłby trochę czasu na odwrotną inżynierię zaciemniania, aby następnie odszyfrować pakiet ....Więc jeśli ktoś chce kod aplikacji soo źle to albo CIA związane lub jesteś już bardzo bogata (lub oba)

dziękuję wszystkim za odpowiedzi

0

Niedawno wydała grę iOS i Android przy użyciu lampy błyskowej. Rozejrzałem się po Internecie, szukając dobrego darmowego programu do ochrony kodu źródłowego w moim SWF i nie mogłem znaleźć niczego, więc napisałem jeden. Nadal jest w fazie rozwoju i "używa na własne ryzyko", ale zadziałało to dla mnie.

Jest wydany na github. Sprawdź to i daj mi znać, co myślisz.

https://github.com/Teesquared/flasturbate

upload binarne Windows, ale ja polecam postępuj zgodnie z instrukcjami, by go zbudować samemu, jeśli chcesz spróbować.

Ten obfuscator działa bezpośrednio na pliku SWF. Obecnie zmienia nazwy tylko symboli, ale jest zbudowany na strukturze, która może obsługiwać zmiany bajtów w przyszłości.