Xamarin for Visual Studio 破解日志
一、相关声明
- 本文涉及的 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
- 一款反编译软件,ILSpy 或 Reflector
- 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 破解日志的更多相关文章
- Xamarin For Visual Studio 3.0.54.0 完整离线破解版(C# 开发Android、IOS工具 吾乐吧软件站分享)
Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xamarin For iOS,最新版的已经把两个独立的插件合并为一个exe安装包了.为了区分 ...
- Xamarin For Visual Studio 3.7.165 完整离线破解版
原文 Xamarin For Visual Studio 3.7.165 完整离线破解版 Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xa ...
- Xamarin For Visual Studio 3.0.54.0 完整离线破解版
Xamarin For Visual Studio 3.0.54.0 完整离线破解版 Xamarin For Visual Studio就是原本的Xamarin For Android 以及 Xama ...
- Xamarin for Visual Studio 3.11.666 稳定版 破解补丁 Version 3
前提概要 1.全新安装请参考 安装 Xamarin for Visual Studio. 2.本次补丁包含: ① Xamarin for Visual Studio 3.11.666 ② Xamari ...
- Xamarin for Visual Studio 3.11.666 Beta版 破解补丁
注意:本版本是 Beta 版 现已推送到稳定频道 前提概要 全新安装请参考 安装 Xamarin for Visual Studio. 最新稳定版请参考 Xamarin for Visual St ...
- Xamarin for Visual Studio 3.11.658 Alpha 版 破解补丁
注意:此版本为 Alpha 版,版本迭代较频繁,仅供尝鲜 前提概要 全新安装请参考 安装 Xamarin for Visual Studio. 最新稳定版请参考 Xamarin for Visual ...
- Xamarin for Visual Studio 3.11.590 稳定版 破解补丁 Version 3
前提概要 全新安装请参考 安装 Xamarin for Visual Studio. Release Log 3.11.590 此版本是紧急修复(HotFix)版,重点改善了 build-tool 及 ...
- [百度网盘]Xamarin for Visual Studio 3.7.165 Preview 最新版-介绍
Xamarin 3.7.165 Preview 下载地址:http://download.xamarin.com/XamarinforVisualStudio/Windows/Xamarin.Visu ...
- [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考、NuGet组件参考
[Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考.NuGet组件参考 解决方案 目前Visual Studio中最新版本的Xamarin.iO ...
随机推荐
- 关于table元素的认识
表格是网页上最常见的元素,但是,现在对很多刚入行的前端们那是谈table色变.那是为啥?这是表格的框架的简单.明了.在传统的网页中使用没有边框的表格来排版是非常流行.在web标准逐渐深入设计领域以后, ...
- microsoft azure Media Services 媒体服务解决方案
用安全的方式为您随时随地跨设备传送媒体内容.提供可伸缩的端到端媒体解决方案 可用于高级视频工作流的云 实现奥运会规模的直播与点播媒体传送 高可用的编码和流式处理 支持 Flash.iOS.Androi ...
- 位bit——字节Byte???
1.换算 每8个位(bit)组成一个字节(byte) 位bit简写为小写字母“b”,字节Byte简写为大写字母“B” 8*b=1*B 1024*B=1*KB 1024*K=1MB 2.举例 一个英文字 ...
- 20.时钟抖动(jitter)和时钟偏移(skew)的概念?
jitter:由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是jitter,指的是时钟周期的变化.指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内 ...
- angular2如何按需加载?
angular2用webpack打包每次都只打包成单个mian文件,很大,例如页面中的关于我们,联系我们这样的页面,用户可能几乎不会打开,但是我们还是每次都要让用户加载,体验很不好, 这样就需要按需加 ...
- TI IPNC Web网页之流程分析
流程 Appro IPNC使用的web服务器是boa. 请仔细理解下面这段话. boa这个web服务器是GUI界面和IPNC应用程序之间的通信的桥梁.它的责任是从web GUI中接收HTTP请求,并且 ...
- snmp数据包分析
今天看了一下snmp数据包的报文格式,用wireshark抓了两个数据包来分析. 先说说snmp get-request的书报包格式吧,get-next-request,get-response,se ...
- Ant学习---第二节:Ant添加文件夹和文件夹集的使用
一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant; public class HelloWorld { ...
- 设置浮点数的显示精度&precision(0)
/* 设置浮点数的显示精度 cout.precision(int)可以设置浮点数的显示精度(不包括小数点) 注: 1.如果设置的精度大于浮点数的位数,如果浮点数能根据IEEE ...
- java笔试题(1)
char型变量中能不能存贮一个中文汉字? char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦.不过,如果某个特殊的汉字没 ...