Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 83 trang
THÔNG TIN TÀI LIỆU
Cấu trúc
CÁC VẤN ĐỀ VỀ MÃ NGUỒN
Nội dung
Các loại mã
Source code
Intermediate code
Bytecode
Machine code
Obfuscated code
Slide 9
Trong sáng hóa mã nguồn
Slide 11
Phong cách trình bày
Trình bày tổng thể (1)
Trình bày tổng thể (2)
Khai báo biến và hàm (1)
Khai báo biến và hàm (2)
Khai báo biến và hàm (3)
Khai báo biến và hàm (4)
Khai báo biến và hàm (5)
Khai báo biến và hàm (6)
Khai báo biến và hàm (7)
Trình bày dòng lệnh (1)
Trình bày dòng lệnh (2)
Trình bày dòng lệnh (3)
Trình bày dòng lệnh (4)
Thụt đầu dòng (1)
Thụt đầu dòng (2)
Thụt đầu dòng (3): K&R
Thụt đầu dòng (4): 1TBS
Thụt đầu dòng (5): Allman
Thụt đầu dòng (6-1): BSD KNF
Thụt đầu dòng (6-2): BSD KNF
Thụt đầu dòng (6-3): BSD KNF
Thụt đầu dòng (7): GNU
Chú thích chương trình (1)
Chú thích chương trình (2)
Chú thích chương trình (3)
Chú thích chương trình (4)
Chú thích chương trình (5)
Chú thích chương trình (6)
Chú thích chương trình (7)
Slide 42
Tự động tạo tài liệu (1)
Tự động tạo tài liệu (2)
Tự động tạo tài liệu (3)
Tự động tạo tài liệu (4)
Tự động tạo tài liệu (5)
Slide 48
Bảo mật mã nguồn
Slide 50
Bảo mật hướng hành chính
Chú thích, đặt tên riêng
Đoạn giải thuật đặc trưng
Hạn chế của bảo mật hướng hành chính
Slide 55
Đen tối hóa mã nguồn
Slide 57
Loại bỏ chú thích
Mã hóa chuỗi
Đổi tên định danh
Sử dụng khai báo tiền xử lý
Thay đổi truy xuất mảng (1)
Thay đổi truy xuất mảng (2)
Biến đổi biểu thức
Biến đổi cấu trúc điều khiển (1)
Biến đổi cấu trúc điều khiển (2)
Thay đổi cách gọi hàm (1)
Thay đổi cách gọi hàm (2)
Ví dụ từ wikipedia (1)
Ví dụ từ wikipedia (2)
Ví dụ từ wikipedia (3)
Ví dụ từ wikipedia (4)
Ví dụ từ wikipedia (5)
Ví dụ từ wikipedia (6)
Đánh giá đen tối hóa mã nguồn
Slide 76
IOCC
Ví dụ trên IOCC (1)
Ví dụ trên IOCC (2)
Ví dụ trên IOCC (3)
Ví dụ trên IOCC (4-1)
Ví dụ trên IOCC (4-2)
Thảo luận
Nội dung
Giảng viên: TS. Trần Đan Thư Nhóm 1: Nguyễn Thị Bảo Chi Phạm Minh Dũng CÁC VẤN ĐỀ VỀ MÃ NGUỒN 2 Nội dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 3 Các loại mã Source code (mã nguồn) Intermediate code, bytecode Machine code Obfuscated code 4 Source code Tập các phát biểu/chỉ dẫn mà con người có thể đọc hiểu được 5 Intermediate code Tập các phát biểu duy nhất và độc lập với phần cứng int dotprod(int a[], int b[], int N){ int i, prod = 0; for (i = 1; i ≤ N; i++) { prod += a[i]∗b[i]; } return prod; } enter dotprod prod = 0 i = 1 t1 = 4*i t2 = a[t1] t3 = 4*i t4 = b[t3] t5 = t2*t4 t6 = prod+t5 prod = t6 t7 = i+i i = t7 if i ? N goto 4 retval prod leave dotprod return 6 Bytecode public Employee(String strName, int num) { name = strName; idNumber = num; storeData(strName, num); } Method Employee(java.lang.String,int) 0 aload_0 1 invokespecial #3 <Method java.lang.Object()> 4 aload_0 5 aload_1 6 putfield #5 <Field java.lang.String name> 9 aload_0 10 iload_2 11 putfield #4 <Field int idNumber> 14 aload_0 15 aload_1 16 iload_2 17 invokespecial #6 <Method void storeData(java.lang.String, int)> 20 return 7 Machine code Tập các phát biểu ở mức thấp nhất phụ thuộc hoàn toàn phần cứng 8b 02 mov eax,[edx] 7b bf jnp 0040008a 8b e9 mov ebp,ecx 64 b4 8b mov ah,8b ea 64 b5 8b af 66 b4 jmp b466:af8bb564 8b 88 7b a7 8b ff mov ecx,[eax-00745885] 64 b4 8b mov ah,8b 02 7b be add bh,[ebx-42] 8b e6 mov esp,esi 64 b4 8b mov ah,8b ec in al,dx 47 inc edi bf 8b a0 64 b4 mov edi,b464a08b 8b 2d 62 b2 8b eb mov ebp,[eb8bb262] 64 b4 8b mov ah,8b 52 push edx 8 Obfuscated code Là các loại trên nhưng được làm tối nghĩa (đen tối hóa mã nguồn) Chủ yếu áp dụng cho source code _(__,___,____){___/__<=1?_(__,___+1,____): !(___%__)?_(__,___+1,0):___%__==___/ __&&!____?(printf("%d\t",___/__),_(__,___+1,0)): ___%__>1&&___%__<___/__?_(__,1+ ___,____+!(___/__%(___%__))): ___<__*__?_(__,___+1,____):0;}main(){_(100,0,0);} 9 Nội dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 10 Trong sáng hóa mã nguồn Rất quan trọng trong quá trình lập trình với nhiều lý do: 80% chu kỳ sống của phần mềm là bảo trì Mã nguồn khó đọc chỉ có thể được bảo trì bởi chính người viết ra nó Quy ước viết mã nguồn tăng khả năng dễ đọc cho phần mềm, cho phép những lập trình viên khác nhanh chóng tiếp cận mã nguồn khi nó được tích hợp trên nhiều module khác nhau Phục vụ tốt công tác thanh tra mã nguồn [...]...Nội dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 11 Phong cách trình bày Trình bày tổng thể Khai báo biến và hàm Trình bày dòng lệnh Thụt đầu dòng Chú thích chương... bày dòng lệnh (2) Nên sử dụng các dấu () khi muốn tránh các lỗi về độ ưu tiên toán tử //Không nên int i = a >= b && c < d && e = b) && (c < d) && (e next) { } 25 Thụt đầu dòng (1) Cặp dấu {} bao các khối lệnh, giúp người . Dũng CÁC VẤN ĐỀ VỀ MÃ NGUỒN 2 Nội dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 3 Các. dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 10 Trong sáng hóa mã nguồn Rất. thanh tra mã nguồn 11 Nội dung Các loại mã Trong sáng hóa mã nguồn Phong cách trình bày Tự động tạo tài liệu Bảo mật mã nguồn Bảo mật hướng hành chính Đen tối hóa mã nguồn IOCC 12 Phong