有什么方法可以确定给定的 Android 或 iOS 应用程序是使用 Xamarin 构建的吗?
最佳答案
是的。应用程序文件夹的结构。例如,您可以在 Android 中
如果您正在查看“普通”单声道 droid 应用程序(使用 Xamarin 之类的程序编译),那么您将在 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
程序集目录中的文件将是 Mono/.Net 代码,可以使用那些普通工具进行反转。
classes.dex 是一个普通的 Android Dalvik 可执行文件 (dex),可以使用常用工具(baksmali、IDA Pro 等)反转它 - 尽管它应该只是加载以启动 Mono 引擎的 stub 。
lib/**/*.so 中包含的文件是编译成 ELF ARM 文件的 native 共享库。这些通常会进入 monodroid 引擎 (libmonodroid.so) 以及开发人员使用过的其他潜在插件。这些将需要支持 ELF ARM 的反汇编程序,如 Hopper、IDA Pro、r2 等。
在上面的特定示例中,唯一的非 Xamarin 代码将位于 Sikur.dll 和 Sikur.Monodroid.dll 中。
反编译apk
https://ibotpeaches.github.io/Apktool/
如果在 xamarin 中有一个 mono.dll。
您可以在 C# 中反编译一些 .dll 观看代码。
在 iOS 中你不能反编译。 Android 应用程序被编译为独立于机器的 Java 字节码,将其转换回 Java 相对容易。 iOS 应用程序直接编译为机器代码,并通过积极的优化传递,这往往会破坏原始代码的许多结构。
不过,这并不是说你不能从编译好的 iOS 应用程序中学到任何有用的东西。 class-dump工具可以从编译的应用程序中提取 Objective-C 类、属性和方法的名称,这可以为您提供有关它是如何实现的线索。 NibUnlocker可以将编译的 Interface Builder UI 文件转换回可编辑的格式。 Hopper不仅可以将机器码反汇编为汇编代码,还可以进一步将其转换为更易理解的伪代码。图像、声音和其他资源通常未加密地包含在 iOS 应用程序包中。
您可以尝试使用此应用程序并观察不同之处在于阅读此答案的任何人都可以尝试。让我知道有什么区别。
关于xamarin - 查找应用程序是否是使用 Xamarin 构建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982770/