Trao đổi với tôi

http://www.buidao.com

5/30/10

[Symbian] Lập trình C++ trên Symbian

Hệ điều hành Symbian và các nền hệ thống dùng Symbian

Symbian bắt nguồn từ EPOC (Electronic Pocket Communication), một hệ điều hành được phát triển cho các máy tính và thiết bị liên lạc bỏ túi của Psion có bộ xử lý yếu và bộ nhớ nhỏ. Đó là lý do mà đôi khi chúng ta thấy sự xuất hiện của EPOC trong Symbian như thư mục chính trong bộ cung cụ lập trình có tên là Epoc32.
Symbian được phát triển để tạo ra một hệ điều hành mạnh mẽ cho thế hệ thiết bị lai giữa PDA và mobile phone mà người ta gọi là WID (Wireless Ìnformation Device). Tùy theo tỷ lệ kết hợp giữa PDA và mobile mà người ta chia các thiết bị dùng Symbian thành 2 nhóm: Smartphone (thiên về mobile phone) và Communicator (thiên về PDA). Điểm độc đáo của Symbian là cung cấp một hệ điều hành hỗ trợ cho nhiều dòng thiết bị khác nhau vừa đáp ứng được sự sáng tạo riêng của các nhà sản xuất vừa phục vụ được nhiều mục đích sử dụng khác nhau của người dùng: như mô hình Smartphone (Pearl) có kiểu dáng giống điện thoại di động thường với bản phím số phục vụ cho những khách hàng vốn trung thành với mobile phone truyền thống, mô hình Communicator Quartz theo kiểu dáng của PDA phục vụ cho khả năng tìm kiếm qua màn hình cảm ứng hay mô hình Communicator Crystal có dáng dấp một laptop phù hợp cho các chức năng nhập liệu.
Sự kết hợp của hệ điều hành Symbian và những đặc điểm riêng phục vụ cho các dòng thiết bị đã tạo ra nhiều nền hệ thống khác nhau như chúng ta đã biết: Series 60, series 80, series 90 và UIQ.
- Series 60: (theo mô hình Smartphone Pearl): kích thước màn hình 176x208 pixel bao gồm: Nokia 7650 , 3650/3600, 3660/3620, N-Gage, N-Gage QD, 6600, 7610, 6260, 6630, 6670, 3230 hay Panasonic X700, Samsung SGH-D710, Siemens SX1, Sendo X,...
- UIQ: (theo mô hình Communicator Quartz) có kích thước màn hình 208x320 pixel bao gồm: Sony Ericsson P800, P900, P910, BenQ P30, P31, Motorola A920, A925, A1000, Arima ASP805...
- Series 80: (theo mô hình Communicator Crystal) có kích thước màn hình 480x320 pixel bao gồm: Nokia 9210, 9210i, 9300, 9500.
- Series 90: đây là thế hệ lai giữa UIQ và Series 80 mà người ta gọi là media phone với sản phẩm duy nhất hiện tại là Nokia 7710 (cải tiến từ sản phẩm trước đó là Nokia 7700).
- Ngoài ra Symbian còn là hệ điều hành cho các dòng máy của mạng điện thoại NTT Docomo ở Nhật với các dòng máy Fujitsu như FOMA F900i, FOMA F2102V, FOMA F2051 (chỉ hỗ trợ Java).
Các nền hệ thống này có sự khác biệt nên hầu hết các ứng dụng có giao diện đều không thể chạy được trên cùng 2 dòng máy. Tuy nhiên với những chương trình cấp thấp như các server (chương trình file exe) thì điều này là hoàn toàn có thể. Không những vậy giữa những nhà sản xuất cũng tạo sự khác biệt riêng nên đôi khi ứng dụng sẽ gặp trục trặc khi chạy trên các loại máy khác nhau dùng chung nền hệ thống. Một đặc điểm nữa là các máy cùng nền hệ thống nhưng dùng phiên bản hệ điều hành khác nhau cũng sẽ có sự khác nhau. Đây là những điều mà những lập trình viên chúng ta nên lưu ý để biết ứng dụng của mình có thể hoạt động tốt trên những thiết bị nào.


SDK, IDE và một số tool cho lập trình C++ trên Symbian

1. SDK (Software Development Kit):
Symbian SDK là bộ công cụ phát triển được dùng cho việc phát triển ứng dụng chạy trên điện thoại Symbian. Mỗi một nền hệ thống sẽ có bộ SDK riêng với nhiều phiên bản theo các phiên bản hệ điều hành và các IDE hỗ trợ. Mỗi một bộ Symbian SDK bao gồm các thành phần sau:
- Một chương trình giả lập Emulator của điện thoại Symbian mà bộ SDK hỗ trợ chạy trên hệ điều hành Windows. Các chương trình ứng dụng sẽ được kiểm lỗi và chạy thử trước khi được cài đặt trên điện thoại Symbian. Chương trình Emulator và các phần liên quan được lưu trữ trong thư mục con Epoc32 trong cây thư mục của bộ SDK sau khi cài đặt trên máy tính cá nhân.
- Các file header và thư viện phục vụ cho phát triển ứng dụng chứa trong thư mục con Epoc32\include.
- Một trình biên dịch dựa trên GCC để biên dịch ứng dụng cho điện thoại Symbian chứa trong thư mục con Epoc32\gcc.
- Các công cụ bổ sung dùng cho quá trình phát triển, biên dịch và triển khai ứng dụng nằm trong thư mục Epoc32\tool.
- Tài liệu tham khảo và các ví dụ tham khảo cho các lập trình viên nằm trong thư mục con Documentation và Example.
-Các phiên bản SDK hỗ trợ Metrowerks CodeWarrior sau khi cài đặt sẽ tạo một thư mục con Epoc32\WINSCW trong khi các phiên bản hỗ trợ IDE của Microsoft hay Borland sẽ tạo thư mục Epoc32\WINS. Đây là 2 thư mục chứa dữ liệu hay thông tin cấu hình cho Emulator.
Trong thư mục này sẽ có các thư mục trung tên với ổ đĩa trên điện thoại (c,d) nên những file dữ liệu mà ta dự định để trên điện thoại thật thì khi chạy trên Emulator sẽ đặt trong các thư mục này.

Ghi chú: - Các công cụ biên dịch thường phải chạy trên nền Perl nên trước khi cài đặt các bộ Symbian SDK, phải cài đặt các bản Active Perl. Đôi khi các phiên bản còn yêu cầu phải cài đặt môi trường thực thi Java.
- Các bộ SDK chỉ hoạt động trên các hệ điều hành Windows NT, 2000 trở về sau.
- Các lập trình viên thường phát triển ứng dụng cho nhiều nền hệ thống phần mềm nên đôi khi họ cài đặt nhiều bộ SDK khác nhau cùng lúc. Lúc này, các lập trình viên phải chú ý đến một biến môi trường có tên là EPOCROOT, được dùng để xác định bộ công cụ SDK hiện thời đang hoạt động. Để chuyển đổi hoạt động giữa các bộ SDK, ta có thể đặt lại giá trị cho biến EPOCROOT bằng câu lệnh: >devices -setdefault .
Ví dụ: >devices -setdefault @UIQ_21:com.symbian.UIQ hoặc bằng các đặt lại giá trị trong file devices.xml nằm trong thư mục: \Program Files\Common Files\Symbian.
a. Series 60
• Series 60 phiên bản 1.0: bộ công cụ phát triển dựa trên hệ điều hành Symbian 6.1 với các bản phân phối cho các môi trường phát triển IDE khác nhau: (cho các máy 7650, 3650/3660, NGage)
+ Series 60 SDK 1.2 hỗ trợ IDE Borland C++ BuilderX hay Microsoft Visual C++ (v6.0 or .NET).
+ Series 60 SDK 1.2 hỗ trợ IDE Metrowerks CodeWarrior cho hệ điều hành Symbian.
• Series 60 phiên bản 2.0: bộ công cụ phát triển dựa trên hệ điều hành Symbian 7.0 với các biến thể :
+ Series 60 SDK 2.0 hỗ trợ IDE Borland C++ BuilderX hay Microsoft Visual C++ (v6.0 or .NET).
+ Series 60 SDK 2.0 hỗ trợ IDE Metrowerks CodeWarrior cho hệ điều hành Symbian
Hiện có một số phiên bản mới bổ sung một số API cho các dòng máy sau hay sửa lỗi. Chi tiết các bạn có thể xem tại đây:http://www.forum.nokia.com/main/0,,034-4,00.html hoặc http://www.newlc.com/article.php3?id_article=65
b. UIQ
Hiện có 2 phiên bản có thể download là UIQ 2.0 và 2.1 đều hỗ trợ phát triển bằng C++, nhưng UIQ 2.1 hỗ trợ nhiều API hơn. Các IDE hỗ trợ là Metrowerks CodeWarrior: hỗ trợ cả UIQ 2.0 và UIQ 2.1 và Borland C++BuilderX chỉ hỗ trợ cho UIQ 2.1. Chi tiết download: http://www.newlc.com/article.php3?id_article=67.
c. Nokia 9200 Series và Series 80:
SDK Nokia 9200 Series được dùng để phát triển ứng dụng cho các dòng máy Nokia 9210 và 9210i. Để phát triển ứng dụng với 9200 Series SDK bằng C++, chúng ta có thể sử dụng các IDE như MS Visual C++ 6.0 bằng công cụ tạo dự án Symbian OS Wizard hay sử dụng IDE Borland C++ BuilderX. Hiện tại hình như SDK Nokia 9200 Series đã bỏ và dùng ta có thể dùng SDK hỗ trợ Series 80 để phát triển.
Series 80: Phiên bản hiện tại được cung cấp là 2.0. Hỗ trợ 2 phiên bản cho Metrowerks CodeWarrior và Borland C++ BuilderX.
Download: http://www.forum.nokia.com/main/0,,034-369,00.html
d. Series 90
Phiên bản mới này được gọi là Nokia 7710 SDK dùng để phát triển ứng dụng cho điện thoại duy nhất Series 90 hiện tại: N7710. Xây dựng ứng dụng với các IDE như MS Visual C++ 6.0, Borland C++ BuilderX hay Metrowerks CodeWarrior. Download: http://www.forum.nokia.com/main/0,6566,034-801,00.html

2. IDE:
Như hầu hết mọi ngôn ngữ cấp cao khác đều có IDE để phục vụ cho công việc lập trình và biên dịch, kiểm lỗi. Phát triển ứng dụng trên Symbian bằng C++ có thể sử dụng nhiều IDE khác nhau nhưng không phải IDE nào cũng có thể sử dụng cho mọi SDK mà Symbian cung cấp. Hiện thời chúng ta có thể sử dụng các IDE sau: MS Visual C++ 6.0 hay .NET, Borland C++ Builer 6.0 Nokia Edition/C++BuilderX và Metrowerks CodeWarrior. Việc chọn lựa IDE phụ thuộc vào sự hỗ trợ các SDK của nó và sự quen thuộc của những lập trình viên.
a. MS Visual C++ 6.0
Đây là IDE phổ dụng cho phát triển ứng dụng viết bằng C++ do Microsoft phát triển trong bộ Visual Studio. Tuy nó ra đời trước Symbian nên không hỗ trợ xây dựng dự án ứng dụng Symbian từ đầu nhưng với các công cụ phụ trợ, ta hoàn toàn có thể phát triển ứng dụng Symbian trên VC++ 6.0. Một điểm lưu ý là VC++ 6.0 phải được cài bản vá lỗi ít nhất là SP3.
Ngoài ra chúng ta có thể MS Studio .NET để phát triển cho Symbian và dùng kèm theo plugin sau: EPOCfromMMP, download tại: http://www.newlc.com/article.php3?id_article=243.
b. Borland C++ Builder 6.0 Nokia Edition và C++ BuilderX
Hai IDE này do Borland phát triển. C++ BuilderX là phiên bản phát triển của Borland C++ Builder 6.0 Nokia Edittion và hiện được dùng để phát triển ứng dụng Symbian hơn là Borland C++ Builder 6.0 Nokia Edition. C++ BuilerX được sử dụng để phát triển các ứng dụng chạy trên nền hệ thống Series 60 là chủ yếu. Tuy vậy C++ BuilderX vẫn có hỗ trợ UIQ 2.1.
Hiện phiên bản Borland C++ Builder X 1.5 là một phiên bản miễn phí: download tại http://www.borland.com/cbuilderx/
c. Metrowerks CodeWarrior
Metrowerks CodeWarrior là IDE được biết đến nhiều nhất cho việc phát triển ứng dụng Symbian. Mặc dù nó mới chỉ được sử dụng từ năm 2003 (trước đó chủ yếu sử dụng các công cụ của Microsoft là IDE VC++ 6.0) nhưng nay nó đã được sử dụng rộng rãi trong cộng đồng phát triển Symbian.
IDE này có 3 bản phân phối khác nhau:
• Personal Edition:
- IDE đầy đủ.
- Công cụ biên dịch cho giả lập Emulator và điện thoại.
- Kiểm lỗi (debugger) trên Emulator.
• Professional Edition:
- Tất cả các đặc tính của Personal.
- Debug trên điện thoại Symbian (không hỗ trợ cho dòng Series 60).
- Hỗ trợ Symbian DevKits (mã cung cấp cho các nhóm thành viên) và tham khảo phần cứng.
• OEM Edition:
- Tất cả các đặc tính của Professional
- JTAG và Multi-ICE debugging.
- Giải lập Virtio VXPS (Intel XScale) và VPOM (TI OMP).
Thường các lập trình viên chỉ cần sử dụng phiên bản Personal hoặc Professional. Các phiên bản này có thể cài đặt trên Windows NT4 hay từ Windows 2000 trở lên.
CodeWarrior hỗ trợ các bộ SDK sử dụng hệ điều hành từ phiên bản 6.1 trở về sau, nghĩa là chúng ta không thể dùng nó để phát triển ứng dụng với bộ công cụ Nokia 9200 Series SDK. Với các bộ công cụ khác, thường có bản phân phối hỗ trợ riêng cho CodeWarrior như Series 60 SDK 1.2 (hay 2.0) hỗ trợ IDE Metrowerks CodeWarrior, UIQ 2.0 (chỉ sử dụng được với CodeWarrior), UIQ 2.1 hỗ trợ IDE Metrowerks CodeWarrior, Series 80 và Series 90 đểu hỗ trợ IDE Metrowerks CodeWarrior. Chúng ta phải chọn đúng bản phân phối để không bị lỗi trong quá trình biên dịch.
Hiện CodeWarrior đã có bản 3.0, đây là link down bản 2.8: http://www.forum.nokia.com/main/0,6566,034-723,00.html
3. Một số tool hỗ trợ:
Ngoài các tool do SDK hỗ trợ, chúng ta có thể sử dụng 1 số tool sau để phục vụ cho công việc lập trình của mình. Download tại:
http://www.symbian.com/developer/downloads/tools.html.

RefLink: http://my.opera.com/nhadautu/blog/2008/01/06/lap-trinh-c-tren-symbian

[Symbian] Tut How to crack app on Symbian V3rd- translate

GIỚI THIỆU CHUNG
Chào các bạn!
Mấy hôm nay rảnh rỗi ngồi dich tut của ARGV về RCE của HĐH symbian 3rd. Mình cũng ko biết nhiều về cái này lắm, nhưng cũng cố gắng dùng hết những ji mình biết để dịch tut này, mong rằng Rea sẽ đa dạng hơn bởi vì điện thoại ngày nay đang ngày càng phát triển, dòng điện thoại thông minh có HĐH cũng ngày càng trở nên thông dụng. Chính vì vậy, việc lập trình app cho các HĐH này cũng trở nên cần thiết và việc RCE và cả crack nữa ke ke ke cũng trở nên rất quan trọng. Ở đây, mình không muốn nói đến việc người ta coi crack là phá hoại, bởi vì có phá hoại thì mới có phát triển.

Tuy nhiên, với sự hiểu biết không đầy đủ mà đã mạo muội làm càn, mình rất mong được các Rea-er có kinh nghiệm trong vấn đề crack Symbian mobile app chỉ bảo thêm để mình có thể hiểu cặn kẽ hơn những ji mình không hiểu.
Đây là bản dịch, không phải mình tự viết, bản quyền thuộc về ARGV Arteam.
Thân!

Chào mừng bạn đến với TUT vỡ lòng về dịch ngược mã máy của các ứng dụng Symbian thế hệ thứ 3.

Trong tut này, tôi sẽ giới thiệu với các bạn về mảng dịch ngược mã máy của các ứng dụng Symbian thế hệ thứ 3. Tôi sẽ chỉ ra cho các bạn làm thế nào để RCE (viết tắt cho nhanh ha!) một vài ứng dụng phổ thông và sẽ hướng dẫn bạn nhiều thủ thuật nhỏ trong việc RCE Symbian thế hệ thứ 3.

Symbian 3rd có sự khác biệt rất lớn với bản 8.1. Nó có sự sắp xếp dữ liệu hệ thống hoàn toàn mới và trên hết nó có rất nhiều cơ chế bảo mật (theo mình được biết thì hiện nay Symbian đã được chuyển nhượng hoàn toàn cho Nokia, họ đang phát triển Symbian^3 sẽ có mặt ở máy nokia N8, còn HĐH symbian OS 9.4 là thế hệ sau của 3rd bây giờ là phổ biến nhất ở các máy 5800, E71, E72, N97...) nói thêm về cơ chế bảo mật: từ 3rd trở đi khi cài đặt 1 pm vào điện thoại ta cần phải sign nó, có nghĩa là mình sẽ phải đăng kí imei máy của mình lên trang symbiansigned.com sau đó nó sẽ cho mình 1 file *.cer 1 file *.key, dùng phần mềm để sign soft, như vậy máy của bạn mới gọi là có chứng chỉ và được quyền cài pm đó vào máy. Đấy là với tư cách cá nhân, còn nếu bạn là công ty, bạn bỏ ra rất nhiều $ thì nó sẽ cung cấp cho bạn 1 chứng chỉ mà có thể sign và cài cho nhiều máy khác nhau. Cách đây 3 năm, FCA0000000 (mình không nhớ rõ tên) đã tìm được lỗ hổng bảo mật của hệ thống Symbian và được gọi là HACK phone. Một khái niệm rất phổ biến, sau khi hack phone bạn có thể truy cập vào file hệ thống của phone như: C:/private, c:/sys... bạn có thể cài bất kì pm nào mà không cần sign nó trước khi cài. Từ khi hack được phone, hàng loạt các ứng dụng, hàng loạt các pm hack phone dc phát triển, VD HellOx, Rompatch+... Bạn cần tham khảo thêm ở trang PDAviet.net để có thể hiểu rõ vấn đề này hơn. Nói phét thế đủ rồi, quay lại với TUT của lão ARGV thoai.

Chú ý: TUT này cần có rất nhiều kiến thức về Assembly ARM. Tôi không thể diễn giải mọi thứ. Nếu như bạn nghĩ rằng ở một số tut có ít lời quá, thật ra không phải như vậy. Tìm điểm chết của soft trong 80% các trường hợp là rất dễ, chỉ cần theo tut này bạn đã có thể tự hiểu được phần lớn. Dùng IDA trong chế độ Grap mode và mở subs/locs trong một cửa sổ khác và tự tìm lấy điểm patch cho bạn, nếu không được thì thử lại ở chỗ khác cho đến khi nào .......được thì thôi.

Tôi hy vọng rằng tut này có thể giúp đỡ bạn nhiều hơn và đừng ngại hỏi nếu bạn gặp bế tắc. Bạn có thể hỏi hoặc comment bất kỳ điều ji ở đây Primer in Reverse Engineering Symbian 3rd Applications Official Topic. Chúng tôi luôn sẵn sàng giúp đỡ bạn!
Một số TUT mà bạn nên có: (tất cả đều có trên home của ARTeam)

1. Primer_in_Reverse_Engineering_Symbian_3rd_Applicat ions_v1
2. Primer_on_Reversing_Symbian_S60_Applications_by_Sh ub-Nigurrath_v14
3. Symbian_Symphony_v10_by_Shub-Nigurrath


Author: argv of ARTeam

I. Các công cụ, súng đạn cần thiết

1. IDA Pro Disassembler: cái này được gọi là tên lửa tomahoc hạng nặng của các cracker, đừng bao giờ đi đâu mà không có nó. Từ bản 5.2 trở đi nó hỗ trợ rất tốt cho việc disasembly ARM chipset. Cái này down ở trong 4 rom của mình nhiều lắm. Ngoài ra bạn cần phải có thêm Symbian Unleashed IDS Files (down ở trang Realese của ARTeam), cái này gồm các file IDS và giúp cho code dc sắp xếp trong ida view có trật tự, dễ hiểu hơn.

2. Hex Edit: cái này ae mình có rất nhiều.

3. Siscontents158: cái này dùng để giải nén và đóng gói các file cài đặt SIS, SISX. Free 100%, lên mạng tìm là có :D

4. Symbian SDK – Cái này dùng để giả lập môi trường symbian trên Win, theo lão argv là cần nhưng mình nghĩ ko cần lắm.

5. PETRAN: Petran.exe cũng có trên google rất dễ tìm, hồi trước không biết phải cài cả SDK để lấy mỗi file petran.exe. Dùng để uncompress và compress các file exe trong target cần crack.

Vậy là OK lắm roài, 5 cái này mình kiếm nổ đom đóm mắt mới thấy đóa nha. Nếu bạn không tìm được cái nào thì pm mình sẽ up cho.

6. ARM assembly Cái này rất quan trọng, nhưng mình tìm tài liệu này trên mạng có thì rất nhiều nhưng chả hiểu ji cả. Mong rằng ai có thì share cho mình với. Mình chỉ cần ý nghĩa của các hàm và hex code của nó. Ai có thì mail cho mình nhé manhabc@gmail.com.



Down TUT HERE

RefLink: http://reaonline.net/showthread.php?8694-Tut-How-to-crack-app-on-Symbian-V3rd-translate&p=48040#post48040