Cấu trúc ứng dụng Android

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân tích mức độ an toàn của ứng dụng android dựa trên học máy (Trang 25 - 29)

1.1 Kiến trúc hệ điều hành Android

1.1.6 Cấu trúc ứng dụng Android

Ứng dụng Android được xây dựng thành các Gói tin Android (Android Package –APK). Trên thiết bị di động, nó là các tập tin có dạng .apk. Tập tin này được chuyển đổi thành các tập tin ZIP có chứa bytecode của ứng dụng cùng với tất cả các dữ liệu, tài nguyên, thư viện của bên thứ ba viết ra ứng dụng và một tập tin manifest mô tả về khả năng của ứng dụng đó. Hình 1.6 cho thấy quá trình đơn giản hóa cách thức mã nguồn Java được phiên dịch sang các tập tin APK.

Hình 1.6: Quy trình xây dựng 1 file ứng dụng Android

Để cải thiện về vấn đề an ninh, các ứng dụng được chạy trong một môi trường hộp cát (sandbox). Trong quá trình cài đặt, ứng dụng nhận được một nhận dạng (ID) người dùng Linux duy nhất (hay được viết tắt là UID) từ hệ điều hành Android. Sau đó, hệ điều hành sẽ cấp phép cho các tập tin trong một ứng dụng để giúp cho chỉ duy nhất ứng dụng đó có thể truy cập vào chính những tập tin của nó. Bên cạnh đó, ngay từ khi bắt đầu, mỗi ứng dụng được cấp riêng một máy ảo của mình, có nghĩa là mã của một ứng dụng được phân lập với các ứng dụng khác. Điều này giúp cho Android thực hiện các nguyên tắc đặc quyền tối thiểu là mỗi ứng dụng chỉ có thể truy cập đến các thành phần mà nó cần thiết để làm công việc của mình.

Thành phần của một tập tin APK

Phần này sẽ cung cấp cho chúng ta một cái nhìn tổng thể về một tập tin APK (gói ứng dụng Android). Trước hết, tập tin APK là định dạng tập tin được sử dụng để phân phối ứng dụng trong Android, mỗi tập tin APK sẽ giúp

chúng ta cài đặt một ứng dụng Android duy nhất. Dưới đây sẽ liệt kê các phần khác nhau của một tập tin APK.

AndroidManifest.xml

Tập tin AndroidManifest.xml là thành phần không thể thiếu trong ứng dụng. Các tập tin manifest thường chứa đựng một số thông tin cơ bản về ứng dụng như tên, phiên bản, những cài đặt tương thích với ứng dụng,… Cùng với đó, tập tin này có liệt kê tất cả các thành phần có mặt trong ứng dụng này bao gồm các phần hoạt động, phần dịch vụ, phần ý định, … Các hoạt động và dịch vụ sẽ không thể chạy được nếu như không được khai báo trước ở trong bản kê khai (manifest) này. Tuy nhiên, với phần thu phát thì khác, nó có thể được khai báo trước trong bản kê khai hoặc đăng kí để hoạt động thông qua phương pháp registerReceiver(). Bên cạnh đó, các manifest cũng quy định về yêu cầu phần cứng đặc biệt của thiết bị cho phù hợp với ứng dụng nếu cần, ví dụ như ứng dụng về máy ảnh sẽ yêu cầu thiết bị di động có ít nhất một máy ảnh, hay những ứng dụng vị trí sẽ yêu cầu thiết bị di động có trang bị GPS (hệ thống định vị toàn cầu - Global Positioning System).

Tính năng quan trọng tiếp theo của tập tin bản kê khai này chính là quyền của ứng dụng. Tính năng này là một phần giúp hệ điều hành Android giúp quản lý, bảo vệ các ứng dụng. Tính năng này được thể hiện như sau, để một ứng dụng sau khi cài đặt trên thiết bị được phép truy cập vào các thành phần đặc biệt (ví dụ như truy cập vào máy ảnh, truy cập vào danh bạ), ứng dụng đó cần phải được người dùng cấp phép khi cài đặt. Tất cả các yêu cầu về quyền cần thiết của ứng dụng phải được xác định trọng tập tin AndroidManifest.xml của ứng dụng đó. Các thẻ <uses-permission />trong tập tin bản kê khai đại diện cho quyền sử dụng tài nguyên của hệ thống. Bằng cách yêu cầu ứng dụng xác định các quyền cần thiết ngay từ đầu như vậy, hệ điều hành Android có thể thông báo cho người dùng ngày từ khi cài đặt ứng

dụng, từ đó giúp người dùng chủ động trong vấn đề cung cấp quyền cho mỗi ứng dụng, điều này cũng giúp giảm bớt vấn đề thất thoát dữ liệu trong hệ điều hành. Có thể thấy là, tập tin bản kê khai của ứng dụng như một bản vắn tắt về tất cả các thành phần của ứng dụng đó.

Lib/

Đây là thư mục chứa các câu lệnh liên quan đến các thư viện hỗ trợ cho ứng dụng. Thư mục này bao gồm các thư viện con đại diện cho các cơ sở xử lý các thư viện đã được biện soạn, ví dụ như arm, x86, mips, …

Res/

Thư mục này lưu trữ các tài nguyên cần sử dụng cho ứng dụng. Ví dụ như mỗi ứng dụng luôn cần những hình ảnh khác nhau để sử dụng cho việc tạo thành giao diện người dùng trong mỗi hoạt động khác nhau.

Assets/

Thư mục này chứa tài sản của ứng dụng. Chúng có thể được truy cập theo chương trình trong Android bằng cách sử dụng trình quản lý tài sản ứng dụng AssetManager.

Classes.dex

Đây là tập tin dex tạo ra sau khi biên dịch bytecode của tất cả các tập tin nguồn java trong các ứng dụng.

Resources.arsc

Đây là một số nhị phân đã biên dịch các nội dung của thư mục chứa tài nguyên đã đề cập ở trên.

META-INF/

Thư mục này xuất hiện để giúp xác định tác giả viết ra ứng dụng đó, các ứng dụng trước khi cài đặt trong hệ điều hành Android đều được yêu cầu ký để đảm bảo. Vậy nên nội dung của thư mục này bao gồm bản kê khai và chữ ký số của nó.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân tích mức độ an toàn của ứng dụng android dựa trên học máy (Trang 25 - 29)

Tải bản đầy đủ (PDF)

(70 trang)