设为首页 收藏本站
查看: 873|回复: 0

[ZZ]探索一下Windows Phone 7的xde和image

[复制链接]

尚未签到

发表于 2015-5-10 13:56:52 | 显示全部楼层 |阅读模式
  http://hezongjian.com/blog/?p=10539
  今天又玩了一下windows phone 7的sdk,发现模拟器改名叫xde.exe了,不是以前的device emulator了。对于喜欢穷根究底的我,第一希望研究的不是复杂的.NET类库及API,而是WP7到底是怎么回事。那就做个小测试,深度探索一下这个xde,以及sdk中自带的image映像吧。
  一、关于XDE
  官方关于xde介绍的文档应该就是这篇:
  Windows Phone Emulator
  http://msdn.microsoft.com/en-us/library/ff402563(v=VS.92).aspx
  但是它介绍的资料非常少,少到你几乎看不到什么内容。以前的Device Emulator是个开源项目(准确的说应该叫共享源代码,Shared source,下载地址参见:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=FAA8C81D-7316-4461-A0ED-6C95B261DDCD&displaylang=en),可惜XDE没有继承Device Emulator的光荣传统,闭源了。为了揭开深层次秘密,我们只有自己挖掘了。
  XDE的默认安装目录是C:\Program Files (x86)\Microsoft XDE\1.0,看着眼熟么?跟以前的Device Emulator挺像,尤其是那个文件夹里面的1.0目录,device emulator发展到3.0的时候,安装目录的文件夹名字依然是“1.0”,很容易混淆视听。如果要重新做个模拟器,这点早就应该改掉,怎么还留着,看看两个emulator的help吧。(点击看大图,下同)
DSC0000.png
  左面的是XDE.exe的help,右面是device emulator的help,不难看出,其实80%是一样的。唯一的变化是可以模拟arm处理器不同的版本(v4, v5,v6)。貌似xde也是基于arm的模拟器。甚至有可能是传统Device Emulator的升级改进版。真是这样么?看表象就被MS给骗了。命令行的方式启动一下xde,直接xde.exe [image name],就可以启动模拟器。试几个参数,发现/c /z等参数全然无效。哈原来是挂羊头卖狗肉,忽悠纯情少年。
  再仔细挖掘下目录里的东西,两个文件比较有意思,D3DCompiler_42.dll和X86CoreSystem.dll,令人浮想联翩。WP7要用到Silverlight,再用以前的ARM模拟器,绝对是老牛拉破车,以前在CE6 R3里面做过sliverlight开发的,谁做谁知道。WP7模拟器要想摆脱效率问题,肯定要另起炉灶,怎么提高模拟器的效率呢?单靠拼了命的想通过算法提高,累死人。比较有效的途径,一个是GPU加速,另一个就是硬件虚拟化,WP7模拟器这两个东东都用上了。这两个技术好虽好,不过用了以后,最大的问题,那,那那模拟器不是只能模拟x86了么?对WP7,似乎问题不大,因为现在只允许托管代码开发,管你模拟x86还是arm还是什么架构,反正对应用程序来说,都是中间代码,都是一样的。那么到底模拟器是不是x86呢?就再探究竟吧。
  二、关于模拟器自带的OS映像
  大家知道WP7是基于Windows CE的,但是把CE包了一层又一层,包得看不出CE的样子来了,几乎跟Android和Linux的关系一样。但是到底是基于CE哪个版本,到底里头有些啥,我们就深度探个究竟。
  模拟器自带的ROM在C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Emulation\Images目录下,叫WM70c1.enus.bin。恩,虽然没叫nk.bin,但是也符合Windows CE OS Image的命名规则,有120多MB,看来在纯净CE的基础上(大概也就20-30MB)真是加了不少东西阿。下面就把这个文件解包,看看里头有啥东西。用到的工具就是Platform Builder for Windows CE 6(新的CE7还没有最终发布)。PB6最大的好处是可以直接图形化的方式打开bin文件,省了以前的viewbin.exe了。顺便说一句,用viewbin看一下这个bin文件,可以再次确认,它的architecture是x86!!!过程就不贴了。
  我们也来试一下吧,当然,我们用官方工具,不用民间工具。用装了pb扩展的vs2005直接打开这个bin文件,解包成功!说明WP7还是用的CE的标准bin文件格式。在实际设备上,应该也会用nb0或者nbh这种格式。哎,MS啊MS,这个bin格式已经被一群别有用心的人给研究得底裤都不剩了,怪不得模拟器出来几天就被人家给unlock。
DSC0001.png
  从ROM内容来看,是个典型的CE OS。先看注册表有什么好玩的东东。
  先看HKEY_LOCAL_MACHINE\Drivers\BuiltIn,这里是所有的Driver,当然这个Driver都是给模拟器写的,都是模拟器虚拟出来的外设,没啥实际意义。
  再看看启动项,也就是HKEY_LOCAL_MACHINE\init,如下图:
DSC0002.png
  这个是WP7启动的顺序,gwes.dll, device.dll自然不必多说,系统组件。熟悉的explorer.exe不在里面,当然不能在里面了。否则就弹出来标准Windows桌面了。猜一下,大概wp7的主界面应该叫telshell.exe。当然也可能不是,毕竟没有真实设备。最后加载的那个东西有意思,k.mscoree3_7.dll,大家知道k.打头的都在kernel里,微软终于把.NET虚拟机做到OS内核里了?这样也好,可以解决以前的NETCF不能解决的问题。
  后面还有一些好玩的东西,要问这个.NET Compact Framework是啥版本,也可以知道答案,注册表里面写着:3.7版。官方有这个版本么?有么?没有么?
  看到很熟悉的很多文件,dumpbin一下,也是x86版,看来模拟器是基于x86的确信无疑。至于CE是哪个版本,得到的版本号是7.0.xxx,由于CE7没发布,WP7倒发布了,所以肯定又是所谓的“内部版本”。
  还有就是IE浏览器,IE浏览器居然是native code,微软太不厚道了,只准州官放火,不许百姓点灯啊。允许微软用native code写代码,不允许我们用pInvoke啊。。
  当然,更多的是managed code,都是所谓NETCF37的类库,dump出来之后可以直接用reflector反编译,在反编译代码里面,又看到了不厚道的pInvoke。哎,无语啊。
  不写了,不玩了,写多了看上去越来越接近hacking了,本人不干hacking,一没时间,二没动力。有些内容写的很不详细,因为写详细了就做坏事了。见谅。
  总结一下,可能很多人早就知道了,不过俺是实践出真知:
  1. XDE是x86模拟器,采用了硬件虚拟化,并通过DX实现GPU加速。
  2. 模拟器ROM还是标准CE的bin文件。OS是内部版本CE7,装了.NET Compact Framework 3.7。
  3. 所谓WP7的Sandbox应该是在NETCF虚拟机一层,而不是在OS一层。能绕过虚拟机,你手上就是个标准CE!
  4. 个人感觉,WP7的model跟android比有些像(其实觉得WP7底下的OS其实用linux也可以么…),但是更封闭,无论从哪个层面来讲都是这样。当然这年头封闭并不是贬义词。.
  5.有一台真机器多好,可以玩的东西更多啊。
  补充:1、查看XDE命令行的方法:XDE.exe /helper
  2、pb是Platform Builder的简写

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65494-1-1.html 上篇帖子: Windows Phone 7 ManipulationStarted 事件 下篇帖子: Windows Phone 7 开发 视频资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表