Luận Văn Thạc Sĩ Khoa Học Máy Tính: Xây Dựng Đồ Thị Luồng Điều Khiển Từ Mã Nhị Phân Ứng Dụng Android

Luận văn thạc sĩ khoa học máy tính tập trung xây dựng đồ thị luồng điều khiển từ mã nhị phân ứng dụng Android, hỗ trợ phân tích hiệu quả.

Chuyên ngành

Khoa học Máy tính

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2016

60
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu

Luận văn tập trung vào việc xây dựng đồ thị luồng điều khiển từ mã nhị phân của các ứng dụng Android, nhằm mục đích phân tích và hiểu rõ hơn về hành vi của hệ thống. Android là hệ điều hành di động phổ biến nhất, với hàng triệu ứng dụng được phát triển, bao gồm cả mã độc. Sự phát triển liên tục và phức tạp của Android đặt ra thách thức lớn cho các nhà phát triển và công cụ phân tích ứng dụng. Mục tiêu của nghiên cứu là cung cấp một phương pháp tự động để trích xuất thông tin từ các phiên bản Android khác nhau, giúp lập trình viên hiểu rõ hơn về hành vi hệ thống và các API.

1.1. Lý do nghiên cứu

Sự phát triển nhanh chóng của Android và sự phân mảnh của hệ điều hành này đã tạo ra nhiều thách thức cho các nhà phát triển. Mặc dù kiến trúc hệ thống và một số API được tài liệu hóa, nhiều API khác không được công bố, dẫn đến sự không tương thích giữa các phiên bản. Việc hiểu hành vi hệ thống và các API trở nên khó khăn hơn với sự phân mảnh của Android, đòi hỏi các công cụ hỗ trợ để tự động trích xuất thông tin từ các phiên bản khác nhau.

1.2. Mục tiêu nghiên cứu

Mục tiêu chính của luận văn là xây dựng một mô hình tự động cho hệ thống Android, giúp lập trình viên hiểu rõ hơn về hành vi hệ thống và các API. Nghiên cứu này tập trung vào việc phân tích toàn bộ hệ thống Android, từ đó cung cấp một 'bản đồ điều hướng' cho các phiên bản Android khác nhau. Điều này giúp nhà phát triển hiểu được các chức năng hệ thống có thể được gọi thông qua các API, đồng thời phát hiện các lỗ hổng bảo mật tiềm ẩn.

II. Cơ sở lý thuyết

Phần này cung cấp cái nhìn tổng quan về kiến trúc Android, bao gồm các thành phần chính như Dalvik VM, Android Runtime (ART), và Java Native Interface (JNI). Android là một hệ điều hành mã nguồn mở dựa trên Linux, được phát triển bởi Google. Nó sử dụng máy ảo Dalvik để thực thi các ứng dụng Java, và từ phiên bản 5.0 trở đi, ART đã thay thế Dalvik để tối ưu hóa hiệu suất. JNI được sử dụng để giao tiếp giữa mã Java và các ngôn ngữ cấp thấp như C/C++.

2.1. Tổng quan về Android

Android là một hệ điều hành mã nguồn mở dựa trên Linux, được phát triển bởi Google. Nó sử dụng máy ảo Dalvik để thực thi các ứng dụng Java, và từ phiên bản 5.0 trở đi, ART đã thay thế Dalvik để tối ưu hóa hiệu suất. ART sử dụng cơ chế Ahead-Of-Time (AOT) để biên dịch mã nguồn thành mã máy, giúp cải thiện hiệu năng hệ thống.

2.2. Các dịch vụ hệ thống

Các dịch vụ hệ thống của Android bao gồm các thành phần như System Server, Activity Manager, và Window Manager. Những dịch vụ này kết hợp với nhau để cung cấp các chức năng cơ bản của hệ điều hành. System Server là một trong những dịch vụ quan trọng nhất, chịu trách nhiệm khởi tạo và quản lý các dịch vụ hệ thống khác.

III. Nghiên cứu liên quan

Phần này trình bày các nghiên cứu liên quan đến phân tích ứng dụng Androidxây dựng đồ thị luồng điều khiển. Các nghiên cứu trước đây tập trung vào việc phân tích ứng dụng Android, nhưng thường yêu cầu kiến thức chuyên sâu về mô hình hệ thống. Nghiên cứu này đề xuất một phương pháp mới, tập trung vào việc phân tích toàn bộ hệ thống Android, từ đó tự động xây dựng mô hình hành vi hệ thống.

3.1. Các bước xây dựng và phân tích đồ thị cuộc gọi

Nghiên cứu này đề xuất một phương pháp mới để xây dựng đồ thị luồng điều khiển từ mã nhị phân của các ứng dụng Android. Phương pháp này bao gồm các bước như phân tích tĩnh, trích xuất thông tin từ mã nguồn, và xây dựng đồ thị luồng điều khiển. Điều này giúp lập trình viên hiểu rõ hơn về cách thức các ứng dụng tương tác với hệ thống.

3.2. Công cụ và framework phân tích bytecode

Các công cụ và framework như SootAndroguard được sử dụng để phân tích bytecode của các ứng dụng Android. Những công cụ này giúp trích xuất thông tin từ mã nguồn và xây dựng các mô hình hành vi hệ thống. Nghiên cứu này sử dụng các công cụ này để phân tích toàn bộ hệ thống Android và xây dựng đồ thị luồng điều khiển.

IV. Hướng tiếp cận

Phần này trình bày chi tiết về hướng tiếp cận của nghiên cứu, bao gồm việc phân tích toàn bộ hệ thống Android và xây dựng đồ thị luồng điều khiển. Nghiên cứu sử dụng cả phân tích tĩnh ngược và xuôi dòng để trích xuất thông tin từ mã nguồn. Điều này giúp lập trình viên hiểu rõ hơn về cách thức các ứng dụng tương tác với hệ thống và các API.

4.1. Tổng quan hướng tiếp cận

Nghiên cứu này sử dụng phương pháp phân tích toàn bộ hệ thống để xây dựng đồ thị luồng điều khiển. Phương pháp này bao gồm việc phân tích tĩnh ngược và xuôi dòng để trích xuất thông tin từ mã nguồn. Điều này giúp lập trình viên hiểu rõ hơn về cách thức các ứng dụng tương tác với hệ thống và các API.

4.2. Những thách thức

Một trong những thách thức lớn nhất của nghiên cứu là sự phức tạp và phân mảnh của hệ thống Android. Việc phân tích toàn bộ hệ thống đòi hỏi nhiều tài nguyên và thời gian. Ngoài ra, việc xây dựng đồ thị luồng điều khiển từ mã nhị phân cũng đặt ra nhiều thách thức kỹ thuật.

V. Kết quả và đánh giá

Phần này trình bày các kết quả chính của nghiên cứu, bao gồm việc phân tích các phiên bản Android khác nhau và xây dựng đồ thị luồng điều khiển. Nghiên cứu đã phân tích các phiên bản Android 4.1 và trích xuất thông tin về các hàm truy cập công khai. Kết quả cho thấy rằng việc hiểu rõ các hàm truy cập công khai có thể giúp phát hiện các lỗ hổng bảo mật trong hệ thống Android.

5.1. Tóm tắt kết quả

Nghiên cứu đã phân tích các phiên bản Android 4.1 và trích xuất thông tin về các hàm truy cập công khai. Kết quả cho thấy rằng việc hiểu rõ các hàm truy cập công khai có thể giúp phát hiện các lỗ hổng bảo mật trong hệ thống Android. Điều này giúp lập trình viên hiểu rõ hơn về cách thức các ứng dụng tương tác với hệ thống và các API.

5.2. Đánh giá thực tiễn

Nghiên cứu này có giá trị thực tiễn cao trong việc phát triển các công cụ phân tích ứng dụng Android. Việc xây dựng đồ thị luồng điều khiển từ mã nhị phân giúp lập trình viên hiểu rõ hơn về hành vi hệ thống và các API, đồng thời phát hiện các lỗ hổng bảo mật tiềm ẩn.

21/02/2025

Trích đoạn nội dung tài liệu

ĐẠI HỌC QUỐC GIA TP. HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN HỮU HOÀNG XÂY DỰNG ĐỒ THỊ LUỒNG ĐIỀU KHIỂN TỪ MÃ NHỊ PHÂN ỨNG DỤNG ANDROID Ngành: KHOA HỌC MÁY TÍNH Mã số: 60.01 LUẬN VĂN THẠC SĨ TP. HỒ CHÍ MINH, tháng 12 năm 2016 ĐẠI HỌC QUỐC GIA TP. HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN HỮU HOÀNG XÂY DỰNG ĐỒ THỊ LUỒNG ĐIỀU KHIỂN TỪ MÃ NHỊ PHÂN ỨNG DỤNG ANDROID Ngành: KHOA HỌC MÁY TÍNH Mã số: 60.01 LUẬN VĂN THẠC SĨ TP.

HỒ CHÍ MINH, tháng 12 năm 2016 CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG - HCM Chữ ký Cán bộ hướng dẫn khoa học: PGS. Quản Thành Thơ. Cán bộ chấm nhận xét 1: TS. Võ Thị Ngọc Châu.

Cán bộ chấm nhận xét 2: PGS. Lê Trung Quân. Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM ngày 30 tháng 12 năm 2016.

Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: 1. Dương Tuấn Anh 2. Nguyễn Đức Dũng 3. Võ Thị Ngọc Châu 4.

Lê Trung Quân 5. Đỗ Phúc Xác nhận của Chủ tịch Hội đồng đánh giá luận văn và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được chỉnh sửa (nếu có). CHỦ TỊCH TRƯỞNG KHOA Hội đồng Khoa học và Kỹ thuật Máy tính PGS. Dương Tuấn Anh.

ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập - Tự do - Hạnh phúc —————- —————- NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Hữu Hoàng MSHV: 7140234 Ngày, tháng, năm sinh: 21-01-1990 Nơi sinh: Đồng Tháp Chuyên ngành: Khoa học Máy tính Mã ngành: 60. TÊN ĐỀ TÀI: Xây dựng đồ thị luồng điều khiển từ mã nhị phân ứng dụng Android. NHIỆM VỤ VÀ NỘI DUNG: Luận văn có nhiệm vụ nghiên cứu về việc xây dựng đồ thị luồng điều khiển từ mã nhị phân của Android. Luận văn đề xuất một hướng tiếp cận mới là tập trung xây dựng đồ thị luồng điều khiển cho cả hệ thống và ứng dụng Android, từ đó có thể khai thác để tìm ra các rò rỉ bảo mật của hệ điều hành này.

Bên cạnh đó, giúp các lập trình viên nắm bắt được cách thức giao tiếp giữa hệ thống và ứng dụng Android. NGÀY GIAO NHIỆM VỤ: ngày 11 tháng 01 năm 2016. NGÀY HOÀN THÀNH NHIỆM VỤ: ngày 02 tháng 12 năm 2016. CÁN BỘ HƯỚNG DẪN: PGS.

Quản Thành Thơ Tp. năm 2017 CÁN BỘ HƯỚNG DẪN TRƯỞNG KHOA (Họ tên và chữ ký) Khoa học và Kỹ thuật Máy tính (Họ tên và chữ ký) PGS. Quản Thành Thơ. Lời cảm ơn Trong quá trình nghiên cứu, tôi nhận được nhiều sự giúp đỡ và đóng góp từ các giáo sư hướng dẫn, các đồng nghiệp, bạn bè và thành viên trong đình.

Khi gặp những khó khăn trong công việc, họ luôn cho tôi lời khuyên chân thành và hiệu quả để giúp tôi có thể hoàn thành tốt nghiên cứu. Tôi vô cùng biết ơn PGS. Quản Thành Thơ và PGS. Các giáo sư luôn hướng dẫn ý tưởng và khuyến khích tôi đi xa hơn trong nghiên cứu.

Họ cũng hỗ trợ cho tôi nguồn lực cũng như tạo cho tôi điều kiện đến thực tập tại trường Singapore Management University trong quá trình thực hiện luận văn này. Tôi muốn gửi lời cảm ơn tới anh Nguyễn Minh Hải, anh Đoàn Thành Nam, anh Hoàng Văn Đức Thông, TS. Hoàng Tuấn Anh, La Thành Tâm, Phạm Hồng Quang. Họ vừa là bạn vừa là đồng nghiệp của tôi trong quá trình tôi thực tập, làm việc tại trường Đại học Bách khoa Tp.

HCM và Singapore Management University. Họ luôn giúp đỡ và cho tôi những lời khuyên hữu ích trong suốt quá trình nghiên cứu. Tôi cũng muốn gửi lời cảm ơn chân thành đến PGS. Rajesh Krishna BALAN và các đồng nghiệp tại Livelabs Singapore Management University.

Họ luôn hỗ trợ và cung cấp các thiết bị, tài nguyên tốt nhất cho tôi ở khi làm việc tại phòng thí nghiệm. Cuối cùng, tôi xin cảm ơn gia đình tôi đã luôn bên cạnh ủng hộ và tạo những điều kiện tốt nhất để tôi có thể tập trung cho việc nghiên cứu. HCM, ngày 02 tháng 12 năm 2016 Nguyễn Hữu Hoàng Abstract Android has become the most popular mobile system. Millions of applica- tions, including many malwares, haven been developed for it.

Since Android itself evolves constantly with changing features and higher complexities, it is challenging for application developers to keep up with the changes and maintain the compatibility of their apps across Android versions; and it is challenging for application analysis tools to accurately model and analyze app behaviors across Android versions. Even though the overall system ar- chitecture of Android and many APIs are documented, many other APIs and implementation details are not, not to mention potential bugs and vulnera- bilities. Techniques and tool supports are thus needed to automatically ex- tract information from different versions of Android to help programmers understand system behaviors and APIs across different versions. This pa- per aims to address the need.

It performs whole-system analysis for differ- ent versions of Android by using both backward and forward static analysis of intra-procedural and inter-procedural control-flow and data-flow graphs. It can collect information about functions in Android that can be invoked by ap- plications, which are referred to as publicly accessible functions in this paper. Such information can help programmers better understand the ways in which their applications utilize system functions. We have analyzed Android ver- sions 4.1, and show basic statistics about the publicly accessible functions in different Android versions.

We also use an example to illustrate that the information about publicly accessible functions can be useful in identifying unprotected system functions whose invocations may not be protected by proper permissions and may lead to security and privacy violations. Tóm tắt Android đã trở thành một hệ thống di động phổ biến nhất. Hàng triệu ứng dụng kể cả các loại mã độc được phát triển cho nó. Bởi vì Android liên tục phát triển với sự thay đổi các tính năng ngày một phức tạp hơn, nó trở thành một thách thức cho các nhà phát triển để theo kịp với những thay đổi và duy trì khả năng tương thích các ứng dụng của họ trên các phiên bản Android khác nhau; đây cũng là một thách thức cho các công cụ phân tích ứng dụng, nhằm mô phỏng chính xác đồng thời phân tích hành vi ứng dụng trên mỗi phiên bản Android.

Mặc dù kiến trúc tổng thể và nhiều hàm API được cung cấp tài liệu, nhưng nhiều API khác lại không có tài liệu chi tiết, chưa kể đến các lỗi và lỗ hỏng tiềm ẩn. Do đó, cần thiết có những kỹ thuật và công cụ để tự động trích xuất thông tin từ các phiên bản Android khác nhau để giúp các lập trình viên hiểu được hành vi của hệ thống và các API khác nhau. Nghiên cứu này nhằm giải quyết nhu cầu đó, thực hiện phân tích toàn bộ hệ thống trên mỗi phiên bản Android khác nhau, bằng cách sử dụng cả hai phân tích tĩnh ngược và xuôi dòng của intra-procedural và inter-procedural dựa trên đồ thị luồng điều khiển và dữ liệu. Đồng thời cũng thu thập các thông tin về các hàm có thể được gọi bởi các ứng dụng, được gọi là hàm truy cập công khai trong nghiên cứu này.

Những thông tin này có thể giúp lập trình viên hiểu rõ hơn về cách thức các ứng dụng của họ sử dụng các chức năng trong hệ thống. Chúng tôi đã phân tích trên các phiên bản Android 4.1 và đưa ra các số liệu thống kê cơ bản về các hàm truy cập công khai trên những phiên bản này. Chúng tôi cũng dùng một ví dụ để minh họa rằng các thông tin về hàm truy cập công khai có thể hữu ích trong việc xác định những hàm trong hệ thống không được bảo vệ bởi các quyền truy cập thích hợp và có thể dẫn đến hành vi xâm phạm bảo mật và sự riêng tư. Lời cam đoan Tôi xin cam đoan những nghiên cứu trong luận văn này hoàn toàn được tôi xây dựng và ghi nhận trong quá trình tôi học tập tại Khoa Khoa học và Kỹ thuật Máy tính, trường Đại học Bách Khoa, Đại học Quốc gia Việt Nam - TP HCM cũng như quá trình tôi thực tập tại Livelabs, School of Information Systems, Singapore Management University.

Một phần của nghiên cứu này đã được công bố trong hai báo cáo khoa học dưới đây: 1. Poster: Android Whole-System Control Flow Analysis for Accurate Application Behavior Modeling. In Proceedings of the 14th Annual In- ternational Conference on Mobile Systems, Applications, and Services Companion (MobiSys ’16 Companion). ACM, New York, NY, USA, 30-30.

DOI: http://dx. Whole-System Analysis For Understanding Publicly Accessible Func- tions In Android. In Proceedings of the 11th South East Asean Techni- cal University Consortium Symposium (SEATUC 2017). Ho Chi Minh City, Vietnam.

Nguyễn Hữu Hoàng Mục lục 1 Giới thiệu 1 1.1 Lí do nghiên cứu .2 Mục tiêu nghiên cứu .1 Tổng quan về Android .2 Các dịch vụ hệ thống .3 Cấu trúc Android Package và định dạng DEX. 8 3 Nghiên cứu liên quan 11 3.1 Các bước xây dựng và phân tích đồ thị cuộc gọi .2 Công cụ và framework phân tích bytecode .3 Các mục đích nghiên cứu .4 Phương pháp phân tích cơ bản. 16 4 Hướng tiếp cận 19 4.1 Tổng quan hướng tiếp cận .2 Những thách thức .3 Hàm truy cập công khai .4 Hiểu về hàm hệ thống Android và kiểm tra quyền truy cập .2 Tóm tắt kết quả. 31 6 Kết luận 32 7 Tài liệu 33 8 Phụ lục 39 8.1 Các bài báo đã công bố .2 Lý lịch trích ngang.

51 1 GIỚI THIỆU 1 Giới thiệu 1.1 Lí do nghiên cứu Ra đời năm 2007, hệ điều hành Android đạt được sự phát triển nhanh chóng, năm 2016 Android đã chiếm 80% thị phần hệ điều hành di động toàn cầu [19]. Hệ điều hành này có hơn 8 triệu nhà phát triển ứng dụng tính tới năm 2014 [18]. Do đó, để giúp các lập trình viên, đặc biệt là những người mới làm quen, phát triển ứng dụng một cách nhanh chóng thì nắm bắt kiến trúc của hệ điều hành và tất cả các API được cung cấp là việc cần thiết. Khi đó, nhà phát triển có thể hiểu được những cách thức mà hệ điều hành quản lý các ứng dụng và gọi các chức năng muốn sử dụng thông qua các API này.

Mặc dù kiến trúc hệ thống của Android và một số API được cung cấp tài liệu, tuy nhiên do Android được phát triển trải dài từ phiên bản 1.0, vì vậy gây ra sự không tương thích trên các phiên bản và sự thiếu nhất quán giữa các hành vi của mã trong thực tế với tài liệu. Ngoài ra còn có các API không được công bố trong tài liệu nhưng vẫn có thể được sử dụng từ ứng dụng, bên cạnh đó còn có những lỗi và lỗ hỏng của hệ điều hành bị các ứng dụng khai thác với mục đích xấu.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Luận văn thạc sĩ khoa học máy tính "Xây Dựng Đồ Thị Luồng Điều Khiển Từ Mã Nhị Phân Ứng Dụng Android" tập trung vào việc phân tích và xây dựng đồ thị luồng điều khiển (CFG) từ mã nhị phân của các ứng dụng Android. Nghiên cứu này cung cấp phương pháp tiếp cận hiệu quả để hiểu rõ cấu trúc và luồng thực thi của ứng dụng, hỗ trợ các nhà phát triển trong việc tối ưu hóa mã nguồn, phát hiện lỗi và tăng cường bảo mật. Đây là tài liệu hữu ích cho những ai quan tâm đến phân tích mã nhị phân và kỹ thuật reverse engineering trong lĩnh vực ứng dụng di động.

Để mở rộng kiến thức về các phương pháp phân tích dữ liệu và thuật toán, bạn có thể tham khảo thêm Luận văn thạc sĩ khoa học máy tính phân loại dữ liệu một lớp và ứng dụng trong bài toán phát hiện bất thường. Nếu quan tâm đến các giải pháp bảo mật, Luận văn thạc sĩ khoa học máy tính giải pháp cảnh báo kiểu tấn công an ninh mạng deface và hiện thực là một tài liệu đáng đọc. Ngoài ra, Luận văn thạc sĩ khoa học máy tính tìm kiếm tương tự trên dữ liệu chuỗi thời gian dạng luồng cũng mang đến góc nhìn sâu sắc về xử lý dữ liệu thời gian thực.