2012-04-17 48 views
1

我試圖寫入CR0在Linux中,但我不斷得到一個seg故障。這用於組裝i386:x86_64。有沒有辦法解決這個問題?Seg錯誤寫入到CR0

波紋是設置seg故障的代碼的一部分。

mov eax,0xffffffff  ;system call number (sys_write) 
mov cr0,eax 
+2

你想做什麼?從評論看來,你似乎正在嘗試執行系統調用,但「0xffffffff」絕對不是「sys_write」的編號。 – Job 2012-04-17 07:36:42

+0

我寫信給eax 0xfffffff,因爲你不能對mem操作執行mem操作。您至少需要一個註冊表。儘管cr0是一個註冊表,但我只使用eax作爲安全手段。基本上我想關閉用戶空間的保護模式。然而,從我最近了解到,CPU的這些日子相當先進,並將代碼置於受保護的段中,如果該段沒有該特權0,則不允許它混淆某些寄存器。 – 2012-04-18 07:49:26

回答

6

CR0是一個受保護的寄存器。它不能在用戶空間的linux應用程序中修改。