img 5457b991ed819.png.pagespeed.ce .g4H XL1Nj5
Kể từ khi người tiên phong viết ra 5318008 trên máy tính, những mọt sách đã ẩn số bí hiểm bên trong PC của bạn và sử dụng chúng để đàm phán bắt tay bí hiểm giữa những ứng dụng và tệp. Hôm nay tất cả chúng ta hãy xem nhanh 1 số ít ví dụ mê hoặc hơn .

Số ma thuật là gì?

Hầu hết những ngôn từ lập trình sử dụng loại số nguyên 32 bit để biểu lộ 1 số ít loại tài liệu nhất định phía sau hậu trường – bên trong số này được tàng trữ trong RAM hoặc được CPU sử dụng dưới dạng 32 và 0, nhưng trong mã nguồn, nó sẽ được viết bằng một trong hai định dạng thập phân thường thì, hoặc là định dạng thập lục phân, sử dụng những số từ 0 đến 9 và những vần âm từ A đến F .
Khi hệ quản lý hoặc một ứng dụng muốn xác lập loại tệp, nó hoàn toàn có thể nhìn vào phần đầu của tệp để biết một điểm lưu lại đặc biệt quan trọng biểu lộ loại tệp. Chẳng hạn, một tệp PDF hoàn toàn có thể mở màn bằng giá trị hex 0x255044462 D312E33, tương tự với % % PDF-1. 3, ở định dạng ASCII hoặc tệp ZIP mở màn bằng 0x504 B, tương tự với PK PK gốc, xuất phát từ tiện ích PKZip khởi đầu. Bằng cách nhìn vào chữ ký này, hoàn toàn có thể thuận tiện xác lập một loại tệp tin ngay cả khi không có bất kể siêu dữ liệu nào khác .
img 5457b71830b28.png.pagespeed.ce.9Ot7w1 MZE

Tiện ích Linux có thể sử dụng tập tin dữ liệu Linux từ thiết bị đầu cuối để xác định loại tập tin – thực tế, nó đọc các số ma thuật từ một tập tin có tên là ma thuật.

Khi một ứng dụng muốn gọi một hàm, nó hoàn toàn có thể truyền những giá trị cho hàm đó bằng cách sử dụng những loại tiêu chuẩn như số nguyên, hoàn toàn có thể được biểu lộ trong mã nguồn ở định dạng thập lục phân. Điều này đặc biệt quan trọng đúng với những hằng số, là những định danh được xác lập bằng những tên hoàn toàn có thể đọc được của con người như AUTOSAVE_INTERVAL, nhưng chúng ánh xạ tới những giá trị số nguyên ( hoặc loại khác ) thực tiễn. Vì vậy, thay vì một lập trình viên gõ một giá trị như 60 mỗi lần họ gọi hàm trong mã nguồn, họ hoàn toàn có thể sử dụng hằng số AUTOSAVE_INTERVAL để dễ đọc hơn. ( Các hằng số thường thuận tiện được nhận ra vì chúng được viết bằng toàn bộ những chữ in hoa ) .
Tất cả những ví dụ này hoàn toàn có thể thuộc thuật ngữ Số ma thuật, chính bới chúng hoàn toàn có thể nhu yếu 1 số ít thập lục phân đơn cử để một hàm hoặc loại tệp hoạt động giải trí đúng mực nếu giá trị không đúng mực, nó sẽ không hoạt động giải trí. Và khi một lập trình viên muốn có một niềm vui nho nhỏ, họ hoàn toàn có thể xác lập những giá trị này bằng cách sử dụng những số thập lục phân đánh vần một cái gì đó bằng tiếng Anh, còn được gọi là hexspeak .

Vui với số ma thuật: Một số ví dụ đáng chú ý

img 5457b7061e616.png.pagespeed.ce.c7OMkzVdVO
Nếu bạn xem nhanh mã nguồn Linux, bạn sẽ thấy rằng lệnh gọi mạng lưới hệ thống _reboot ( ) trên Linux nhu yếu một biến ma thuật của Ma thuật được chuyển qua bằng với số thập lục phân 0 xfee1dead. Nếu một cái gì đó cố gắng nỗ lực gọi hàm đó mà không chuyển vào giá trị ma thuật đó trước, nó sẽ trả về một lỗi .

GUID (mã định danh duy nhất trên toàn cầu) cho phân vùng khởi động BIOS trong sơ đồ phân vùng GPT là 21686148-6449-6E6F-744E-656564454649, tạo thành chuỗi ASCII trong các máy tính thay thế BIOS bằng UEFI , nhưng nó không nhất thiết phải như vậy.

Microsoft nổi tiếng đã giấu 0x0 B00B135 trong mã nguồn tương hỗ máy ảo Hyper-V của họ gửi cho Linux, sau đó họ đổi giá trị thành 0 xB16B00B5 và sau cuối họ đã chuyển nó thành thập phân trước khi vô hiệu trọn vẹn khỏi mã nguồn .
Các ví dụ mê hoặc hơn gồm có :

  • 0xbaaaaaad – được sử dụng bởi ghi nhật ký sự cố iOS để chỉ ra rằng nhật ký là một ngăn xếp của toàn bộ hệ thống.
  • 0xbad22222 – được sử dụng bởi ghi nhật ký sự cố iOS để chỉ ra rằng một ứng dụng VoIP đã bị iOS giết chết vì nó hoạt động sai.
  • 0x8badf00d – (Ate Bad Food) được sử dụng bởi nhật ký sự cố iOS để chỉ ra rằng một ứng dụng mất quá nhiều thời gian để làm một cái gì đó và đã bị giết bởi thời gian chờ của cơ quan giám sát.
  • 0xdeadfa11 – (Dead Fall) được sử dụng bởi đăng nhập sự cố iOS khi ứng dụng bị người dùng buộc phải thoát.
  • 0xDEADD00D – được Android sử dụng để biểu thị hủy bỏ VM.
  • 0xDEAD10CC (Khóa chết) được sử dụng bởi ghi nhật ký sự cố iOS khi ứng dụng khóa tài nguyên trong nền.
  • 0xBAADF00D (Thực phẩm xấu) được sử dụng bởi  chức năng LocalAlloc trong Windows để gỡ lỗi.
  • 0xCAFED00D (Cafe dude) được sử dụng bởi nén pack200 của Java.
  • 0xCAFEBABE (Cafe babe) được Java sử dụng làm định danh cho các tệp lớp đã biên dịch
  • 0x0D15EA5E (Bệnh) được Nintendo sử dụng trên Gamecube và Wii để chỉ ra một khởi động bình thường đã xảy ra.
  • 0x1BADB002 (1 khởi động xấu) được đặc tả multiboot sử dụng làm số ma thuật
  • 0xDEADDEAD – được Windows sử dụng để chỉ ra sự cố gỡ lỗi được khởi tạo thủ công , còn được gọi là Màn hình xanh chết chóc.

Tất nhiên, đây không phải là những người duy nhất ngoài kia, mà chỉ là một list ngắn những ví dụ có vẻ như vui. Biết gì nữa không ? Hãy cho chúng tôi trong những quan điểm .

Xem ví dụ cho chính mình

Bạn có thể xem thêm các ví dụ bằng cách mở trình soạn thảo hex và sau đó mở bất kỳ số loại tệp nào. Có rất nhiều trình soạn thảo hex phần mềm miễn phí có sẵn cho Windows, OS X hoặc Linux – chỉ cần đảm bảo bạn cẩn thận khi cài đặt phần mềm miễn phí để không bị nhiễm crapware hoặc phần mềm gián điệp.

Như một ví dụ bổ trợ, hình ảnh Phục hồi cho điện thoại cảm ứng Android như ClockworkMod mở màn với, ANDROID ! iết nếu đọc ở định dạng ASCII .

img_5457b991ed819

Lưu ý : đừng đổi khác bất kể giá trị gì trong bảng. mạng lưới hệ thống hoàn toàn có thể hỏng mọi thứ !

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.