2009-09-03 16 views
5

Zamierzamy zaciemnić nasz projekt, ale nie chcemy stracić możliwości zdalnego debugowania i błyskawicznego zrzutu ekranu.Debugowanie kodu zaciemnionego java

Czy to możliwe? Jakie narzędzia mogą sobie z tym poradzić? Byłbym zadowolony z prostego zaciemniania - wystarczy zmienić nazwy klas/metod/zmiennych.

[Edytowany] Używamy Intelli IDEA, ale nie udało się znaleźć wtyczki do tego zadania.

Odpowiedz

5

Mamy ten sam rodzaj potrzeb (prosty zaciemnianie, trzeba później debugować) i używamy ProGuard. Jest to aplikacja Java, którą można zintegrować z zadaniem Ant.

Może to zrobić wiele rzeczy, ale jest również w pełni dostrajalne. Abyś mógł zachować prostotę swojej obfuskacji. Jedną z opcji jest wygenerowanie "Tablicy Odpowiedników Symbolu", która pozwala ci pobrać niezaprzeczony kod z zaciemnionego. (Śledzi, że zmienna xyz w klasie qksdnqd jest w rzeczywistości myCuteVarName w klasie MeaningfulClassName)

Edytuj: Obfuskacja może być trudna. Kilka przykładów:

  • Nie można zmienić nazwy głównej metody.
  • Czy używasz programu ładującego klasy? Czy nadal może odzyskać klasę po zaciemnieniu?
  • Co z mapowaniem ORM? Twój kontekst wiosenny? (Jeśli istnieją)

Edit2: Można też zobaczyć:

+0

Tak, wiem o stole SC. Ale ja i mój zespół nie jesteśmy tymi guru, którzy potrafią łatwo debugować i zmieniać zaciemniony kod, nawet korzystając ze stołu :) Po prostu szukam narzędzia, które pozwoli mi transparentnie debugować kod. – Vitaly

+0

Nie musisz być guru, podasz stół i zaciemniony słoik do aplikacji i stają się czytelne (bez komentarza). Ah ... ale nie sądzę, że można "na gorąco" z tym procesem (to jak usuwanie i wymiana całego słoika) –

+0

Może być, nie rozumiem czegoś. Czy będę mógł "krok po kroku" zdalnie debugować ukryty kod i zobaczyć "normalny" kod w tym samym czasie w jakimś debugerze (bez żadnych dodatkowych działań, takich jak przeglądanie tabeli, uruchamianie innych aplikacji itp.)? – Vitaly

0

Zobacz SD Java Obfuscator. Usuwa komentarze i białe spacje oraz zmienia nazwy wszystkich członków/metod/klas, które nie są publiczne.

Dostarcza również mapy tego, w jaki sposób kod został zaciemniony, np. Dla każdego symbolu FOO zakodowanego jako XYZ, mapy FOO-> XYZ. Oznacza to, że jeśli otrzymasz ślad zwrotny, wspominając XYZ, możesz łatwo określić oryginalny symbol FOO. Oczywiście, ponieważ tylko ty (osoba dokonująca obfuskacji) ma tę mapę, tylko Ty możesz to zrobić.