Xamarin.Android - 本机代码编译是否会使逆向工程变得更加困难?

2024-01-20

我们正在考虑将 C# .NET 应用程序移植到 Android,我已经开始阅读有关 Xamarin.Android 和 Mono 框架的内容。我刚刚开始Android 开发。

我注意到主要http://xamarin.com/android http://xamarin.com/android页面指​​出:

本机代码 高性能编译代码,可完全访问所有本机 API。

这是否意味着生成的代码将是更难以逆向工程的本机代码?我们希望创建一个包含关键算法的类库,如果我们可以将其编译为本机代码以阻碍逆向工程,这将使我们不再担心移植。

我读过其他几篇关于 Android 代码并不比混淆的 .net 程序集更难反编译(使用 ProGuard 之后)的文章。本机代码编译是这些帖子之后出现的最新功能吗?感谢您的任何建议!


目前,Android 下的 Xamarin 无法编译为本机处理器代码。它创建 .NET p 代码,该代码在 Mono 虚拟机中运行,每个 Xamarin 编译的应用程序都会与其余应用程序文件一起安装。据我所知,为 Android 创建本机代码的唯一合理方法是使用 Android NDK (http://developer.android.com/tools/sdk/ndk/index.html http://developer.android.com/tools/sdk/ndk/index.html)并用 C 或 C++ 编写代码。

我做了一些非正式的基准测试,比较了 Java 和用 Xamarin 和 Dot42 编译的 C# 中的类似代码,以及真实应用程序(文本处理)的本机代码。基本上,在该特定应用程序上,Xamarin 的 C# 比 Java 或 Dot42 快大约 10-20%,而本机代码大约快 5-6 倍。阅读更多内容:

有没有人有比较用 Xamarin C# 和 Java 编写的 Android 应用程序性能的基准(代码和结果)? https://stackoverflow.com/questions/17134522/does-anyone-have-benchmarks-code-results-comparing-performance-of-android-ap

另外,为了保护我的 Android Java 代码免遭黑客攻击,我使用 DexGuard 混淆器 (http://www.saikoa.com/dexguard http://www.saikoa.com/dexguard)。然而,我真不知道对于优秀的黑客来说,反编译和篡改这样的混淆代码要困难多少。当然,DexGuard 不会保护 .NET Xamarin 代码,只会保护 Java 代码或为 JVM 编译的其他代码。它甚至不会保护 Dot42 代码,该代码直接编译为 Dalvik VM p 代码(所有普通 Android 应用程序都在其中运行的虚拟机,Java 代码也会被“dexed”并转换为 Dalvik 代码,然后才能在 Android 上运行)。

Greg

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.Android - 本机代码编译是否会使逆向工程变得更加困难? 的相关文章

随机推荐

  • 将桌子分成两半

    无论如何 是否可以使用 CSS 将表格分成两半并并排显示两个部分 例如 采取这个 row1 row1 row1 row2 row2 row2 row3 row3 row3 row4 row4 row4 row5 row5 row5 并做这个
  • 什么是纯 Java [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我受邀参加 Pure Java Developer 面试 请帮助我理解什么是纯Java 找不到任何有关它的信息 纯Java代码是这样的代码 符合
  • 在 Haskell 中基于新类型(“包装类型”)构建函数的惯用方法是什么?

    Let StringWrapper1 and StringWrapper2是包裹字符串的两种类型 即newtype StringWrapper1 StringWrapper1 String and newtype StringWrapper
  • 导入错误:没有名为 6 的模块

    我正在尝试构建 OpenERP 项目 并完成依赖项 现在出现这个错误 Traceback most recent call last File openerp client py line 105 in
  • 理解 PyTorch 中使用backward()的梯度计算

    我试图了解基本的 pytorch autograd 系统 x torch tensor 10 requires grad True print tensor x x backward print gradient x grad output
  • 使用 javascript/jquery 查找链接目标是否为图像

    我正在尝试编写一个脚本来找到所有 a 目标是 jpg gif 或 png 的标签 并向它们附加一个函数 a filter function return this href match probably some regex here bi
  • 如何根据姓名和 ID 计算 C 列中的“否”?

    我有 3 列 A B C Name ID Report 在 A 列中我有名字 可以重复 在 B 列中 我有 ID 可以为不同的名称重复使用相同的 ID 在 C 列中 我有 是 和 否 可以对同一 ID 重复使用 否 我需要帮助来计算 Joh
  • 在 Android 寻呼机中隐藏应用程序标题栏

    Can anyone tell how to hide the app title bar in Pager fragment 这应该足够了 ActionBar bar getActionBar you might need to use
  • git中的暂存区有什么用

    我对 git 很陌生 我刚刚了解了工作目录和暂存区域的概念 我不太清楚暂存区的用途 如果暂存区域不存在并且我们可以直接从工作目录提交到本地存储库 可能会出现什么问题 抱歉 如果我的问题很愚蠢 谢谢并致以问候 京东 你的问题一点也不傻 它是构
  • 如何使用 CXF、JAX-RS 和 HTTP 缓存

    The CXF http cxf apache org 文档提到缓存为高级HTTP http cxf apache org docs jax rs html JAX RS AdvancedHTTP CXF JAXRS 通过处理 If Mat
  • 使用 wpf HierarchicalDataTemplate 接口的任何方式

    您好 我正在使用接口 IFooNode 它是树的一部分 我想使用 HierarchicalDataTemplate 在 TreeView 中显示这棵树 然而 由于接口的原因 这不起作用 我看到两种方法 但都不是我所说的 好 找出真正实现 I
  • Python - Pandas - 对特定子集的 dropna 调用期间出现关键错误

    我的目标 我希望删除特定列中具有 NaN 的行 我将允许 NaN 存在于某些列上 但不允许存在于其他列上 英文示例 如果一行中 detail age 的值为 NaN 我想删除该行 这是我的数据的视图 import pandas as pd
  • 页面回发中的 Javascript 事件

    是否有回发时触发的 JavaScript 事件 如果没有 如何在页面回发之后或之前立即运行客户端代码 我相信您正在寻找的是Sys WebForms PageRequestManager beginRequest 事件 http msdn m
  • PHP:最安全(可解密)的加密方法?

    在 PHP 中 可解密的 加密算法是最安全的一种吗 我的意思是MD5无法解密 对吗 我找到了带有 mcrypt 的完整工作类 然后再次用 base64 编码 它可以加密并解密回来 示例 mcrypt 加密 function encrypt
  • 如何避免 Jenkins 多分支管道作业自行触发

    我希望我的 Jenkins 多分支管道作业能够避免自行触发 该作业进行提交 因为它会增加版本文件并将其签入源代码管理 这会导致无限循环 在正常工作中我可以遵循这些说明 https liviutudor com 2015 12 09 jenk
  • Android实时数据库抛出错误:客户端已离线但实际上并没有

    该应用程序执行简单的注册 使用 FirebaseAuth FirebaseUI 和 Google Sign In 认证时成功地 我拿firebaseUser userId并使用它从实时数据库中获取用户配置文件 示例位置 users user
  • 使用 TFS 2010“构建”经典 ASP

    我使用 TFS 2010 进行源代码控制和持续集成 除其他外 我有一个我维护的经典 ASP 应用程序 我想将其合并到持续集成构建中 但是 我必须在构建定义中提供 要构建的项目 由于经典 ASP 没有与之关联的解决方案或项目 因此我仍然可以使
  • Struts2 ValueStack如何处理多个请求

    我明白ValueStack在 Struts2 中引入 Struts1 模型的另一项变化现在是一个新的ActionObject为每个请求实例化 所以我们可以定义实例变量而不用担心多线程问题 拦截器和 JSP 访问实例变量的方式ActionOb
  • 如何抑制 ggplot2 图中的垂直网格线?

    我正在构建一个条形图 其中条形足以作为水平 x 放置的指示 因此我想避免绘制多余的垂直网格线 我了解如何在 opts 中设置次要和主要网格线的样式 但我一生都无法弄清楚如何仅抑制垂直网格线 library ggplot2 data lt d
  • Xamarin.Android - 本机代码编译是否会使逆向工程变得更加困难?

    我们正在考虑将 C NET 应用程序移植到 Android 我已经开始阅读有关 Xamarin Android 和 Mono 框架的内容 我刚刚开始Android 开发 我注意到主要http xamarin com android http