从sis文件中提取UID

在sis打包过程中,经常出现将A.sis包含到B.sis一起打包的情况,这时需要知道A.sis的UID,否则B.sis无法包含A.sis,一个简单的方法是在SISWare中打开A.sis,便可看到UID:



仔细研究下sis文件格式,发现每个sis文件开头16个字节有如下规律:

00-03字节:UID1
04-07字节:UID2
08-11字节:UID3
12-15字节:UID Checksum



知道这点,要取出UID就不难了:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] b = new byte[16];//取出开始16字节
            using (FileStream fs = new FileStream(@"C:\Documents and Settings\Administrator\桌面\QQ2008_S60V2_Build070_n70.sis", FileMode.Open))
            {
                fs.Read(b, 0, 16);
            }

            string uid1 = "";
            for (int i = 3; i >= 0; i--)
                uid1 += Hex(b[i]);
            Console.WriteLine("UID1:{0}", uid1);

            string uid2 = "";
            for (int i = 7; i >= 4; i--)
                uid2 += Hex(b[i]);
            Console.WriteLine("UID2:{0}", uid2);

            string uid3 = "";
            for (int i = 11; i >= 8; i--)
                uid3 += Hex(b[i]);
            Console.WriteLine("UID3:{0}", uid3);

            string uidchecksum = "";
            for (int i = 15; i >= 12; i--)
                uidchecksum += Hex(b[i]);
            Console.WriteLine("UID Checksum:{0}", uidchecksum);

            Console.ReadKey();
        }

        static string Hex(byte b)
        {
            string t = b.ToString("x").ToUpper();
            if (t.Length == 1)
                t = "0" + t;
            return t;
        }

    }

}

测试发现,S60二版sis的UID是UID1的值,S60三版、五版sis的UID是UID3的值(前4个字节固定为7A 1A 20 10)!

附:Symbian OS资源UID说明

Symbian OS资源的UID是由32位二进制数字构成,分三种类型:UID1、UID2和UID3:

UID1:确定文件是文档还是可执行码,应将它看作一个系统级的标志符,用于区分可执行文件、DLL等文件;
UID2:对于文档文件,UID2确定文档类型(应用程序数据文件或.aif文件);对于可执行代码文件,UID2确定可执行文件的类型(.app、.dll、.tsy);
UID3:是一个应用程序级的标志符,应用程序的UID3必须不同于其他所有应用程序。只有Symbian才可以发布这些值。通过电子邮件到Symbian获取,开发实验时,可以使用0x01000000~0x0FFFFFFF,但发布时不能再使用;

UID Checksum为校验总和,放在3个UID后边。

上一篇: VB获取窗体上的按钮控件并单击示例
下一篇: ??运算符(C#)
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 5370
发表评论
登录后再发表评论!