Xamarin for Visual Studio 破解日志

时间:2022-09-22 11:42:43

一、相关声明

  • 本文涉及的 Xamarin 系列软件的版权为 Xamarin Inc. 所有
  • 以本文涉及的思路和方法破解的软件,禁止用于商业用途
  • 如无必要,学习和研究时最好以正版为准
  • 团队或土豪等若觉得 Xamarin 非常适合自身的业务,请务必支持正版
  • 本文禁止转载扩散
  • 之后应该不会发相关破解了,太耗时间

二、相关背景

2.1 材料背景

  2014年年底,微软在 Connect 开发者大会上宣布了一系列展望,其中就有一个是 Visual Studio “通用平台”(跨平台开发)的进程,在这里,Xamarin 开始走入更多人的视野里。之后,微软在开源的道路上不断前行,同时,也不停地打磨 Windows 10 和 Visual Studio,终于将在 2015 年夏,正式推出 Windows 10 、Visual Studio 2015 等一系列软件;而今,Visual Studio 2015 已抢先发布了 RTM 版。

2.2 破解背景

  • 首先,本人懒,每个平台都学一门新的语言,我累,而且吃了太多语法糖,对 Java 等不怎么中意;
  • 其次,Xamarin 免费版功能限制太多,试用版就一个月;
  • 第三,网上的破解都太过陈旧;
  • 最最重要的是,正版授权费对个人而言太贵了。

  本文将以 Visual Studio 2015 RTM 版带的 Xamarin for Visual Studio 3.11.372 为说明蓝本,以 Xamarin.Android 为说明对象,介绍 Xamarin for Visual Studio 的破解思路。

三、前期准备

  破解之前,我们应该装备有以下武器,为我们的破解之路扫清障碍(这里默认对这些工具都会简单的操作,本文不会展开如何使用;若对某些工具不熟悉,建议到相关网站查看操作,基本都很简单,差不多一看就会;建议使用正版软件,Reflector 和 IDA Pro 等的破解请自行查找):

  • Visual Studio 2010+ 或 Xamarin Studio
  • 一份各项安装完备的 Xamarin
  • 一款反编译软件,ILSpyReflector
  • Reflexil 插件,一般选择相应“AIO”版本(All-in-One?我猜的)
  • IDA Pro
  • @BinSys 写的 IDA 插件
  • Mono(非必要)
  • Process Explorer (非必要)
  • 抓包工具(非必要)

四、破解思路

4.1 大概运行一遍正版的流程,确认相关验证范围,在此过程中可抓包

4.1.1 新建一个 Xamarin.Android 项目,如 Blank App,将生成输出详细级别设为“详细”以上;同时可用 Process Explorer 查看 devenv (VS)总共调用了多少 Xamarin 的 dll(预备技能:需知 Visual Studio 插件一般安装在哪个目录下)

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

4.1.2 打开项目属性

Xamarin for Visual Studio 破解日志

4.1.3 现直接生成项目,会弹出登录账号,点击“取消”,会有错误提醒

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

4.1.4 再次点击生成,并随便登录一个账号后(默认权限为 Starter),会开始生成。同时,用 Process Explorer 工具查看,生成过程中 devenv (VS)调用了哪些程序,查看所在位置

Xamarin for Visual Studio 破解日志

4.1.5 结论

  通过抓包可知,在 Xamarin.Android 生成过程中,不涉及网络验证,且仅在登录过程中获取了权限信息;通过 Process Explorer 信息可知,在生成过程中会调用 mandroid.exe,同时能知晓,VS涉及到了 Xamarin 的 dll 有哪几个。退出 Xamarin 账号,并关闭Visual Studio,接下来就要枯燥的排除工作了。

4.2 确认授权验证相关

4.2.1 “站在巨人的肩膀上”

  一般来说,破解之前都会搜索一下是否有人破解过某款软件,思路如何,需要修改的文件是哪几个,我们依样画葫芦……我找不到我看得那个网页了,记得是一篇 blogspot 的文章,那个确实有说哪里要搞。

4.2.2 “小子,我看好你哦”

  如果没人搞过,或者思路没给清楚,那就麻烦多了,一种思路是,把涉及到的 Xamarin dll 都拖到 ILSpy 中,用之前得到的几个提醒内容,提取关键字来“搜索字符串”,如 Enterprise 或 Starter 等,这里我们以 Enterprise 为例。

Xamarin for Visual Studio 破解日志

  然后,不断分析这两个方法以及内容以及各引用,可以判断用 XamarinEdition 来指示 Xamarin 的权限。

Xamarin for Visual Studio 破解日志

  接着,就来分析 XamarinEdition 被哪些调用了,再不断分析这些调用,大概就能确定一般情况下大都最终都会调用 XamarinEntitlements 类。

Xamarin for Visual Studio 破解日志

  用 Reflexil 修改 XamarinEntitlements 类,因为 set 为私有,所以用 C# 一般直接生成不了,切换到 IL,改 IL,修改完毕后,请记得 Update ILSpy object model(ILSpy能立即更新显示,以前Reflector是不能的,不知道现在如何)。

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

  细节方面,自己改,你可以把set清空,把字段也删了,这样也顺便把自定义Attribute也删了,当然不仅仅是这一个属性,其他相关属性一样的道理,然后全部改完后,点击“验证”,没提示错误,就可以直接保存了,他会提示强签名什么的 ,我一般都是选第一个的(需要将sn.exe放到环境变量 PATH 中)。

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

  修改 源文件以及补丁名称。

Xamarin for Visual Studio 破解日志

4.3 验证目前的修改是否正确

4.3.1 重启 Visual Studio,打开之前的项目

Xamarin for Visual Studio 破解日志

还是弹出来 Welcome(→_→因为我们之前只是改了权限,没改是否登录,忽略)

4.3.2 重新生成项目,发现可以直接生成了,说明这修改还是有作用的。

4.3.3 现在,打开项目属性,我们要来试试,需要 Enterprise 权限的功能之“打包程序集”。

Xamarin for Visual Studio 破解日志

注意,要在 Release 模式下,勾选“Bundle assemblies into native code”,然后,重新生成并点击“Export Android Package”。(Debug 模式下,没有打包成 apk 这个选项,除非点得是“开始调试”才会自动打包)

Xamarin for Visual Studio 破解日志

然而,它竟然弹出了一个提醒框:

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

然后,我们可以这个提示错误的步骤名为“SignAndroidPackage”,然后,退出Visual Studio,我们要开始硬来了。

4.4 掌握生成验证入口

4.4.1 搜索 “SignAndroidPackage”,分析相关方法Xamarin for Visual Studio 破解日志

4.4.2 对函数过程不断分析,缩小范围,然后得到 IServiceProvider、XamarinAndroidPackage 之类的一系列东西,最终得到 mandroid.exe(一般我都是用 Process Explorer 直接看是否调用了其他东西)

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

Xamarin for Visual Studio 破解日志

4.5 分析 mandroid.exe

没啥好说的, 我水平有限,具体分析请阅读,@BinSys 写的系列文章

4.6 分析 mandroid-win.exe

4.6.1 找到 Main 入口,并分析

Xamarin for Visual Studio 破解日志

4.6.2 用 Reflexil 修改保存相关数据,并将其压入mandroid.exe中(可用脚本、代码或手动mkbundle),这里就不展开了

4.7 重新打开先前的项目,并点击“Export Android Package”,没有出错

Xamarin for Visual Studio 破解日志

现在,我们可以对比一下, 打包与没打包的区别。

打包:Xamarin for Visual Studio 破解日志

没打包:Xamarin for Visual Studio 破解日志

额,对了,再来看看 Layout:

Xamarin for Visual Studio 破解日志

五、写在最后

至此,基本的破解算完成了,当然小问题还是有,大多还是细节体验方面,Log 输出不一致,账号要登录(不登录的话每次都弹 Welcome 觉得不爽)。而对于 Xamarin.IOS 来说,涉及的范围更大。

PS:使用 Xamarin,还是要学习相关平台的知识,只是降低了语言成本罢了。

Xamarin for Visual Studio 破解日志的更多相关文章

  1. Xamarin For Visual Studio 3.0.54.0 完整离线破解版(C# 开发Android、IOS工具 吾乐吧软件站分享)

    Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xamarin For iOS,最新版的已经把两个独立的插件合并为一个exe安装包了.为了区分 ...

  2. Xamarin For Visual Studio 3.7.165 完整离线破解版

    原文 Xamarin For Visual Studio 3.7.165 完整离线破解版 Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xa ...

  3. Xamarin For Visual Studio 3.0.54.0 完整离线破解版

    Xamarin For Visual Studio 3.0.54.0 完整离线破解版 Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xama ...

  4. Xamarin for Visual Studio 3.11.666 稳定版 破解补丁 Version 3

    前提概要 1.全新安装请参考 安装 Xamarin for Visual Studio. 2.本次补丁包含: ① Xamarin for Visual Studio 3.11.666 ② Xamari ...

  5. Xamarin for Visual Studio 3.11.666 Beta版 破解补丁

    注意:本版本是 Beta 版   现已推送到稳定频道 前提概要 全新安装请参考 安装 Xamarin for Visual Studio. 最新稳定版请参考 Xamarin for Visual St ...

  6. Xamarin for Visual Studio 3.11.658 Alpha 版 破解补丁

    注意:此版本为 Alpha 版,版本迭代较频繁,仅供尝鲜 前提概要 全新安装请参考 安装 Xamarin for Visual Studio. 最新稳定版请参考 Xamarin for Visual ...

  7. Xamarin for Visual Studio 3.11.590 稳定版 破解补丁 Version 3

    前提概要 全新安装请参考 安装 Xamarin for Visual Studio. Release Log 3.11.590 此版本是紧急修复(HotFix)版,重点改善了 build-tool 及 ...

  8. [百度网盘]Xamarin for Visual Studio 3.7.165 Preview 最新版-介绍

    Xamarin 3.7.165 Preview 下载地址:http://download.xamarin.com/XamarinforVisualStudio/Windows/Xamarin.Visu ...

  9. [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考、NuGet组件参考

    [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考.NuGet组件参考 解决方案 目前Visual Studio中最新版本的Xamarin.iO ...

随机推荐

  1. asp.net mvc 在视图中获取控制器与动作的名称

    获取 controller 名称: ViewContext.RouteData.Values["controller"].ToString(); 获取 action 名称: Vie ...

  2. CString转换成char*

    CString转换成char* :charSource = (char*)strSource.GetBuffer(0); 法2:charSource = (char*)strSource.GetBuf ...

  3. 《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View

    ActionResult ActionResult是Action的返回结果.ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回 ...

  4. XML文件的创建和解析笔记

    解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...

  5. SQL[Err] ORA-00979: not a GROUP BY expression

    Oracle中group by用法 not a GROUP BY expression异常产生是因为group by用法的问题. 在使用group by 时,有一个规则需要遵守,即出现在select列 ...

  6. PythonStudy——如何使输出不换行

    python 3.x版本打印不换行格式如下: print(x, end="") # end="" 可使输出不换行.双引号之间的内容就是结束的内容, # 可以是空 ...

  7. Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流)

    Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流) Description 给定有向图G=(V,E).设P是G的一个简单路(顶点不相 ...

  8. windows上安装maven及eclipse中配置maven

    本地安装与配置: 1.jdk 在cmd中运行 Java -version 2.下载maven包 https://maven.apache.org/download.cgi下载最新版的Maven程序:( ...

  9. Laravel5.5 使用第三方Vendor添加注册验证码

    Laravel5系列的验证码添加通用,使用第三方验证码即可完美实现.这里记录下具体步骤吧,以备不时之需. 第一步:使用composer 安装 验证码库 composer require mews/ca ...

  10. collection 多态 会自动转型为子类 继承多态需要显示转型