在 .NET 反编译器中打开单声道 droid .so 文件

逆向工程 拆卸 反编译 手臂 安卓 。网
2021-07-08 08:48:48

在 Xamarin Mono droid 中开发的 .so 本机 android 文件的格式是什么?从这个 SO post看来,它们实际上是 .NET IL 二进制文件(不是本机机器代码)。但是,关于 Android NDK 开发的其他 SO帖子似乎与此相矛盾。在apk文件中,有一个lib/armebi文件夹和一个lib/x86文件夹。.NET 是否可以编译为 ARM 格式?如果可能的话,像 ILSpy 这样的基于 x86 的 .NET 反编译器似乎也无法处理 ARM 代码。有更好的解决方案吗?

编辑:我知道 Hopper 和 IDA Pro 在 ARM 模式下工作,但我们得到的是汇编而不是 .NET 代码。

1个回答

如果您正在查看“普通”单声道 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

assemblies目录中的文件将是 Mono/.Net 代码,可以使用那些普通工具进行反转。

classes.dex 是一个普通的 Android Dalvik 可执行文件 (dex),可以使用常用工具(baksmali、IDA Pro 等)反转它 - 尽管它应该只是加载以启动 Mono 引擎的存根。

包含的文件lib/**/*.so是编译成 ELF ARM 文件的本机共享库。这些通常会进入 monodroid 引擎 ( libmonodroid.so) 以及开发人员使用过的其他潜在插件。这些将需要支持 ELF ARM 的反汇编程序,如 Hopper、IDA Pro、r2 等。

在上面的特定示例中,唯一的非 Xamarin 代码将位于Sikur.dll和 中Sikur.Monodroid.dll