Thực hành Lỗ hổng Buffer Overflow
Thí nghiệm này được thực hiện trên hệ điều hành Ubuntu Linux 64-bit, trong môi trường đám mây của实验楼 (Shiyanlou).
Giới thiệu
Lỗ hổng bộ đệm tràn (Buffer Overflow) xảy ra khi một chương trình cố gắng ghi dữ liệu vào một bộ đệm (buffer) vượt quá kích thước đã được cấp phát cố định. Lỗ hổng này có thể bị kẻ tấn công lợi dụng để thay đổi luồng ...
Đăng vào ngày 12 tháng 6 lúc 04:48
Cấu trúc vòng lặp và câu lệnh điều khiển luồng trong ngôn ngữ C
Trong lập trình C, ngoài các câu lệnh điều kiện rẽ nhánh như if hay switch, các cấu trúc vòng lặp đóng vai trò cốt lõi trong việc xử lý các tác vụ lặp đi lặp lại. Việc sử dụng vòng lặp giúp tối ưu hóa mã nguồn, tránh việc sao chép dư thừa các đoạn code và quản lý luồng thực thi của chương trình hiệu quả hơn.
Vòng lặp While
Vòng lặp while thuộc ...
Đăng vào ngày 10 tháng 6 lúc 04:46
Chương Trình In Ma Trận Số Bằng Ngôn Ngữ C
Trong quá trình học ngôn ngữ lập trình C, cấu trúc vòng lặp lồng nhau đóng vai trò quan trọng. Bài viết này sẽ hướng dẫn bạn cách tạo một chương trình in ma trận số bằng cách sử dụng vòng lặp lồng nhau.
Mã Chi Tiết
Mục tiêu của chúng ta là in ra một ma trận 5x5, mỗi dòng hiển thị các số từ 1 đến 5 liên tiếp.
#include <stdio.h>
int m ...
Đăng vào ngày 9 tháng 6 lúc 23:14
C Cơ Bản: Biến, Hằng, Chuỗi, Toán Tử và Biểu Diễn Số Nguyên
Khi khai báo biến trong C, trình biên dịch yêu cầu các khai báo phải xuất hiện ngay từ đầu khối lệnh. Việc đặt khai báo sau các câu lệnh thực thi sẽ gây lỗi biên dịch.
Mọi biến khai báo bên trong hàm main() đều là biến cục bộ — tuy nhiên, biến cục bộ không nhất thiết phải nằm trong main(); chúng có thể tồn tại trong bất kỳ hàm nào khác.
Một b ...
Đăng vào ngày 8 tháng 6 lúc 00:44
C Ngôn Ngữ Cơ Bản
Trong bài viết này, chúng ta sẽ tìm hiểu về ngôn ngữ lập trình C, một trong những ngôn ngữ phổ biến nhất và mạnh mẽ nhất hiện nay.
Đối tượng phù hợp:
Học sinh thi đỗ vào trường đại học, đặc biệt là các môn liên quan đến cấu trúc dữ liệu (cần sử dụng C/C++).
Học sinh thi đỗ vào trường đại học với môn lập trình C/C++.
Những người tự học lập trìn ...
Đăng vào ngày 7 tháng 6 lúc 22:38
Các kỹ thuật nâng cao sử dụng #define trong C và C++
Định nghĩa và hủy bỏ macro
#define PI 3.14 // Thay thế tại thời điểm biên dịch
#define T1 3+4 // Dễ gây nhầm lẫn
#define T2 (3+4) // Thêm dấu ngoặc để rõ nghĩa
float r = 1.0;
float area = PI * r * r;
int a = 2* T1; // Sau khi thay thế: int a = 2*3+4, không đúng ý
int a = 2* T2; // Sau khi thay thế: int a = 2*(3+4), đúng ý
...
Đăng vào ngày 4 tháng 6 lúc 16:26
So sánh hiệu suất I/O giữa C++ cin và C scanf
Người tham gia các cuộc thi lập trình thường gặp thách thức khi dữ liệu đầu vào rất lớn, và việc đọc dữ liệu từ stdin có thể trở thành điểm nghẽn hiệu năng. Các vấn đề như vậy thường đi kèm cảnh báo "Warning: large I/O data". Hãy tạo một tệp thử nghiệm chứa một dòng 16 byte và ký tự xuống dòng, với tổng cộng 1.000.000 dòng, tạo ra tệp 17MB để t ...
Đăng vào ngày 4 tháng 6 lúc 06:06
Triển khai danh sách liên kết đơn trong C
Thiết kế cấu trúc nút
typedef struct Node {
void* payload;
struct Node* next;
} Node;
payload: Con trỏ kiểu void* lưu dữ liệu, cho phép linh hoạt với nhiều kiểu dữ liệu.
next: Con trỏ đến nút tiếp theo trong danh sách.
Thiết kế cấu trúc danh sách
typedef struct LinkedList {
Node head;
int length;
} LinkedList;
head: Nú ...
Đăng vào ngày 3 tháng 6 lúc 17:18
Truyền thông liên tiến trình trên Android: IPC, RPC, Hệ thống Binder và Gọi hứng ứng dụng C
Truyền thông liên tiến trình trên Android: IPC, RPC, Hệ thống Binder và Gọi hứng ứng dụng C
1. Khái niệm cơ bản
IPC (Inter-Process Communication) hay Truyền thông liên tiến trình là cơ chế một tiến trình gửi dữ liệu đến một tiến trình khác. Khi ứng dụng A cần trao đổi dữ liệu với ứng dụng B, cơ chế IPC được sử dụng.
RPC (Remote Procedure Call) ...
Đăng vào ngày 30 tháng 5 lúc 21:03
Cơ chế tối ưu switch...case bằng bảng nhảy
1. Cú pháp cơ bản của switch...case
Câu lệnh switch trong C/C++ yêu cầu biểu thức điều khiển phải là kiểu nguyên (như int, char, enum, v.v.), không hỗ trợ kiểu thực (float, double) hay chuỗi ký tự.
switch (biểu_thức) {
case hằng_số_1:
// khối lệnh
break;
case hằng_số_2:
// khối lệnh
break;
default:
...
Đăng vào ngày 30 tháng 5 lúc 13:12