一、相关声明

  • 本文涉及的 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 插件一般安装在哪个目录下)

4.1.2 打开项目属性

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

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

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 为例。

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

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

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

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

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

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

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

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

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

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

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

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

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

4.4 掌握生成验证入口

4.4.1 搜索 “SignAndroidPackage”,分析相关方法

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

4.5 分析 mandroid.exe

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

4.6 分析 mandroid-win.exe

4.6.1 找到 Main 入口,并分析

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

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

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

打包:

没打包:

额,对了,再来看看 Layout:

五、写在最后

至此,基本的破解算完成了,当然小问题还是有,大多还是细节体验方面,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. golang的goroutine与channel

    Golang的goroutine是非抢占式的, 令人相当蛋疼! 有痛不能呻吟...只能配合channel在各goroutine之间传递信号来实现抢占式, 而这形成了golang最灵活与最具性能的核心. ...

  2. 004--VS C++ 绘制封闭图形

    //全局变量HPEN hPen;HBRUSH hBru[4];int sBru[4] = { HS_VERTICAL, HS_HORIZONTAL, HS_CROSS, HS_DIAGCROSS }; ...

  3. 60.ISE PhysDesignRules ERROR

    PhysDesignRules:2100 - Issue with pin connections and/or configuration on block:<U_ila_pro_0/U0/I ...

  4. Python实现SVM(支持向量机)

    Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...

  5. [磁盘管理与分区]——MBR破坏与修复

    GURB的破坏和恢复(利用备份体恢复) (1)备份 # count= //对MBR中的引导程序部分作备份 (2)破坏MBR中的前446字节 # count= (3)恢复MBR中前446字节 ===&g ...

  6. [无人值守安装操作系统]__RHEL6__FTP+TFTP+DHCP+Kickstart+PXE

    实验环境 1.实验平台:VMware Workstation 10 2.实验OS:RHEL6 3.服务器A: (1) 10.0.10.158 (2) DHCP/FTP/TFTP (3) 有可使用的yu ...

  7. 《梦断代码》读书笔记第0篇——“软件时间”、“死定了”、“Agenda之魂“

    第0章  软件时间 在未读这本书前,刚看到名字觉得是本讲代码的书,后来老师说是一个个的故事,这引起了我的兴趣,于是我便速速开始了第0章的阅读,读完一遍大概能读懂在讲什么,可能由于是译过来的书,书里面一 ...

  8. Java基础学习总结--Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换成字节序列的过程称之为对象的序列化 把字节序列恢复为对象的过程称之为对象的反序列化 对象序列化的主要用途: 1)把对象的字节序列永久的保存到硬盘上,通常放在一个文 ...

  9. xml基础学习笔记03

    继续上篇xml学习笔记,坚持.坚持.再坚持啊.... 本篇主要记录: 35.XML节点的删除与修改 36集.用XML制作RSS订阅源 <?php /* 笔记: 35.XML节点的删除与修改 使用 ...

  10. Careercup - Google面试题 - 4877486110277632

    2014-05-08 05:16 题目链接 原题: Given a circle with N defined points and a point M outside the circle, fin ...