0x00 là gì

  -  

Trên Linux, hãy xem vấn đề đó : nó được sử dụng để xử trí system_call. Tất nhiên trên một hệ quản lý và điều hành khác, điều này còn có thể tức là một cái gì đó hoàn toàn khác.

Bạn đang xem: 0x00 là gì

Bạn sẽ xem: 0x00 là gì

YudaPrawira: chúng ta nên nghĩ đến các hướng dẫn trước đó như tùy chỉnh cấu hình args trong thanh ghi và int 0x80như một kiểu đặc biệt của callmột hàm trong phân tử nhân (được chọn vì chưng eax).

intnghĩa là ngắt, và number 0x80là số ngắt. Một ngắt chuyển luồng chương trình cho ngẫu nhiên ai đang xử lý ngắt đó, ngắt 0x80trong trường hòa hợp này. Vào Linux, 0x80trình xử trí ngắt là hạt nhân cùng được sử dụng để triển khai các cuộc gọi khối hệ thống tới hạt nhân bởi những chương trình khác.

Kernel được thông tin về lệnh gọi hệ thống mà chương trình ước ao thực hiện, bằng cách kiểm tra cực hiếm trong thanh ghi %eax(cú pháp AT&T cùng EAX vào cú pháp Intel). Mỗi lệnh gọi khối hệ thống có những yêu cầu không giống nhau về câu hỏi sử dụng những thanh ghi khác. Ví dụ: quý hiếm 1in %eaxcó nghĩa là một trong lệnh gọi khối hệ thống exit()và giá trị trong %ebxgiữ quý giá của mã trạng thái đến exit().

— Polat Tuzla nguồn 47

Hãy ghi hãy nhờ rằng 0x80=80h =128

Bạn rất có thể thấy ở đây mà INTchỉ là 1 trong không ít hướng dẫn (thực sự là thay mặt hội ngữ điệu (hay tôi bắt buộc nói "ghi nhớ") của nó) mà lại tồn trên trong tập lệnh x86. Chúng ta cũng có thể tìm thêm thông tin về hướng dẫn này trong sách trả lời riêng của hãng intel tại trên đây .

Tóm tắt từ PDF:

INT n / INTO / INT 3 — thủ tục gọi cho ngắt

Lệnh INT n tạo nên một cuộc gọi tới trình cách xử trí ngắt hoặc ngoại lệ được hướng đẫn với toán hạng đích. Toán hạng đích chỉ định một vectơ từ 0 đến 255, được mã hóa bên dưới dạng quý giá trung gian 8 bit không dấu. Lệnh INT n là cách ghi nhớ phổ biến để tiến hành lệnh gọi do phần mềm tạo ra cho tới trình xử lý ngắt.

Xem thêm: Nhân Viên Lễ Tân Tiếng Anh Là Gì : Định Nghĩa, Ví Dụ Anh Việt

Một một trong những ngắt ứng dụng DOS có ích nhất là ngắt 0x21. Bằng cách gọi nó với những tham số không giống nhau trong thanh ghi (chủ yếu hèn là ah với al), bạn cũng có thể truy cập các chuyển động IO khác nhau, cổng đầu ra chuỗi và chưa dừng lại ở đó nữa.

Hầu không còn các khối hệ thống Unix và những dẫn xuất không áp dụng ngắt phần mềm, ngoại trừ ngắt 0x80, được áp dụng để tiến hành các cuộc điện thoại tư vấn hệ thống. Điều này được thực hiện bằng cách nhập giá trị 32-bit tương ứng với một công dụng hạt nhân vào thanh ghi EAX của cục xử lý và tiếp nối thực thi INT 0x80.

Vui lòng xem điều này, nơi những giá trị gồm sẵn không giống trong bảng trình xử trí ngắt được hiển thị:


*

Như chúng ta có thể thấy bảng chỉ CPU để tiến hành lệnh hotline hệ thống. Chúng ta cũng có thể tìm thấy bảng Cuộc gọi khối hệ thống Linux tại phía trên .

Vì vậy, bằng cách di gửi giá trị 0x1 vào thanh ghi EAX và gọi INT 0x80 trong lịch trình của bạn, chúng ta có thể làm cho quy trình thực thi mã trong Kernel đang dừng (thoát) quá trình đang chạy hiện tại (trên Linux, CPU intel x86).

Xem thêm: Bảng Nâng Cấp Kiếm Vũ

Đây cũng là 1 nguồn tốt.

phần lớn các khối hệ thống Unix và những dẫn xuất không sử dụng ngắt phần mềm (ngoại trừ int 0x80) có vẻ như như là một trong những cách nói kỳ lạ. Các int 0x80i386 khối hệ thống Linux gọi ABI là cực kỳ giống với DOS int 0x21ABI. Đặt một trong những cuộc gọi vào trong 1 thanh ghi (AH cho DOS, EAX đến Linux) và những args khác trong số thanh ghi khác, kế tiếp chạy một lệnh ngắt phần mềm. Sự khác biệt chính là ở mọi gì mà các lệnh điện thoại tư vấn hệ thống chất nhận được bạn tiến hành (truy cập thẳng vào phần cứng trong DOS chứ không phải Linux) chứ không hẳn ở cách chúng ta gọi chúng. — Peter Cordes