2016-08-16 20 views

Odpowiedz

8

tak. Struktura folderu aplikacji. Dla przykładu można w Androidzie

Jeśli szukasz w „normalnej” mono droidów aplikacji (skompilowany z czymś Xamarin) wtedy zobaczysz niektóre z tych struktur w APK/ZIP”

/assemblies/Sikur.Monodroid.dll 
/assemblies/Sikur.dll 
/assemblies/Xamarin.Android.Support.v13.dll 
/assemblies/Xamarin.Android.Support.v4.dll 
/assemblies/Xamarin.Android.Support.v7.AppCompat.dll 
/assemblies/Xamarin.Android.Support.v7.CardView.dll 
/assemblies/Xamarin.Android.Support.v7.RecyclerView.dll 
/assemblies/Xamarin.Mobile.dll 
/assemblies/mscorlib.dll 
/classes.dex 
/lib 
/lib/armeabi-v7a 
/lib/armeabi-v7a/libmonodroid.so 
/lib/armeabi-v7a/libmonosgen-2.0.so 

Plik w katalogu złożeń będzie kodem Mono/.Net i można go odwrócić za pomocą tych normalnych narzędzi.

classes.dex to normalny plik wykonywalny systemu Android Dalvik (dex), który można odwrócić za pomocą zwykłych narzędzi (baksmali, IDA Pro, itp.) - chociaż powinien to być tylko kod pośredniczący, który uruchamia silnik Mono.

Pliki znajdują się w bibliotece lib/**/*., Więc są to natywne biblioteki współdzielone, które są wkompilowane w plik ELF ARM. Zazwyczaj przechodzą one do monodroidowego silnika (libmonodroid.so) i potencjalnie do innych wtyczek, które zostały użyte przez programistę. Będą one wymagać deasemblatorów obsługujących ELF ARM, takich jak Hopper, IDA Pro, r2, itp.

W powyższym przykładzie jedyny kod inny niż Xamarin będzie znajdować się w Sikur.dll i Sikur.Monodroid.dll.


dekompilować apk https://ibotpeaches.github.io/Apktool/

Jeśli mają mono.dll jest w Xamarin.

można dekompilować niektóre. Dll w C# oglądania kodu.


oraz w systemie iOS nie można dekompilować. Aplikacje na Androida są kompilowane do niezależnego od komputera kodu bajtowego w języku Java i stosunkowo łatwo jest go przekonwertować z powrotem na język Java. Aplikacje na iOS są kompilowane bezpośrednio do kodu maszynowego z agresywną przepustką optymalizacyjną, która ma tendencję do niszczenia dużej części struktury oryginalnego kodu.

To nie znaczy, że nie można się nauczyć niczego użytecznego ze skompilowanej aplikacji na iOS. Narzędzie class-dump może wyodrębnić nazwy klas, właściwości i metod Objective-C z skompilowanej aplikacji, która może dostarczyć wskazówek, jak to jest zaimplementowane. NibUnlocker potrafi konwertować skompilowane pliki interfejsu użytkownika interfejsu użytkownika z powrotem do formatu edytowalnego. Hopper potrafi nie tylko dezasemblować kod maszynowy, aby przekształcić go w kod zespołu, ale może również przekonwertować go na bardziej zrozumiały kod pseudonimu. Obrazy, dźwięki i inne zasoby są zwykle dołączane niezaszyfrowane w pakiecie aplikacji na iOS.

Możesz spróbować użyć tej aplikacji i obserwować różnicę, jeśli ktoś może przeczytać tę odpowiedź. Daj mi znać, jaka jest różnica.