Czy jest jakiś sposób sprawdzenia, czy dana aplikacja na Androida lub iOS została zbudowana przy użyciu Xamarin?Znajdź, czy aplikacja została zbudowana przy użyciu Xamarin?
Odpowiedz
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.