Symbian Security Studio

About symbian software programming ,security analysis and other things about symbian.

Thursday, November 20, 2008

Symbian S60真机调试及定位问题 - alex_hua的专栏 - CSDNBlog

Symbian真机调试技术总结



基于Symbian平台(2nd/3rd)开发的程序软件,很多人都会碰到在模拟器上运行的非常正常,但一到真机上运行,就会碰到这样那样的问题。一旦在真机上出现问题,一般情况下就不会很方便的就可以解决,这就涉及到如何调试真机程序,快速准确地定位到问题所在。

总结真机调试的经验,给出如下结论:



“使用文件系统写log,同时让真机也像模拟器那样在出现Panic的时候弹出提示框”





一.使用文件系统写日志

Symbian平台本身提供了一个写log类-RFileLogger,该类可以很方便地将需要的日志写到文件中,但该类有局限性,在程序开发中需考虑是否使用。

1. 必须将log文件写到一定的路径中(C:\Logs)

2. 一次log写入长度有限制(KLogBufferSize=150,flogger.h)



基于上面所列,所以在非小型程序中不推荐使用RFileLogger类,而推荐使用一般的基于IO的写日志方法(后面附上一个简单可用的TRACE类)。



二.在真机上弹出Panic提示框(带Panic类别及错误号)

想要在真机上也像模拟器那样,在出现Panic的时候,弹出详细的Panic类别及错误号,这对定位真机问题非常有帮助。不过该机制在Symbain S60 2nd和3rd上有不同。在Symbain S60 3rd及以上,只需在.pkg文件中的文件安装部分加上如下语句即可:

;Files to install

"ErrRd" -"!:\resource\ErrRd"



但在Symbian 2nd(不知道是否是全部2nd版本还是某些版本)上,按上述方法不能得到预期的结果(2nd FP2就是这样)。这时就需要额外软件帮助了,有个叫TaskSpy的免费软件可以用来实现我们想要的功能。



三.总结

虽然在使用Carbie C++ IDE时,可以利用TRK进行真机联机调试,但使用TRK调试的效果并不是很好,尤其是稍微复杂或者大型的软件。“使用文件系统写log,同时让真机也像模拟器那样在出现Panic的时候弹出提示框”,这个方法应该是最适合真机调试及定位问题。



附:CTraceLog类



//TraceLog.h



#ifndef TRACELOG_H

#define TRACELOG_H



// INCLUDES

#include

#include

#include

#include



// CLASS DECLARATION

const TInt KMaxLogSize = 4096;

/**

* CTraceLog

*

*/

class CTraceLog : public CBase

{

public:

// Constructors and destructor



/**

* Destructor.

*/

~CTraceLog();



/**

* Two-phased constructor.

*/

static CTraceLog* NewL();



/**

* Two-phased constructor.

*/

static CTraceLog* NewLC();



void OutPutlog(TUint8 aLevel,TRefByValue< const TDesC16 > aFmt,...);

void OutPutlog(TUint8 aLevel,TRefByValue< const TDesC8 > aFmt,...);

void OutPutlog(TUint8 aLevel,const char *aFmt,...);



private:



/**

* Constructor for performing 1st stage construction

*/

CTraceLog();



/**

* EPOC default constructor for performing 2nd stage construction

*/

void ConstructL();



private:

RFile iFile;

RFileWriteStream iOutputStream;

TTime iTraceTime;

TBuf iLogBuf16;

TBuf8 iLogBuf8;



};



#endif // TRACELOG_H



// TraceLog.cpp



#include "TraceLog.h"

#include



_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");

_LIT(KLogFile,"e:\\logs\\paysercer_log.txt");

_LIT(K16LogLevel0," : ");

_LIT(K16LogLevel1," : ");

_LIT(K16LogEOF,"\r\n");

_LIT8(K8LogLevel0," : ");

_LIT8(K8LogLevel1," : ");

_LIT8(K8LogEOF,"\r\n");



CTraceLog::CTraceLog()

{

// No implementation required

}



CTraceLog::~CTraceLog()

{

iOutputStream.Close();

iFile.Close();

iFs.Close();

}



CTraceLog* CTraceLog::NewLC()

{

CTraceLog* self = new (ELeave)CTraceLog();

CleanupStack::PushL(self);

self->ConstructL();

return self;

}



CTraceLog* CTraceLog::NewL()

{

CTraceLog* self=CTraceLog::NewLC();

CleanupStack::Pop(); // self;

return self;

}



void CTraceLog::ConstructL()

{

TInt ret;

User::LeaveIfError(iFs.Connect());

ret = iFs.MkDirAll(KLogFile);

if( (KErrNone!=ret) && (KErrAlreadyExists!=ret) )

User::Leave(ret);



User::LeaveIfError(iFile.Open(iFs,

KLogFile,

EFileWrite) );

iOutputStream.Attach(iFile);

iOutputStream.Sink()->SeekL(MStreamBuf::EWrite,EStreamEnd);

}



void CTraceLog::OutPutlog(TUint8 aLevel,TRefByValue< const TDesC16 > aFmt,...)

{

iTraceTime.HomeTime();

iTraceTime.FormatL(iLogBuf16,KTimeFormat);

if(aLevel == 0) //EInfo

iLogBuf16.Append(K16LogLevel0);

else //EError

iLogBuf16.Append(K16LogLevel1);



VA_LIST ap;

VA_START(ap,aFmt);

iLogBuf16.AppendFormatList(aFmt,ap);

VA_END(ap);

iLogBuf16.Append(K16LogEOF);

iLogBuf8.Copy(iLogBuf16);

iOutputStream.WriteL(iLogBuf8);

iOutputStream.CommitL();

}



void CTraceLog::OutPutlog(TUint8 aLevel,TRefByValue< const TDesC8 > aFmt,...)

{

iTraceTime.HomeTime();

iTraceTime.FormatL(iLogBuf16,KTimeFormat);

iLogBuf8.Copy(iLogBuf16);

if(aLevel == 0) //EInfo

iLogBuf8.Append(K8LogLevel0);

else //EError

iLogBuf8.Append(K8LogLevel1);



VA_LIST ap;

VA_START(ap,aFmt);

iLogBuf8.AppendFormatList(aFmt,ap);

VA_END(ap);

iLogBuf8.Append(K8LogEOF);

iOutputStream.WriteL(iLogBuf8);

iOutputStream.CommitL();

}



void CTraceLog::OutPutlog(TUint8 aLevel,const char *aFmt,...)

{

iTraceTime.HomeTime();

iTraceTime.FormatL(iLogBuf16,KTimeFormat);

iLogBuf8.Copy(iLogBuf16);

if(aLevel == 0) //EInfo

iLogBuf8.Append(K8LogLevel0);

else //EError

iLogBuf8.Append(K8LogLevel1);



TPtrC8 fmt((TUint8*)aFmt);

VA_LIST ap;

VA_START(ap,aFmt);

iLogBuf8.AppendFormatList(fmt,ap);

VA_END(ap);

iLogBuf8.Append(K8LogEOF);

iOutputStream.WriteL(iLogBuf8);

iOutputStream.CommitL();

}

Friday, October 24, 2008

PIM卡_百度百科

PIM卡
  一、前言
  以前,小灵通(PHS)终端与用户相关身份信息属于机卡一体的体系,用户如果要购买小灵通终端,必须到电信营业厅进行烧号的工作,由电信运营商将网络参数、鉴权信息等烧入到小灵通终端内,从某种程度上限制了终端销售渠道的多样化和用户对终端的选择度,造成用户换机、换号手续复杂,不利于运营商开展增值业务,而且该种方式安全性差,不法分子很容易即可利用烧号器从终端内读出用户网络参数、鉴权信息等内容,并码使用以逃避话费。
  2004年12月13日,由中国电信集团公司、中国网通集团公司、华为技术有限公司、中兴通讯股份有限公司、UT斯达康(中国)有限公司五家公司牵头在北京成立了 "中国固网和无线终端联盟"(简称CFWTA)。
  联盟组织制定了"中国PHS机卡分离手机统一标准",正式出台了小灵通PIM卡技术规范,主要内容包括:小灵通PIM卡的逻辑结构、编码和文件结构;安全特性(鉴权、算法);机卡接口功能及其响应;EF文件内容格式;PIM卡应用工具箱(PTK)功能等。
  小灵通机卡分离中的一个重要技术创新就是:小灵通PIM卡。它是小灵通机卡分离中的灵魂,它存储着用户相关身份信息、网络参数、鉴权信息等核心内容。
  二、小灵通PIM卡技术特性
  小灵通PIM卡属于IC卡中的一种,IC卡是集成电路卡(Integrated Circuit Card)的简称,是镶嵌集成电路芯片的塑料卡片,其外形和尺寸都遵循国际标准(ISO)。芯片一般采用不易挥发性的存储器(ROM、EEPROM)、保护逻辑电路、甚至带微处理器CPU。IC卡分为:非加密存储器卡、逻辑加密存储器卡、智能卡。小灵通PIM卡属于智能卡,目前,智能卡应用最多的是GSM移动通讯中的SIM卡和CDMA移动通讯中的UIM卡,未来将要开展的3G移动通讯中的USIM卡也属于智能卡。小灵通PIM卡与SIM卡技术特性极为相似。
  (一) PIM卡定义
  SIM卡是(Subscriber Identity Module)的英文简称,PIM卡是(PHS Subscriber Identity Module)的英文简称。
  (二) PIM卡的结构和类型
  PIM卡是带有微处理器的智能芯片卡,它的构成是以下几个硬件模块:
  * CPU
  * 程序存储器(ROM)
  * 工作存储器(RAM)
  * 数据存储器(EPROM或E2PROM)
  * 串行通信单元
  这五个模块必须集成在一块集成电路中,否则其安全性会受到威胁。因为,芯片间的连线可能成为非法存取和盗用PIM卡的重要线索。
  由于PIM卡带有智能功能,所以它还有以下软件特性:
  * 植入了COS(Card Operating System)芯片操作系统
  * 以文件模型进行信息管理
  * 文件标志符作为唯一标志信息
  * 存储着PSNM、KI、国家代码、运营商代码、CCH、PIN、UCHV、ADM等网络参数、鉴权信息等内容。
  PIM卡逻辑结构如下:
  在实际使用中有两种功能相同而形式不同的PIM卡:
  (a) 卡片式(俗称大卡)PIM卡,这种形式的PIM卡符合有关IC卡的ISO…7816标准,类似IC卡。
  (b) 嵌入式(俗称小卡)PIM卡,其大小只有25mm×15mm,是半永久性地装入到移动台设备中的卡。
  两种卡外装都有防水、耐磨、抗静电、接触可*和精度高的特点。
  (三)PIM卡的电气特性
  我们从卡片上看到的金属部分是封装在模块上的载带的触点,有些人把它错误地叫做芯片。其实真正的半导体芯片被封装在模块的里面。PIM卡是按照IC卡的协议规范生产的,IC卡的协议规范中最基础最重要的一套规范是ISO/IEC 7816协议。这套协议不仅规定了IC卡的机械电气特性,而且还规定了IC卡(特别是智能卡)的应用方法(包括COS中很多数据结构)。PIM卡芯片有八个触点,与移动台设备相互接通是在卡插入设备中接通电源后完成。此时,操作系统和指令设置可以为SIM提供智能特性。
  (四)PIM卡的存储内容
  PIM卡采用新的单片机及存储器管理结构,因此处理功能大大增强。PIM卡中存有三类数据信息:
  (1) 与持卡者相关的信息以及PIM卡将来准备提供的所有业务信息,这种类型的数据存储在根目录下。
  (2) PHS应用中特有的信息,这种类型的数据存储在PHS目录下。
  (3) PHS应用所使用的信息,此信息可与其它电信应用或业务共享,位于电信目录下。
  (五)PIM卡存储结构
  PIM卡的主要完成两种功能:存储数据(控制存取各种数据)和在安全条件下(个人身份号码PIN、鉴权钥Ki正确)完成客户身份鉴权和客户信息加密算法的全过程。普通的桌面计算机上我们的大容量存储装置(硬盘之类)是分块管理的,我们习惯称之为"按扇区方式"组织。但我们在通常使用过程中并不关心"扇区"这样的概念,而只是看到一个个"文件"和"子目录"。所谓"文件",其实就是保存在一系列存储块中的一组数据,而"子目录"就是将一组文件组织在一起的一种形式。"文件"与"子目录"使我们易于使用数据。7816协议规定了智能卡采用"文件"的形式管理卡内存储器,它将卡内的文件分为3类:MF、DF和EF。MF(Master File)相当于桌面系统中的"根目录",DF(Dedicated File)相当于桌面系统中的"子目录",而EF(Elementary File)则是一个个保存数据的具体文件了。与桌面系统不同的是智能卡中DF级数(相当于目录层数的概念)通常是固定的,一般为1级(MF - DF),也有的为两级(MF - DF - SubDF)结构,但7816协议本身并不严格规定DF的级数。另外,7816协议对EF文件的类型有基本的定义,所以卡上的文件很多都是有一定格式的(如"定长记录"文件),并不是像桌面系统中的文件那样给出偏移量和长度就能操作的"透明"结构。对于更高层的协议(如EMV、PBOC),对EF文件的类型有更具体的规定,这种规定往往为了适应本领域的应用。比如PBOC协议规定的"钱包文件",就是为让智能卡适用于金融领域。PIM卡智能特性的逻辑结构是树型结构。全部特性参数信息都是用数据字段方式表达,如图所示。即在根目录下有三个应用目录,一个属于行政主管部门应用目录,两个属于技术管理的应用目录,分别是PHS应用目录和电信应用目录。所有的目录下均为数据字段,有二进制的和格式化的数据字段。数据字段中的信息有的是永存性的即不能更新的,有的是暂存的,需要更新的。每个数据字段都要表达出它的用途、更新程度、数据字段的特性(如识别符)、类型是二进制的还是格式化的等。PIM卡除了存储正常的数据字段,也存储有非文件字段,如鉴权钥、个人身份鉴权号码、个人解锁码等数据。
  (六) PIM卡中的保密算法及密钥
  PIM卡中最敏感的数据是保密算法、密匙Ki、PIN、PUK和Kc。保密算法是在生产PIM卡的同时写入的,一般人都无法读;PIN码可由客户在手机上自己设定;PUK码由运营者持有;Kc是在加密过程中由Ki导出;Ki需要根据客户的IMSI和写卡时用的母钥(Kki),由运营部门提供的一种高级算法DES,即Ki=DES(IMSI,Kki),经写卡机产生并写入PIM卡中,同时要将IMSI、Ki这一对数据送入PHS网路单元AUC鉴权中心。

来函照登:你的SIM卡安全吗? - 对牛乱弹琴 | Playin' with IT - DonewsBlog

广州一家小科技公司,简称A公司,自已开发了几个简单的短信产品,然后租用北京、广州等的大SP公司的通道(运营商规定需达到一定资质才可申请端口开展SP业务),自已运营产品。这些产品的收入(即从用户手机里面扣的费用),移动扣除15%后剩下的85%返回给SP公司,SP公司把收到的钱扣除30%后其余的70%返回给A公司。

像A公司这样没有收费通道,只提供内容的公司称之为CP(Content Provider)。

目前广州等地有不少手机SIM卡的批发市场,在批发市场里有移动、联通、电信的手机、小灵通SIM卡在流通。全市各零售的商店从这些批发市场进货,加价零售出去,赚取利润。每天的流通量很大。(顺便说一下,很多手机群发卡也是在批发市场里随处可购)

另外运营商下面一般还指定一些代理商,通过代理商放出SIM卡。

现在网上有一种“一卡多号”的产品,是从台湾流入的。其通过一个读卡器,把手机SIM卡放进读卡器,读卡器一端连接电脑,用软件控制读卡器,对SIM卡进行扫描,破解,一般扫描一张SIM卡需要半小时至几小时。最终生成一些SIM卡副本的文件。可以扫描破解任意多的SIM卡。需要时,把相应的副本文件写入”一卡多号“产品的空白SIM卡中,这些卡片一般可以同时写入十二个SIM卡副本。把此卡片放进手机SIM卡槽,就可以在十二个号码卡中任意切换。

如扫描13811111111,13811111112,1381111113,然后把这三个号码的副本写入空白的一卡多号卡片中,再把一卡多号卡放入手机,即可以在这三个号码中任意切换了。切换到13811111111,打出和接听用的就是13811111111;切换到13811111112,打出和接听用的就是13811111112。

而原来的号码为13811111111的SIM卡可以同时使用。即两个号码相同的手机可以同时待机。来电时,只有一个接收得到。接收的手机是两个中任意一个,不确定的。

通过一些简单的技术手段的处理,再给电脑加装多串口,一台电脑可以外接8个以上读卡器,同时对8张SIM卡进行扫描。如果十台电脑,就可以同时对80张SIM卡进行扫描了,每天工作十小时甚至24小时,一天就可以破解复制几百甚至几千个SIM卡。

A公司通过如下手段来发展业务,他们成批从手机SIM卡批发市场或代理商成批购进SIM卡。购进之后,小心打开包装,再用读卡器对这些新卡进行扫描。他们对这些读卡器进行了改进,可以不用破坏原始新卡片即可以复制。扫描复制完成之后,成生一个一个的副本文件,保存下来。并把这些新卡的号码登记下来。再把新SIM卡封装好,低一点的价格卖给别的批发市场的档口。通过他们最终流通到消费者手中。同时把销售时间、批次登记下来。

根据销售的时间和批次,以及卡的正常流通速度,认为某批卖给批发市场的SIM卡应该销售得差不多了,就用电话逐个打这批卡的号码。能打通的则是已经是销售出去的了,未开通的则有可能是还未销售。

对已经开通的,把这些号码的副本文件写进空白的一卡多号SIM卡。再把这些一卡多号卡放进群发手机或短信猫,用电脑群发软件控制这些号码发送短信来使用A公司的短信产品。这样就从这些号码里面每个扣掉十元钱(金额可任意或视短信产品的收费标准)。而这些号码是广大消费者在使用中的,手机费也是消费者支付的。

每个月,A公司都会从这些号码里而扣钱,只需用群发软件重复操作一次即可。消费者一般觉察不到,即使觉察得到,也退订不了,因为其可以用点播按条收费来扣费,或在用户退订后再订阅一次,照样扣钱。

一个用户扣十元,一万个号码一个月就可以带来10万的收入。

我所了解的A公司目前已经复制了以万做为单位的号码,并且每天还在不断增加复制这些号码中,对社会危害甚大。其它的同类公司则不清楚。

首款Windows Mobile木马病毒开始肆虐 - IT频道 - 21CN.COM

McAfee公司的Avert实验室发布的警告声称,首款专门针对于Windows Mobile平台的“特洛伊木马”病毒已经开始肆虐WM用户。
这款病毒被定名为WinCE/Infojack,它将安装恶意软件,并发送被感染用户的资料给木马作者。McAfee认为,此木马创建于某个中文网站,其安装包内包含Google Maps、股票买卖软件及游戏内容。
此木马安装时采用静默安装模式,一旦安装完毕,它将:首先保护自己不会被删除,而且为自己创建备份。然后会替换IE首页,允许未经签名的应用程序运行,在记忆卡中安装自动执行程序,然后把自身复制进记忆卡中。


病毒可以通过记忆卡进行传播,同时木马会通过网络给木马作者发送被感染机器的设备序列号、操作系统及其他资料信息。

目前Avert实验室提供的证据已经充分说明这款WinCE/Infojack属于木马病毒,McAfee会在针对Windows Mobile的杀毒软件中增加此款病毒的查杀。

国产操作系统“与狼共舞”

国产操作系统“与狼共舞”

在3G手机被炒得如火如荼时,3G手机操作系统的“暗战”早已展开。

从目前看来,我国自主开发的手机操作系统有科泰世纪(和欣系统)、凯思集团的Hopen昊鹏系统、科银京成的Delta道系统、波导的Doeasy多易随系统等。但国产手机操作系统由于没有强大的第三方应用软件的支持,行业认知度低,业务拓展困难重重,在与国外手机操作系统的激烈竞争中,市场份额不断被吞噬。在几大国外手机操作系统大战之时,国产手机操作系统似乎被人遗忘了。

信息产业部电子信息产品管理司副司长丁文武曾表示,“国产手机惟有加强操作系统等软件的集成创新,才能在3G市场的争夺中拥有一席之地”。事实上,在与国外手机操作系统的竞争中,国内企业一直没有放弃自主开发和推广其手机操作系统的努力。不久前,智多微电子正式发布了其自主研发的SmartNXMobile手机操作系统与NX200智能手机平台,并宣布联手重邮信科开发GSM与TD-SCDMA双模智能手机平台。这一利好消息,对于处在“艰难”突围中的国产手机厂商来说,犹如注入一针强心剂。

据了解,国外手机操作系统有一个不容忽视的问题,即使用成本较高,这让众多有意进军智能手机市场的国内手机厂商踌躇难进。因此,很多国产手机厂商都希望市场上能够有一种功能不逊于国外水平,但价格更经济的国产手机操作系统出现,使中国尽快成为全球智能手机普及率最高的国家。世界商业报道[biz.icxo.com]智多微电子首席执行官胡祥表示,基于这种需求,SmartNXMobile手机操作系统将成为国产手机厂商的首选目标,SmartNXMobile有可能成为智能手机操作系统的一股新力量。

上海科泰世纪科技公司副总裁赵彦表示,实现手机操作系统国产化,有利于服务包括运营商在内的通信产业的各方合作伙伴。要摆脱国产手机操作系统的市场困境,不仅国内企业要继续投入手机系统的研发,对市场策略进行适当调整,同时也需要政府在政策上予以支持,在有关部门的支持下,打造一条与国产手机操作系统发展相配套的产业链,为其发展壮大提供有效的途径。

Blackberry和iPhone市场份额高速成长 - WebLeOn's Blog

著名的IT调研公司Gartner发布了一份关于2007年第二季度到2008年第二季度全球智能手机市场的报告。报告中的数据显示Research In Motion公司的Blackberry(黑莓)和苹果公司的iPhone是最近一年来增长最快速的只能手机品牌。

2008年第二季度,全球智能手机销售总量超过3200万台,比2007年同期增长了15.7%。而智能手机在所有手机销售量中所占的比例和2007年相同,为11%。


Research In Motion公司的黑莓手机2008年第二季度的销售量超过了559万台,比去年同期增长了126%。而在全球智能手机市场份额也从8.9%激增到了17.4%。另外,HTC凭借高端智能手机产品,销售量也增长了近120%。而Nokia虽然增长速度不快,但依然以50.8%的市场占有率远超其它品牌。


苹果公司的iPhone手机,虽然作为一个品牌没有进入智能手机销量前5名。但是作为单一的手机型号,iPhone的销售量依然是十分惊人。从Gartner报告中按照手机操作系统来划分的销量数据中,我们也可以看到iPhone销量的高速增长。MacOS的份额从2007年的1%增长到了2008年的3.6%(iPhone是目前唯一使用MacOS系统的主流智能手机)。而且,这三倍多的增长还没有包括今年7月新发布的iPhone 3G所带来的新一轮销售热潮。

Sunday, May 4, 2008

'Open To Anything' spoof

Nokia have launched a new flash site called 'Open To Anything'. It is very good idea i think.