Nó là viết tắt của cụm từ Kernel address space layout randomization. Nó là 1 công cụ bảo mật của Apple làm cho những Hacker khó có thể tìm ra những object quan trọng trong bộ nhớ vì nó luôn thay đổi ngẫu nhiên sau mỗi lần khởi động chi tiết xem tại đây.
Đối với những máy có memory maps nhỏ hoặc hoặc có quá nhiều device trong DSDT. Có thể sẽ có space cho kernel hoạt động nhưng cũng có thể sẽ có free space mà kernel không bao phủ tới. Vì thế ta sẽ không để macOS chọn 1 khu vực ngẫu nhiên để hoạt động trong mỗi lần reboot mà ta sẽ giới hạn khu vực bất kì mà chắc chắn nó sẽ hoạt động.
Vậy khi nào cần Fix KASLR
Thường khi boot macOS sẽ gặp các lỗi như sau:
Error allocating 0x1197b pages at 0x0000000017a80000 alloc type 2
Couldn't allocate runtime area
//hoặc
Only 244/256 slide values are usable!
//hoặc
panic(cpu 6 caller 0xffffff801fc057ba): a freed zone element has been modified in zone kalloc.4096: expected 0x3f00116dbe8a46f6 but found 0x3f00116d00000000
đảm bảo rằng Booter -> Quirks -> ResizeAppleGpuBars: 0
Boot Options -> Windows8.1/10 mode.
Disable các option không cần thiết trong bios
không cần thiết ở đây có nghĩa là bạn không sử dụng
CSM
Intel SGX
Parallel Port
Serial Port
iGPU
Thunderbolt
LED lighting
Legacy USB
Tìm Slide Value
B1: Bạn chọn OpenShell.efi tại picker của OpenCore.
B2: Ấn Enter hoặc đợi vài giây.
B3: Các bạn gõ lệnh:
//truy cập vào ổ đĩa
fs0:
// kiểm tra xem bạn có đang ở đúng đường dẫn mong muốn không nếu không có thể thử fs1:
ls
// tạo file memmap.txt
memmap > memmap.txt
B5: Bây giờ ta sẽ tiến hành chuyển giá trị thành Slide value chú ý vào giá trị Available lớn nhất ở cột start
chuyển sang decimal để so sánh
B6: Các bạn sẽ thực hiện tính toán theo công thức
chuyển sang decimal để tính toán
(HEX - 0x100000)/0x200000 = Slide Value in HEX
(DECIMAL - 0x100000)/0x200000 = Slide Value in decimal
(0000000100000000 - 0x100000)/0x200000
// convert hex to decimal
(4294967296 - 1048576)/2097152 = 2047,5
B7: Nhưng con số này quá lớn (> 256) vì vậy ta cần phải hạ xuống các Available có giá trị nhỏ hơn cho đến khi bé hơn hoặc bằng 256.
B8: Ta sẽ thử với 0000000001100000 covert to decimal: 17825792 ta được kết quả là 8.
B9: Add vào boot-arg tham số slide=XXX
ở đây ta sẽ có là slide=8
B10: Reboot.
Lưu ý
Ở 1 số máy sẽ nhận được slide value rất nhỏ như slide=-0.379150390625 đối với trưởng hợp này ta sẽ đặt slide=0.
Using DevirtualiseMmio
Đối với 1 số main như Z390 và hầu hết dòng HEDT chúng ta cần lập 1 danh sách trắng. Đó là lúc MmioWhitelist phát huy tác dụng. Với DevirtualiseMmio và ProvideCustomSlide bạn vừa có thể bảo mật lại vừa có thể Boot, 1 combo hoàn hảo.
nhớ enable DevirtualiseMmio
Đối với clover các bản cũng build tương tự (sử dụng bản clover debug) để dump được log file các bạn sẽ dùng hackintool –> log
B2: Bạn sẽ nhận được 1 file log mở nó ra và ta sẽ có: