Symbian Security Studio

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

Tuesday, March 25, 2008

Symbian S60开发工具介绍:一、基本编程环境

从事Symbian S60的开发一个最重要的先决条件就是配置开发环境,在这个配置的过程中可能会出现一些问题,这里我把我使用各个版本的开发工具的一些经验写出来,供大家参考:
一、配置开发环境前的注意事项:
首先,相关的软件和SDK最好装在C盘。虽然官方声称可以装在其他的分区中,考虑到新老版本SDK与不同软件开发环境之间的复杂设置,安装到其他分区给你带来的绝对不仅仅是一场梦魇那么简单。此外,一般安装到默认文件夹会是一个好习惯和好的开始。
还有一点十分重要的就是你一定要确保你的C盘的空间足够大,因为因为nokia的S60 SDK,版本繁多,很多情况下都不是只安装一两个就能解决你的开发需求的。而且在开发过程中产生的各种中间文件的体积也不可小视,保守估计20g以上时必须的。
二、Java与Perl的支持
按照官方的要求,这两个是必须安装的。这里值得注意到是Java与Perl不要安装最新版本。因为在极个别情况下会出现意外的情况,这点在Nokia Forum中已经有人遇到。正如第一点所说,这两个软件要装在C盘。
还有一点要注意到的是,如果你使用的是Vista或者类似Vista的皮肤包,SDK中的个别工具如Aplication Wizard等Java程序在在运行时会遇到框架的问题,不能运行。
三、安装开发环境和SDK。
这个是整个安装中最复杂的环节,这里我想根据编译环境的不同来分开描述。
1、VC6.0:
相信这是最普遍使用的开发环境之一,当然包括我在内。这个编译环境的优点就是快速,稳定。这两点是其他的开发环境远远不能相比的。但是它的问题则在于对于开发者来说上手较复杂,需要大量相关的命令行操作来支持。此外,对于Symbian C++的语法的支持也很有限,不过这些缺陷都可以通过第三方插件来弥补。上次在网上无意中发现包括nokia研究院,芬兰的一些研究组织仍然使用的是VC6.0,不禁令我大吃一惊。也更加喜欢这个编程环境了。
下面具体讲一下如何使用这个编程环境,首先VC6.0没有明显的安装顺序的要求,你可以在SDK之前装,也可以在SDK之后装,这主要取决于你使用的SDK的版本,2.0以前的SDK在VC6.0安装之后安装的话可以生成一个APP Wizard的条目,而后续版本则独立在VC之外,不过这一点影响不大。我的观点是独立出来更好用。
VC6.0安装时一定要注册环境变量,安装完成之后要安装Visual Assist 插件。关于这个插件,实在是无法用语言来形容的强大和易用,强力推荐必装。Assist安装完成后,有时可能要在里面设置一下symbian安装路径,有时则不用,是版本而定。
安装完VC6.0之后是否安装MSDN关系不大,确实也用不到这个。接下来最关键是SDK的安装顺序,相信大多数人不会像我一样人品那么爆炸,几乎把所有的SDK都装上去了。大家可能奇怪,为什么要装这么多SDK呢?难道新的不比老的好吗?
坦率地说这个问题很复杂,因为历史原因,发行的SDK中的个别库,lib和dll经常改变。当然这些在SDK中都写明了不推荐使用或则已被抛弃,但是奇怪的是我在编程中遇到的一些问题却总是需要找到这里老版本的SDK才能解决。所以我装了6.0,6.1,9200,7.0,8.0,8.1a,8.1b,9.1,9.2共计这么多版本的SDK。这么多SDK想要在VC6.0下正常使用几乎是不可能的事情,因此如果你要安装老版本的SDK,你必须重新安装新版本的SDK,就像装多操作系统的原理一样。还有第二版的SDK里面有个Eviroment Switch,在8.0a版本下的几个不同语言的SDK下转换是很方便的,但是不同版本的并不能转换。网上有对这个工具的进一步分析,但是我试了一下,支持多版本的SDK转换没有成功。
最后VC6.0还是要装在C盘。
2.VC2005
VC2003的使用方法与之类似,我就不多说了。VC2005相对于VC6.0来说比较易用,安装上Carbide 的插件以后有很多方便的功能供你使用,但是安装过程和使用过程中要注意到问题依然很多。
Carbide的插件要在VC2005和SDK安装之后安装,否则有些SDK将不能识别,特别是新版的SDK。还有一点就是安装前提示要安装的几个程序最好安装,毕竟是推荐的。其中VC2005的升级包安装起来是一件非常崩溃的经历,建议做好心理准备。
具体的使用方法我就不多说了,这里说一下VC2005的优缺点。
首先,基本不需要在编程中使用命令行了。可以直接修改mmp,直接在目录下导入工程,等等,这无疑是很方便的。mmp的导入不能选择自动更新,否则会无法更新,这个问题也是困扰我很久的一个小问题。如此自动化和强大的编程环境带来的缺点就是速度的牺牲。如果你的电脑速度惊人,这一点也可以忽略不计,但是就我的使用感受而言,习惯了VC6.0的编译速度便很难再迁就VC2005。此外用VC2005来编写Symbian上的一些程序还有一些辅助的功能,如第二版到第三版的迁移,位图编辑器等,这些东西在特定情况下也是非常实用的。
在这里我个人的建议是安装,在需要的时候可以用一下。
3.Carbide
这个工具是Nokia力推的。我用了一段时间,确实很好用,因为它是完全针对Symbian S60开发的。他的安装相对简单,对SDK的兼容也非常好。值得提醒的是关于许可证的问题,因为涉及到购买问题,建议使用最简单的免费版。据说有破解的OEM版,但是考虑版权问题,大家用起来还是要小心。
这个工具几个比较显著的优点就是第三版支持设备直接调试,支持描述符在调试器中的直接识别,还是Symbian C++的语法识别,UI资源编辑器等等。简直是武装到牙齿的超级编译器。但是他也有一个致命的弱点,就是速度是三者中最慢的,因为它是Java程序。
我的建议就是必装,在开发第三版的程序时,用处非常大,但是平时可以有选择的使用。

今天就写到这里,下一篇是关于Symbian编程中各种插件和小工具的使用。
本文版权归zesky所有,如果需要引用和复制,请注明出处www.symbian-securiy.cn,谢谢!

Labels:

Monday, March 24, 2008

Symbian中数据库DBMS使用的一点经验

最近研究了一下Symbian中的数据库使用,因为第一次接触数据库所以中间遇到了一些问题,也发现了一些解决办法,这里写出来,希望大家能够有所借鉴。
关于数据库的例子主要有三个,一个是官方提供的BookStore的例子,还有一个是SDK目录下面example里面base中的DBMS例子,还有一个比较复杂的是在8.1SDK, 就是第二版3fp中的根目录下面,叫做news-store。建议都看一下,第二个比较简单,第一个稍微复杂,最后一个相对复杂。
使用数据库有两种方法,一种是SQL,一种是利用系统提供的API。有人说前者速度要快一些,这个我没有测试,仅作为参考。
关于具体的知识我就不多说了,这里主要说下这几个例子中没有涉及到一些问题。
1.首先一定要注意对各种panic的理解,具体的panic表见下面。程序的问题一定要看对应的panic,以这个为思路,一般都能找到问题所在。
2.如果你要从数据库中读取数据
TDbSeekKey seekKey(aContactID); // Initialize one-column seek key
err = rowset.Open(iPbkExDb, KCMTable, rowset.EReadOnly);
注意这里第一个是索引,索引一定要类型匹配,否则会panic;第二句中关键的问题是EReadOnly,这样就说明这个行是不会改变的,所以在读取时,要用
rowset.GetL();
读取完成关闭就行了。
rowset.Close();
3.如果你要向数据库中写数据
err = rowset.Open(iPbkExDb, KCMTable, rowset.EUpdatable);
这里就要使用EUpdatable,标志这个行是可以改变的,接着在写入时,要用
rowset.UpdateL();
再进行写入操作,
rowset.SetColL(ContactImagePathColumNo,aPath);
写入的时候一定要跟你在建立数据库时定义的类型相匹配。
最后不要忘记
rowset.PutL();
这样修改后的数据才能提交到数据库中。
rowset.Close();
最后再关闭。
其他的发现以后再补充吧,下面是panic列表
DBMS panic 错误码只是在头文件中定义了而没有出现在SDK文档中。查阅起来比较繁琐。

DBMS错误码有四种类型分别是:
1 DBMS
2 DBMS-Server
3 DBMS-Store
4 DBMS-Table

当你遇到关于DBMS的错误的时候首先要注意是那种错误。

他们分别位于不同的头文件中如下:

ud_std.h (DBMS)
EDbUnimplemented, 0
EDbInvalidColumn, 1
EDbUninitialised, 2
EDbRowLengthOverflow, 3
EDbTooManyKeys, 4
EDbInvalidViewWindowParameters, 5
EDbWrongType, 6
EDbInvalidIncrementalStep, 7
EDbNoColumnsInSeekKey 8

sd_std.h (DBMS-Server)
EDbsUnimplemented, 0
EDbsInvalidColumn, 1
EDbsWrongType, 2
EDbsNoRowData, 3
EDbsNotInUpdate, 4
EDbsBadDescriptor, 5
EDbsBadHandle, 6
EDbsStreamMarkInvalid, 7
EDbsStreamLocationInvalid, 8
EDbsObserverRequestPending 9

us_std.h (DBMS-Store)
EDbUnimplemented, 0
EDbNoStore, 1
EDbCannotSeek, 2
EDbNotFixedFieldType, 3
EDbWrongType 4

ut_std.h (DBMS-Table)
EDbInvalidColumn, 0
EDbWrongType, 1
EDbInUpdate, 2
EDbNotInUpdate, 3
EDbInvalidRow, 4
EDbRowNotRead, 5
EDbReadOnly, 6
EDbTableOpen, 7
EDbNotEvaluated, 8
EDbStreamOpen, 9
EDbRowSetConstraintMismatch, 10
EDbBeginNestedTransaction, 11
EDbUpdatesPendingOnCommit, 12
EDbUpdatesPendingOnRollback, 13
EDbNoCurrentTransaction, 14
EDbStreamsPendingOnCommit, 15
EDbStreamsPendingOnRollback, 16
EDbInvalidBookmark 17

Labels: , ,

Sunday, March 9, 2008

msmobiles.com - From China with love: Windows Mobile virus

From China with love: Windows Mobile virus
February 28, 2008 [General] | By Edward J. R.

Beware! Your Windows Mobile phone may be infected and may be sending secretly information to China...

A Window Mobile PocketPC trojan that disables Windows Mobile application installation security has been discovered in China.

WinCE/InfoJack sends the infected device抯 serial number, operating system and other information to the author of the trojan. It also leaves the infected mobile device vulnerable by allowing silent installation of malware. The trojan modifies the infected device抯 security setting to allow unsigned applications to be installed without a warning.

The trojan was packed inside a number of legitimate installation files and distributed widely. It has been distributed with Google Maps, applications for stock trading, and a collection of games.

To read more visit original source of this information.

Commentary: we find it impossible that Google would distribute this virus with Google Maps, as the article above claims, but obviously if you download Google Maps and other programs not from original source, but from various dodgy mirror sites, then it may well be true. Anyways: beware of this issue and try to download software for Windows Mobile only from original and secure sources!

msmobiles.com - From China with love: Windows Mobile virus

From China with love: Windows Mobile virus
February 28, 2008 [General] | By Edward J. R.

Beware! Your Windows Mobile phone may be infected and may be sending secretly information to China...

A Window Mobile PocketPC trojan that disables Windows Mobile application installation security has been discovered in China.

WinCE/InfoJack sends the infected device抯 serial number, operating system and other information to the author of the trojan. It also leaves the infected mobile device vulnerable by allowing silent installation of malware. The trojan modifies the infected device抯 security setting to allow unsigned applications to be installed without a warning.

The trojan was packed inside a number of legitimate installation files and distributed widely. It has been distributed with Google Maps, applications for stock trading, and a collection of games.

To read more visit original source of this information.

Commentary: we find it impossible that Google would distribute this virus with Google Maps, as the article above claims, but obviously if you download Google Maps and other programs not from original source, but from various dodgy mirror sites, then it may well be true. Anyways: beware of this issue and try to download software for Windows Mobile only from original and secure sources!