Xamarin Uygulamaları
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
Xamarin, geliştiricilerin .NET ve C# framework’lerini kullanarak iOS, Android ve Windows için uygulama build etmelerini sağlayan open-source platformdur. Bu platform, modern uygulamalar oluşturmayı kolaylaştıran çok sayıda araç ve uzantıya erişim sunar.
Xamarin’ın Mimarisi
- Android için, Xamarin .NET binding’leri aracılığıyla Android ve Java namespace’leri ile bütünleşir; Mono yürütme ortamı içinde Android Runtime (ART) ile birlikte çalışır. Managed Callable Wrappers (MCW) ve Android Callable Wrappers (ACW), Mono ile ART arasındaki iletişimi sağlar; her ikisi de Linux kernel üzerinde çalışır.
- iOS için, uygulamalar Mono runtime altında çalışır ve C# .NET kodunu ARM assembly diline dönüştürmek için tam Ahead of Time (AOT) derleme kullanılır. Bu süreç Objective-C Runtime ile birlikte UNIX-benzeri bir kernel üzerinde çalışır.
.NET Runtime ve Mono Framework
.NET framework, uygulama geliştirme için assemblies, class’lar ve namespace’ler içerir; .NET Runtime ise kod yürütmesini yönetir. Platform bağımsızlığı ve geriye dönük uyumluluk sağlar. Mono Framework, .NET framework’ün 2005’te başlatılmış open-source bir versiyonudur; .NET’i Linux’a taşımak amacıyla geliştirilmiş olup şu anda Microsoft tarafından desteklenmekte ve Xamarin tarafından yönetilmektedir.
Reverse Engineering Xamarin Apps
Decompilation of Xamarin Assemblies
Decompilation, derlenmiş kodu tekrar kaynak koda dönüştürür. Windows’ta Visual Studio içindeki Modules window, decompilation için modülleri tanımlayabilir; bu sayede üçüncü taraf koda doğrudan erişim ve analiz için kaynak kod çıkarımı mümkün olur.
JIT vs AOT Compilation
- Android, Just-In-Time (JIT) ve Ahead-Of-Time (AOT) derlemeyi destekler; optimal yürütme hızı için Hybrid AOT modu mevcuttur. Full AOT yalnızca Enterprise lisanslarında sunulur.
- iOS, Apple’ın dinamik kod yürütme kısıtlamaları nedeniyle yalnızca AOT derleme kullanır.
Extracting dll Files from APK/IPA
APK/IPA içindeki assemblies’lere erişmek için dosyayı unzip edip assemblies dizinini inceleyin. Android için XamAsmUnZ ve xamarin-decompress gibi araçlar dll dosyalarını açabilir.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
APK’yi decompile ettikten sonra unknown/assemblies/ klasörünü içinde .dll dosyalarını görebiliyorsanız, dnSpy’ı doğrudan bu .dlller üzerinde kullanarak analiz yapmak mümkündür. Ancak bazen unknown/assemblies/ klasörünün içinde assemblies.blob ve assemblies.manifest dosyaları bulunur. pyxamstore aracı, Xamarin uygulamalarında assemblies.blob dosyasını açarak daha ileri analiz için .NET assemblies’e erişim sağlar:
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
# After patching DLLs, rebuild the store
pyxamstore pack
Bazı yeni Xamarin/MAUI build’leri, sıkıştırılmış assembly’leri XALZ formatında /assemblies.blob veya /resources/assemblies içinde depoluyor. Bunları xamarout kütüphanesiyle hızlıca açabilirsiniz:
from xamarout import xalz
import os
for root, _, files in os.walk("."):
for f in files:
if open(os.path.join(root, f), 'rb').read(4) == b"XALZ":
xa = xalz.XamarinCompressedAssembly(os.path.join(root, f))
xa.write("decompressed/" + f)
iOS .dll files are readily accessible for decompilation, revealing significant portions of the application code, which often shares a common base across different platforms.
AOT on iOS: managed IL is compiled into native
*.aotdata.*files. Patching the DLL alone will not change logic; you need to hook native stubs (e.g., with Frida) because the IL bodies are empty placeholders.
Static Analysis
Once the .dlls are obtained it’s possible to analyze the .Net code statically using tools such as dnSpy or ILSpy that will allow modifying the code of the app. This can be super useful to tamper the application to bypass protections for example.
Note that after modifying the app you will need to pack it back again and sign it again.
dnSpy is archived; maintained forks like dnSpyEx keep working with .NET 8/MAUI assemblies and preserve debug symbols when re-saving.
Dynamic Analysis
Dynamic analysis involves checking for SSL pinning and using tools like Fridax for runtime modifications of the .NET binary in Xamarin apps. Frida scripts are available to bypass root detection or SSL pinning, enhancing analysis capabilities.
Other interesting Frida scripts:
Updated Frida-xamarin-unpin (Mono >=6) hooks System.Net.Http.HttpClient.SendAsync and swaps the handler to a permissive one, so it still works even when pinning is implemented in custom handlers. Run it after the app starts:
frida -U -l dist/xamarin-unpin.js com.target.app --no-pause
Paketlenmiş frida-mono-api ile managed methods’ları hooklamak için hızlı şablon:
const mono = require('frida-mono-api');
Mono.ensureInitialized();
Mono.enumerateLoadedImages().forEach(i => console.log(i.name));
const klass = Mono.classFromName("Namespace", "Class");
const m = Mono.methodFromName(klass, "Method", 2);
Mono.intercept(m, { onEnter(args){ console.log(args[1].toInt32()); } });
Yeniden İmzalama
Araç Uber APK Signer aynı anahtarla birden fazla APK’nin imzalanmasını basitleştirir ve bir uygulamaya değişiklik yapıldıktan sonra uygulamayı yeniden imzalamak için kullanılabilir.
Referanslar
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
- https://github.com/jakev/pyxamstore
- https://pypi.org/project/xamarout/
- https://github.com/GoSecure/frida-xamarin-unpin
- https://gist.github.com/Diefunction/e26fce039efcab57aac342a4b2d48ff6
- https://reverseengineering.stackexchange.com/questions/31716/deobfuscating-ios-dll-file-i-think-arm64
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


