837 Shares 7491 views

Reverse-engineering dla początkujących. Wszystkie aplikacje Android ochrona przed inżynierii odwrotnej

Czasem ktoś chce zobaczyć, a co to za wypełnienie konkretnego programu? Potem musi użyć reverse-engineering. Co to jest? Jak to działa? Jak to jest proces? Wszystko to dowiesz się z tego artykułu.

Co to jest program inżynierii odwrotnej?

Tak zwany proces analizy aplikacji w celu zrozumienia jak to działa, tak aby w przyszłości odtworzyć ten proces dokonywania niezbędnych zmian. Zwykle używane do tego celu debugger i asemblerze. W zależności od jakości użytego oprogramowania będzie inny, a wynik to ilość czasu, który należy poświęcić na to, aby wnieść w postaci normalnej. Wyjaśnij, reverse-engineering dla początkujących najlepszy przykład. Jak wykonać jego wniosek napisany dla systemu Android. Teraz bądźmy aby dowiedzieć się co i jak.

Praca z aplikacjami Android

Po pierwsze musimy wyjaśnić kilka punktów. Aplikacja korzysta z kodu bajtowego i logcat. Ta lokalna odpowiedniki wcześniej wspomniano debugger i asembler. Konieczne jest również, aby zrozumieć strukturę samych aplikacjach. Tak więc, każdy program jest plikiem z rozszerzeniem apk. Spakował zip'om. Jesteśmy zainteresowani jego zawartość – zasobów aplikacyjnych, classes.dex i AndroidManifest.xml. Jeśli nie programowania na Androida, problemy z byłą i nie powinna ona być. Ale classes.dex – program ten kod bajtowy, który jest skompilowany specjalnie dla maszyny wirtualnej. Wyciąg z jego kod źródłowy Java dostępne w Internecie nie uzyskać fundusze. Ale czy to możliwe, aby uzyskać opcodes Dalvik – specjalny zestaw poleceń, które są wykorzystywane do maszyny wirtualnej. Przez analogię można powiedzieć, że to montaż lokalnej powodzi. Classes.dex można również przekształcić w pliku z słoika. Nawet w takim przypadku, można uzyskać kod Java po dekompilacji, który będzie bardziej lub mniej czytelny. To jest droga idziemy.

dekompilacji

Proces ten zostanie przeprowadzona za pomocą programu Apk żłobie. Zanim zaczniesz, upewnij się, że nie jest właściwy sterownik dla devaysa i funkcjonowania trybie debugowania USB. Początkowo będziemy musieli przenieść plik, który zostanie przeanalizowany w dyrektywę apk_manager place-apk-here-for-modding. Następnie należy uruchomić Script.bat. Jeśli nie ma żadnego problemu, a następnie uruchomić konsolę, która będzie zielony napis. Wybierz punkt numer dziewięć – „dekompilować”. Gdy proces jest uruchomiony, nie jest konieczne, aby zamknąć konsolę. Następnie otwórz plik apk odsetki za pomocą archiwizatora i wydobyć z niej classes.dex, które mają być przetwarzane dex2jar program. Dla nas wymaganego rezultatu konieczne jest, aby przenieść obiekt z rozszerzeniem .bat. pojawi się plik, który zakończy się w JAR. Jak dotąd, okno nie zamyka.

analizować dane

Aby uzyskać informacje na temat aplikacji, należy otworzyć to oczywisty. Zgodnie z nią, stwierdzimy, że działa jako głównej działalności. To ona teraz prezentuje największe znaczenie dla nas. Pożądane jest również, aby spojrzeć na dole programu. Jeśli dno jest informacja o menedżera licencji, jest to znacznie trudniejsze do przeprowadzenia reverse engineering. Po przełączeniu na jd-gui i rozwinąć drzewo, możemy zobaczyć kilka nazw. Zakładamy, że trzech z nich. W pierwszym są pliki związane z reklamą. Drugi będzie klasy menedżera licencji. W trzecim, jesteśmy niezbędne dane. To kiedy idziemy. Będzie trzeba znaleźć i usunąć klucz, a następnie resztę, które sprawdzają, czy licencjonowana wersję roboczą wierszami. Wszystkie one muszą być czyszczone. Wtedy w naszym apk Menedżer szuka miejsca gdzie miejsce określonego kodu bajtowego. Teraz zróbmy małą dygresję i ustosunkowania się do zespołu, który może potencjalnie powodować problemy. Po tym, po prostu musimy skompilować program.

Budowanie aplikacji

Pomoże nam to wszystko sam menedżer APK. W konsoli, które nie zostały zablokowane, należy wybrać pozycję №14. Następny trik. Jeśli aplikacja jest dość skomplikowany, po uruchomieniu, może stracić częściowo lub całkowicie swoją efektywność. Nie martw się, to znaczy, że jesteśmy dopiero w połowie drogi i gdzieś pójść. My nadal wykonywać reverse-engineering-All aplikacje na Androida. Powiedzieć, co zrobić w konkretnym przypadku, w sposób ogólny, niestety, jest to niemożliwe. Dlatego, poszukaj obszary problemowe będą miały swoje własne. Na przykład, jeśli okno aplikacji jest zablokowane wyskakujące okienko, powinien pojawić się kod i wyjąć część, która jest odpowiedzialna za ten dialog. Aby pomóc w tym może jd-gui. Jak widać, do odmiennego technika nie jest łatwy biznes, a to wymaga znaczny zasób wiedzy. Nawet jeśli wszystko jest prowadzony bez problemu będzie konieczne do testowania wydajności aplikacji. Oznacza to, że reverse-engineering jest większa aktywność czasochłonne. My nadal działać, dopóki nie zostaną zidentyfikowane wszystkie problemy.

bezpieczeństwo

Co zrobić, jeśli musimy ochrona wszystkich aplikacji z Android inżynierii odwrotnej? W tym przypadku istnieją dwie możliwości: korzystanie z określonych programów lub stworzenie struktury kodu, który będzie kolidować aby parsowania napisane. Ta ostatnia opcja jest przeznaczona tylko doświadczeni specjaliści, więc weźmiemy pod uwagę tylko pierwszy metody ochrony. Jako wyspecjalizowany użyciu oprogramowanie PROGUARD. Aplikacja ta, która jest używana w celu zmniejszenia, zaciemniania i optymalizacji kodu. Jeśli program „chase” poprzez nią otrzymujemy plik z rozszerzeniem * apk mniejszy niż był. W takim przypadku byłoby znacznie trudniejsze do demontażu. A zaletą tego programu jest to, że nawet wprowadzono w gromadzeniu Android aplikacji o aktualizacjach R9. Dlatego też wykorzystać to, że każdy deweloper ma standardowych narzędzi tworzenia i rozwoju.

wniosek

Nie możemy powiedzieć, że reverse-engineering można przedstawić jako coś jednakowo dobre lub złe. Oczywiście, z punktu widzenia programistów, którzy stworzyli aplikację, to nie jest szczęśliwe wydarzenie. Ale z drugiej strony, w wielu przypadkach doświadczonych programistów piszących niezbędne pliki mogą być czasem mniej kosztowne niż stosowanie takich narzędzi. Chociaż dla początkujących programistów reverse-engineering może sprawić dobrą usługę, jeśli nie ma pomysł jak zaimplementować coś, nawet przykładowy, a nie całkiem jasny kontur może pomóc w osiągnięciu tego celu.