2009-09-03 9 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ć.

Powiązane problemy