Magic Numbers: Các mã bí mật mà các lập trình viên giấu trong PC của bạn

Nov 3, 2024
Quyền riêng tư và Bảo mật

Kể từ khi người đầu tiên viết ra số 5318008 trên máy tính, những kẻ mọt sách đã giấu các số bí mật bên trong PC của bạn và sử dụng chúng để thương lượng các lần bắt tay bí mật giữa các ứng dụng và tệp. Hôm nay chúng ta hãy xem nhanh một số ví dụ thú vị hơn.

Magic Numbers là gì?

Hầu hết các ngôn ngữ lập trình sử dụng kiểu số nguyên 32 bit để đại diện cho một số loại dữ liệu nhất định - bên trong số này được lưu trữ trong RAM hoặc được CPU sử dụng dưới dạng 32 giá trị và số 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ường hoặc định dạng thập lục phân, sử dụng các số từ 0 đến 9 và các chữ cái từ A đến F.

Khi hệ điều hành hoặc một ứng dụng muốn xác định loại tệp, hệ điều hành có thể tìm đến đầu tệp để tìm một điểm đánh dấu đặc biệt biểu thị loại tệp. Ví dụ: tệp PDF có thể bắt đầu bằng giá trị hex 0x255044462D312E33, bằng “% PDF-1.3” ở định dạng ASCII hoặc tệp ZIP bắt đầu bằng 0x504B, bằng “PK”, giảm dần từ tiện ích PKZip ban đầu. Bằng cách nhìn vào “chữ ký” này, một loại tệp có thể dễ dàng được xác định ngay cả khi không có bất kỳ siêu dữ liệu nào khác.

Các tệp Java Class được biên dịch bắt đầu bằng CAFEBABE

Tiện ích Linux “tệp” có thể được sử dụng từ thiết bị đầu cuối để xác định loại tệp - trên thực tế, nó đọc các con số kỳ diệu từ một tệp được gọi là "ma thuật."

Khi một ứng dụng muốn gọi một hàm, nó có thể truyền các giá trị cho hàm đó bằng cách sử dụng các kiểu tiêu chuẩn như số nguyên, có thể được thể hiện trong mã nguồn ở định dạng thập lục phân. Điều này đặc biệt đúng đối với các hằng số, là số nhận dạng được xác định bằng các tên mà con người có thể đọc được như AUTOSAVE_INTERVAL, nhưng chúng ánh xạ tới các giá trị số nguyên thực tế (hoặc kiểu khác). Vì vậy, thay vì một lập trình viên gõ một giá trị như 60 mỗi khi họ gọi hàm trong mã nguồn, họ có thể sử dụng hằng số AUTOSAVE_INTERVAL để dễ đọc hơn. (Các hằng số thường dễ dàng nhận ra vì chúng được viết bằng tất cả các chữ cái in hoa).

Tất cả những ví dụ này có thể thuộc thuật ngữ Những con số ma thuật , bởi vì chúng có thể yêu cầu một số thập lục phân cụ thể để một hàm hoặc loại tệp hoạt động bình thường… nếu giá trị không chính xác, nó sẽ không hoạt động. Và khi một lập trình viên muốn giải trí một chút, họ có thể xác định các giá trị này bằng cách sử dụng các số thập lục phân đánh vần một thứ gì đó bằng tiếng Anh, hay còn được gọi là hexspeak .

Vui vẻ với những con số kỳ diệu: Một số ví dụ đáng chú ý

Mọi AppleScript đều kết thúc bằng FADEDEAD

Nếu bạn xem nhanh vào mã nguồn Linux , bạn sẽ thấy rằng lệnh gọi hệ thống _reboot () trên Linux yêu cầu một biến "ma thuật" được chuyển bằng số thập lục phân 0xfee1dead. Nếu một cái gì đó cố gắng gọi hàm đó mà không chuyển vào giá trị ma thuật đó trước, nó sẽ chỉ 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 bên trong Lược đồ phân vùng GPT là 21686148-6449-6E6F-744E-656564454649, tạo thành chuỗi ASCII "Hah! IdontNeedEFI", ám chỉ thực tế là GPT thường sẽ được sử dụng trong 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 ẩn 0x0B00B135 trong mã nguồn hỗ trợ máy ảo Hyper-V của họ được gửi tới Linux, sau đó họ đã thay đổi giá trị thành 0xB16B00B5 , và cuối cùng họ chuyển nó sang thập phân trước khi nó bị xóa hoàn toàn khỏi mã nguồn.

Các ví dụ thú vị khác bao gồm:

  • 0xbaaaaaad - được sử dụng bởi ghi nhật ký sự cố iOS để chỉ ra rằng nhật ký là ảnh chụp của toàn bộ hệ thống.
  • 0xbad22222 - được iOS sử dụng ghi nhật ký sự cố để chỉ ra rằng ứng dụng VoIP đã bị iOS khai tử vì 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 để thực hiện điều gì đó và đã bị giết bởi thời gian chờ của cơ quan giám sát.
  • 0xdeadfa11 - (Dead Fall) được iOS sử dụng ghi nhật ký sự cố khi người dùng buộc thoát ứng dụng.
  • 0xDEADD00D - được Android sử dụng để chỉ ra việc hủy bỏ máy ảo.
  • 0xDEAD10CC (Dead Lock) được iOS sử dụng ghi nhật ký sự cố khi ứng dụng khóa tài nguyên trong nền.
  • 0xBAADF00D (Bad Food) được sử dụng bởi LocalAlloc chức năng trong Windows để gỡ lỗi.
  • 0xCAFED00D (Cafe dude) được sử dụng bởi tính năng 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 lỗi khởi động) được sử dụng bởi multiboot đặc điểm kỹ thuật như một con số kỳ diệu
  • 0xDEADDEAD - được Windows sử dụng để biểu thị sự cố gỡ lỗi bắt đầu theo cách thủ công , hay 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 ví dụ duy nhất mà chỉ là một danh sách ngắn các ví dụ có vẻ thú vị. Biết thêm gì không? Hãy cho chúng tôi biết trong phần bình luận.

Xem các ví dụ cho chính bạn

Bạn có thể xem thêm các ví dụ bằng cách mở trình chỉnh sửa hex và sau đó mở bất kỳ số loại tệp nào. Có rất nhiều trình chỉnh sửa hex phần mềm miễn phí có sẵn cho Windows, OS X hoặc Linux - chỉ đảm bảo rằng 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 spyware.

Như một ví dụ khác, hình ảnh khôi phục cho điện thoại Android như ClockworkMod bắt đầu bằng “ANDROID!” nếu đọc ở định dạng ASCII.

Ghi chú: đừng thay đổi bất cứ thứ gì khi bạn đang quan sát xung quanh. Trình chỉnh sửa Hex có thể phá vỡ mọi thứ!

IPhone Secret Codes!

Samsung Secret Codes To Speed Up Your Phone

Call Of Duty: Black Ops - Hidden Menu Secret And Computer Codes - Mini-Games And Cheats

JavaScript Security: Hide Your Code?

Secret Phone Codes You Didn't Know Existed!

CODES Honor Play - Secret Menu / Hidden Mode / EMUI Tricks


Quyền riêng tư và Bảo mật - Các bài báo phổ biến nhất

Bản vá bảo mật tháng 7 năm 2019 của Windows 7 bao gồm phép đo từ xa

Quyền riêng tư và Bảo mật Jul 11, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Trước sự ngạc nhiên của những người theo dõi Windows, bản cập nhật “chỉ dành cho bảo mật” Windows 7 mới ..


Điện thoại thông minh của bạn có chip bảo mật đặc biệt. Đây là cách nó hoạt động

Quyền riêng tư và Bảo mật Oct 23, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Điện thoại Pixel 3 mới của Google có “ Titan M ”Chip bảo mật. Apple có một cái gì đó tương tự v..


Cách tăng tuổi thọ pin cho máy ảnh Netgear Arlo Pro của bạn

Quyền riêng tư và Bảo mật Jun 5, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Camera an ninh không dây Netgear’s Arlo Pro có thể kéo dài từ 3-6 tháng trong một lần sạc, nhưng có rất nhiều yếu..


Cách chỉ chia sẻ một số chi tiết liên hệ nhất định với thẻ tôi riêng tư trên macOS

Quyền riêng tư và Bảo mật Mar 7, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Chia sẻ thông tin liên hệ của bạn từ macOS rất nhanh chóng và dễ dàng, nhưng nếu bạn sử dụng máy Mac cho năng..


Xem tất cả lưu lượng truy cập mạng của máy Mac của bạn trong thời gian thực bằng mắt thường

Quyền riêng tư và Bảo mật Oct 19, 2025

Tự hỏi ứng dụng Mac nào của bạn đang kết nối với Internet và chúng đang làm gì? Thám tử tư cho phép bạn theo dõi các ứng dụng c�..


Tại sao ảnh của bạn không phải lúc nào cũng xuất hiện được xoay chính xác

Quyền riêng tư và Bảo mật Jul 5, 2025

Bạn đã bao giờ tự hỏi tại sao một số bức ảnh trông đúng trong một số chương trình, nhưng lại xuất hiện nghiêng hoặc lộn ngược trong nh�..


Sự khác biệt giữa Jailbreak, Root và Unlock là gì?

Quyền riêng tư và Bảo mật Jun 20, 2025

So với PC, điện thoại và máy tính bảng là những thiết bị khá dễ bị khóa. Bẻ khóa, root và mở khóa là tất cả những cách để vượt qua nh�..


Bảo mật tài khoản Gmail của bạn với mã hóa SSL mà không phá vỡ trình thông báo của Gmail

Quyền riêng tư và Bảo mật Sep 18, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Bất kể bạn đang sử dụng tường lửa nào, nếu bạn đang kết nối với các dịch vụ trực tuyến mà không sử dụng m�..


Thể loại