GNU/Linux >> Belajar Linux >  >> Linux

Cara mendapatkan alamat memori tertentu menggunakan C

Satu masalah yang Anda miliki adalah Anda mendapatkan kembali alamat virtual, bukan alamat fisik tempat memori berada. Lain kali Anda boot, pemetaannya mungkin tidak akan sama.

Ini pasti dapat dilakukan dalam modul kernel di Linux, tetapi menurut saya tidak ada API apa pun di ruang pengguna yang dapat Anda gunakan.

Jika Anda memiliki izin (dan saya menganggap Anda bisa menjadi root pada mesin ini jika Anda mem-boot ulang), maka Anda dapat mengintip /dev/mem untuk melihat tata letak fisik yang sebenarnya. Mungkin Anda harus mencoba mengambil sampel nilai, memulai ulang, dan melihat berapa banyak dari nilai tersebut yang bertahan.


Ada proyek serupa di mana serangan boot dingin didemonstrasikan. Kode sumber tersedia, mungkin Anda bisa mendapatkan inspirasi di sana.

Namun, AFAIR mereka membaca memori tanpa memuat OS terlebih dahulu dan oleh karena itu tidak perlu mengacaukan perlindungan memori OS. Mungkin Anda harus mencoba ini juga untuk menghindari memori ditimpa atau dihapus oleh OS setelah boot.

(Periksa juga videonya di situs, ini cukup mengesankan;)


Linux
  1. Cara Memantau Aktivitas Ethernet Di Linux Menggunakan Arpwatch

  2. Cara Menemukan Teks Tertentu menggunakan GREP di Linux

  3. Bagaimana cara mendapatkan jumlah CPU di Linux menggunakan C?

  1. Dapatkan mtime file tertentu menggunakan Bash?

  2. Dapatkan alamat MAC menggunakan skrip shell

  3. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?

  1. Cara mengubah alamat MAC menggunakan macchanger di Kali Linux

  2. Bagaimana cara menambahkan Alamat IP di Ubuntu 18.04 menggunakan netplan?

  3. Bagaimana cara menambahkan alamat IP di Ubuntu menggunakan perintah?