奇怪的 .XAP.PNG 档案(bing 地图)
当我查看 www.bing.com/maps html 源文件时,我遇到了一些 .xap.png 档案的奇怪“streetsidePrefetchFileUrls” URL:
例如: hxxp://c0.ecn.catalogservice.virtualearth.net/cs/dc/pf/Xaps/bcbc3954e568c46cf8c3cc00737da32c_Microsoft.Maps.Framework.xap.png
此文件具有 PNG 标头并包含 IDAT 块。 IDAT 块不包含像素数据,而是包含内部 Microsoft 地图 DLL 的(损坏的)PKZIP 存档。
有谁知道为什么微软使用 PNG 作为 xap 档案的容器?
我尝试使用 unzip 和 7z 解压该存档。它们都检测到 PNG 内的 ZIP 存档,但由于错误而中止解压。
When I was looking at the www.bing.com/maps html source file I came across some
strange "streetsidePrefetchFileUrls" URLs to .xap.png archives:
For exmaple:
hxxp://c0.ecn.catalogservice.virtualearth.net/cs/dc/pf/Xaps/bcbc3954e568c46cf8c3cc00737da32c_Microsoft.Maps.Framework.xap.png
This file has a PNG Header and contains an IDAT chunk. The IDAT chunk doesn't contain pixel data but a (corrupt) PKZIP archive with Microsoft Maps DLLs inside.
Does anybody know why Microsoft uses PNG as a container for xap Archives?
I've tried to unpack that archive with unzip and 7z. They all detect the ZIP-Archive inside the PNG but abort unpacking with an error.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,我注意到他们在地图应用程序 api 退出测试版之前更改为这种保护。我认为这是他们为来自第三方开发人员的 xap 代码提供一些保护的方式,我们尝试了很多方法来解密这些代码,但没有任何运气,但它的代码必须位于初始 silverlight 代码中,因此通过大量反编译,您可以可能会找到它
Yes I noticed this they changed to this kind of protection just before the map app api came out of Beta. I presume it is their way of providing some protection for xap code from 3rd party developers, we have tried lots of ways to decrypt these without any luck but the code for it must be in the initial silverlight code so with a lot of decompiling you could probably find it
http://bing.com/maps 上提供的许多 Bing 地图应用程序都包含专有算法和代码。 png 编码有助于防止人们解密 XAP 文件并反编译它们。也就是说,如果您想弄清楚如何做某件事,请尝试问这个问题。
Many of the Bing Maps App's available on http://bing.com/maps contain proprietary algorithms and code. The png encoding is there to help prevent people from decrypting the XAP files and decompiling them. That said, if there is something you are trying to figure out how to do then try asking that question instead.