-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] 允許在不關閉 kprobes 下使用手動集成 #1048
Comments
这两个是自相矛盾的,建议你查明开启 kprobes 后不工作的原因;如果你开 kprobe + kernelsu 能正常开机,那么说明你 kprobe 功能正常;我们只有在开了 kprobe 系统 bootloop 的情况下才推荐关闭 kprobe。 #887 (comment) 表明,kprobe 的符号不对,可能是 do_execve_common 符号有所不同,你可以换个试试。 |
你可以在 |
剛試了 kernelsu + kprobes,情況和 #887 一樣,看不到 kprobes 錯誤但抓到了 permission error:
(關 selinux 和 嘗試在 termux 調用 su 會出現 在 issue 裏搜了一遍,發現可能是内核有安全機制的原因,但在 logcat.txt 和 dmesg.txt 裏看不出來 這是剛開機什麽都沒做導出的日誌: 這是嘗試調用 su 後的日誌: |
还是我上面说的问题,do_execveat_common kprobe 失败;如果你不想调查原因,以下是一个简单的处理方法: 结合 kprobe 和手动修改源码,但只修改 fs/exec.c 里面 ksu_handle_execve 那部分,其他用 kprobe。 |
感謝建議! 在加了
我在 liveboot 的 dmesg 裡找到了相關的錯誤(從 kernelsu 的 bug tarball 裡找不到,應該是被覆蓋了),印證了您的說法:
我在
還有一個問題,如果要更換符號的話是要從這裡改嗎: Lines 473 to 482 in 1f1d4d4
(Edit) 改成這樣沒用: static struct kprobe execve_kp = {
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
.symbol_name = "do_execveat_common",
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)
.symbol_name = "do_execve_file",
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)
.symbol_name = "__do_execve_file",
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
.symbol_name = "do_execveat_common",
#endif
.pre_handler = execve_handler_pre,
}; |
在用了 #668 的 workaround 之後正常了,與 #668 不同的是這次 kprobe 沒報錯
|
没报错其他正常吗? |
除了上述有些 app 看不到 |
Is your feature request related to a problem? Please describe.
背景是這樣的,我的內核在開啟
kprobes
下 kernelsu 不能正常工作(情況和 #887 一樣, manager 顯示工作中但 root 和模塊都用不了,dmesg 裡能看到KernelSU: prctl reply error
)。 如果關掉kprobes
只用手動集成會導致 bootloop(可能有些內核模塊依賴於kprobes
?)我現在在用的方法是
CONFIG_KPROBES=y
外加手動集成。雖說解決了 kernelsu 不能工作的問題,但ksud
裡一些依賴於CONFIG_KPROBES
判斷的功能部分仍然不能正常工作(雖然CONFIG_KPROBES=y
,但 kernelsu 實際上是工作於手動集成下),比如 safe mode input hook 的停止邏輯:這導致了一些奇奇怪怪的問題,比如在調整音量的時候 safe mode 突然就開了(
stop_input_hook
只處理了 kprobe 的部分,導致開機後 hook 沒有停止),雖然影響不大但有點煩。日誌(如果需要的話):KernelSU_bugreport_2023-10-16_15_32.tar.gz
Describe the solution you'd like.
在 kconfig 裡添加一個獨立的選項控制集成方式(像
CONFIG_KSU_KPROBES, depends_on CONFIG_KPROBES
)Describe alternatives you've considered.
如果有需要的話可用
sed
刪除所有 if statement,只留下 else 的部分Additional context
vili
)The text was updated successfully, but these errors were encountered: