通过修改itunesmetadata.plist版本号欺骗IOS软件更新

来源:互联网 发布:高音哥 知乎 编辑:程序博客网 时间:2024/05/19 20:45

我们都知道苹果软件中 iTunesMetadata.plist 的作用,那就是在iTunes之中可以显示出软件相应的信息,包括名称、厂商、类别、账户、购买日期等。看上去除了这些没有什么其他作用了,其实 iTunesMetadata.plist 这个文件还有一个最大的也是最有用的作用,那就是判断是否存在升级版本。这里所说的是否存在升级版本并非简单的版本号显示,而是通过每个版本相应的版本号代码来确认iTunes中是否已经存在更新程序可供用户更新,因此即便是破解版的程序如果有了这个文件,也是能检测出是否可升级的。这将给软件共享者们很大的方便,当他们知道了软件有新版本了,便能第一时间进行升级与共享。

     下面就来具体分析一下关于版本号的代码是如何得来的吧!我拿AVPlayer这款软件作为例子解释一下,现在AVPlayer的最新版本为1.401版,打开iTunesMetadata.plist之后拖到最下方能够看到:
<key>softwareVersionExternalIdentifier</key>
<integer>3656705</integer>   (代表1.401版)
<key>softwareVersionExternalIdentifiers</key>
<array>
    <integer>3032693</integer>
    <integer>3216503</integer>
    <integer>3236885</integer>
    <integer>3352062</integer>
    <integer>3364806</integer>
    <integer>3405873</integer>
    <integer>3499992</integer>   (代表1.31版)
    <integer>3656705</integer>   (代表1.401版)
</array>
      这样一段代码,其中有两个数字为3656705,上面单独的那一个是表示软件的版本号代码,而下面一串数字则是表示从发布以来到最新版本相应的版本号代码,也就是说只要上面的数字与下面最后的那个数字都是服务器中最新版本相应的版本号代码,那么iTunes将会判断AVPlayer为最新版本,如果这个数字小于服务器中的最新代码,则表示AVPlayer有更新,将会给予更新提示。
      但是由于很多人都是安装的破解软件,而PC端的iTunes是通过账号的购买信息再加上这个版本号代码来确认是否有更新的,因此破解版程序在iTunes中是不会显示相应软件的更新提示的。但是如果你把AVPlayer软件同步到手机中之后,手机上的iTunes却会把你所安装的所有程序都判定为你自己所下载的程序,也就是说在手机中如果版本号代码能够相对应的话,那么在连接了网络的情况之下如果软件有更新是会给你提示的。不过有时候有些人共享的破解软件却删除了iTunesMetadata.plist这个文件,因此即便现在是最新版本,但是将来有更新的时候也无法查询软件更新信息。这个时候有一个办法,找到老版本的程序,比方说找到1.311版,只要有iTunesMetadata.plist这个文件便好,由于他是老版本,因此在两个数字3656705的位置上应该会是显示的3499992。将它传到你手机中此软件的相应文件夹中,然后在上方所展示的位置中,在单独的那个位置把数字改为<integer>3656705</integer>,在最下面那一串代码中最后一行的<integer>3499992</integer>下面添加一行<integer>3656705</integer>,便可以在将来有更新时获取提示了。而如何样确认新版本的代码为3656705呢?也很简单,通过iFunBox找到iTunesMetadata.plist这个文件,随便输入大于3499992的数字,如果其小于3656705将依然提示更新,而如果大于3656705便不会有提示,直到找到输入3656704显示更新,而3656705不会显示更新的时候便能确认3656705便是最新的版本号代码了。
      这里并不是说每个人都需要把最新的版本号代码找出来,只是通过这个解析来说明iTunesMetadata.plist这个文件的具体作用。同时希望以后进行软件共享的朋友能够尽量保留iTunesMetadata.plist这个文件,这能够让更多的人关注到更新信息,同时也能让有能力进行更新的人为大家带来更多更及时的软件更新。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>appleId</key>
 <string>你的账户名称</string>
 <key>artistId</key>
 <integer>322410769</integer>
 <key>artistName</key>
 <string>开发者信息</string>
 <key>buy-only</key>
 <true/>
 <key>buyParams</key>
 <string>productType=C&amp;salableAdamId=322410766&amp;pricingParameters=STDQ&amp;price=0&amp;ct-id=14</string>
 <key>copyright</key>
 <string>© Dare</string>
 <key>drmVersionNumber</key>
 <integer>0</integer>
 <key>fileExtension</key>
 <string>.app</string>
 <key>genre</key>
 <string>软件风格</string>
 <key>genreId</key>
 <integer>6014</integer>
 <key>itemId</key>
 <integer>322410766</integer>
 <key>itemName</key>
 <string>软件名称</string>
 <key>kind</key>
 <string>software</string>
 <key>playlistArtistName</key>
 <string>Dare Digital Ltd</string>
 <key>playlistName</key>
 <string>软件表演者名称</string>
 <key>price</key>
 <integer>0</integer>
 <key>priceDisplay</key>
 <string>免费</string>
 <key>purchaseDate</key>
 <date>2010-05-20T13:18:14Z</date>
 <key>rating</key>
 <dict>
  <key>content</key>
  <string></string>
  <key>label</key>
  <string>软件限制级别</string>
  <key>rank</key>
  <integer>100</integer>
  <key>system</key>
  <string>itunes-games</string>
 </dict>
 <key>releaseDate</key>
 <string>2009-10-23T11:19:14Z</string>
 <key>s</key>
 <integer>143465</integer>
 <key>softwareIcon57x57URL</key>
 <string>http://a1.phobos.apple.com/us/r1000/001/Purple/42/e2/4c/mzl.rlvjnczf.png</string>
 <key>softwareIconNeedsShine</key>
 <false/>
 <key>softwareSupportedDeviceIds</key>
 <array>
  <integer>1</integer>
 </array>
 <key>softwareVersionBundleId</key>
 <string>com.daredigital.waterslide</string>
 <key>softwareVersionExternalIdentifier</key>
 <integer>软件版本</integer>
 <key>softwareVersionExternalIdentifiers</key>
 <array>
  <integer>1822352</integer>
  <integer>1881813</integer>
 </array>
 <key>subgenres</key>
 <array>
  <dict>
   <key>genre</key>
   <string>软件类别</string>
   <key>genreId</key>
   <integer>7013</integer>
  </dict>
  <dict>
   <key>genre</key>
   <string>软件类别</string>
   <key>genreId</key>
   <integer>7001</integer>
  </dict>
 </array>
 <key>vendorId</key>
 <integer>255664</integer>
 <key>versionRestrictions</key>
 <integer>16843008</integer>
</dict>
</plist>

0 0