Itu sepele!
Lihat saja kode sumber kate dan kwrite:
diff --git a/kate/main.cpp b/kwrite/main.cpp
Di baris pertama kode langsung pada awal fungsi "utama", Anda akan menemukan:
/**
* Check whether we are running as root
**/
if (getuid() == 0) // uid = user id = 0 ==> means if you are user 0 (aka root)
{
std::cout << "Executing Kate as root is not possible. To edit files as root use:" << std::endl;
std::cout << "SUDO_EDITOR=kate sudoedit <file>" << std::endl;
return 0;
}
Lumba-lumba tidak berbeda, kecuali ini terjadi di libkdeinit5_dolphin.so.
Jadi menjalankan sebagai root adalah sepele, yang perlu kita lakukan adalah melewatkan if uid = 0 check.
Cara kita melakukan ini, adalah dengan memperbaiki kate, kwrite dan lumba-lumba.
Jadi, hal pertama yang kami lakukan, adalah membuang konten biner ke file teks:
objdump -Crd /usr/bin/kate >> ~/kate.txt
objdump -Crd /usr/bin/kwrite >> ~/kwrite.txt
Sekarang Anda dapat melihat file dengan gedit ~/kate.txt
, dan jika Anda mencari getuid, Anda akan menemukan sesuatu seperti:
2a985: 31 c0 xor %eax,%eax
2a987: 89 bc 24 dc 00 00 00 mov %edi,0xdc(%rsp)
2a98e: e8 ed ce ff ff callq 27880 <getuid@plt>
2a993: 85 c0 test %eax,%eax
2a995: 0f 84 e9 1e 00 00 je 2c884 <__cxa_finalize@plt+0x1f5c>
Sekarang, di sisi kiri, Anda menemukan alamat memori, setelah titik dua (:) Anda akan melihat kode instruksi biner (hex) dan di sebelah kanan itu, Anda melihat pembongkaran kode itu (alias apa artinya) .
Sekarang, Anda lihat, ada yang memanggil getuid, menguji apakah itu nol dan melompat ke pernyataan if, artinya jika nilai pengembalian sama dengan nol (je: jump if equal).
Sekarang kami tidak ingin melompat ke if, jadi kami hanya menghapus omong kosong itu di sana. Tetapi hanya menghapus omong kosong itu akan mengubah alamat dengan 6 byte, membuang semua lompatan relatif dalam program dalam proses, dan sebagai konsekuensinya, program. Jadi alih-alih, Anda hanya mengganti seluruh panjang pernyataan lompatan dengan instruksi NOP (kependekan dari N o Op eration), alias 0x90 dalam kode instruksi / hex.
Jadi, Anda perlu mengganti setiap byte melompat di sana dengan 0x90 jadi di mana sebelumnya Anda miliki
0f 84 e9 1e 00 00
Anda akan memiliki
90 90 90 90 90 90
Ini bisa dilakukan hanya dengan hex-editor.
Jadi kami memasang satu:
sudo apt-get install wxhexeditor
Sekarang di hex editor, Anda mencari 0f 84 e9 1e 00 00, dan menggantinya dengan 90 90 90 90 90 90. Jika hanya ada satu kejadian 0f 84 e9 1e 00 00, dan ada, maka ini adalah hal yang sederhana. Ubah saja byte dalam hex menjadi 90 90 90 90 90 90 dan simpan. Jadi. Kate atau kwrite sekarang akan terbuka, apakah Anda root atau tidak.
jika Anda melakukan hal yang sama dengan lumba-lumba, Anda akan menyadari objdump -Crd /usr/bin/dolhin
menghasilkan pembongkaran yang sangat singkat.
jika Anda menjalankan ldd /usr/bin/dolphin
, Anda akan melihat lumba-lumba memuat perpustakaan bersama libkdeinit5_dolphin.so
linux-vdso.so.1 (0x00007ffc2fdf0000) libkdeinit5_dolphin.so => /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so (0x00007fb54e76c000)
Jadi, Anda melakukan objdump di libkdeinit5_dolphin.so:
objdump -Crd /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so >> ~/libkdeinit5_dolphin.txt
Sekarang buka objdump: gedit ~/libkdeinit5_dolphin.txt
Cari getuid, dan Anda akan melihat bahwa salah satu hasil pencarian adalah:
41f95: 31 c0 xor %eax,%eax
41f97: 89 7c 24 5c mov %edi,0x5c(%rsp)
41f9b: e8 50 b6 ff ff callq 3d5f0 <getuid@plt>
41fa0: 85 c0 test %eax,%eax
41fa2: 0f 84 58 1a 00 00 je 43a00 <kdemain@@Base+0x1a90>
41fa8: 48 8d 84 24 a0 00 00 lea 0xa0(%rsp),%rax
Ini bagus, Anda tahu, lebih banyak omong kosong seperti di kate dan kwrite.
Sekarang buka /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so
di hex-editor Anda, cari 0f 84 58 1a 00 00
dan ganti dengan 90 90 90 90 90 90
.
Hit save, dan selesai.
Dolphin sekarang berjalan sebagai root.
Catatan: Ide bagus untuk membuat salinan cadangan dari file yang Anda modifikasi, kalau-kalau Anda gagal.
Juga, Anda bisa mengunduh sumber kate, kwrite, dan lumba-lumba, menghapus omong kosong itu dari kode sumber, kompilasi dan instal. Tapi karena sistem cmake bodoh kehilangan beberapa template crap crap untuk beberapa omong kosong bodoh seperti ikon, mungkin karena cmake repo yang disediakan terlalu lama, ini tidak berfungsi. Sayang sekali, akan terlalu sederhana jika itu hanya berhasil, bukan.
Tapi hanya menambal executable seperti yang saya jelaskan lebih cepat, jadi siapa yang peduli.
Anda tahu, ini tidak langsung, tetapi sepele.
PS:
Sekarang, kapan pun kate, kwrite atau lumba-lumba diperbarui melalui apt, perubahan Anda akan ditimpa. Anda harus mendaftar ulang. Saya akan meninggalkan otomatisasi proses tambalan di tangan Anda yang lebih dari cukup, dan bahasa pemrograman Anda untuk joice;)
Bisakah ini dilakukan di bash murni?
Juga, jika Anda ingin menambal vlc untuk omong kosong yang sama, Anda dapat melakukannya dengan sed:
sed -i 's/geteuid/getppid/' /usr/bin/vlc
Cukup masukkan pernyataan sed itu ke dalam skrip, sehingga Anda dapat mendaftar ulang, jika perlu jika Anda sedang luring dan tidak memiliki akses internet.
Selamat melakukan peretasan - dengan kate, kwrite dan lumba-lumba - sebagai root - sambil menonton / mendengarkan sesuatu di vlc.
PS2:
Pemeriksaan root jelek berjalan seperti Dodo di KDE v19.04.
Siapa bilang n evolusi adalah hal yang buruk.
Untuk maju - Ceria!