CIH用奇技淫巧shell script寫android手機SU ROOT程式,只要53行程式,source code公開 。
<環境>
Samsung Galaxy A55
Android 14
全部只用shell script寫,共53行!
全世界網路完全沒看到有人用shell script幹SU ROOT,
只有CIH我在幹,
我手機幾套銀行app也不知道手幾已經被我ROOT了。
很古早以前我自幹Android 6~8的shell script SU ROOT,
現在Android 14完全不同以前版本,害我又花不少時間重新自幹。
ROOT方法,CIH自幹、自己想的奇淫怪招。
修改init_boot.img,
ROOT執行過程,完全不寫入資料到手機內部儲存flash,也不寫入外部sd卡。
程式碼是最簡易、最短版本,所以沒做釋放資源、沒做錯誤判斷等,
adb shell進去執行/dev/cih-ssu.sh就可以取得ROOT權限。
init_boot.img我修改/新增以下檔案:
/init.org 系統原始init ELF執行檔
/init CIH寫的53行shell script
/busybox
/policy.cih-ssud CIH修改過後的selinux policy
這個最基本簡易shell script很適合教學用,仔細研究就可以簡易了解如何做SU ROOT。
可以用Samsung官方Odin3燒錄init_boot-cih.tar
或
用fastboot等工具燒init_boot-cih.img
未公開私藏完整版本有su指令提供所有android app呼叫,
並且程式名稱、所有建立資源名稱,全部亂碼取名,嚴格設成只有ROOT才能取讀的權限。
也把所有system properties還原成買到手機第一次開機那時候的properties(沒有bootloader unlock狀態)。
新增selinux policy規則,把自己整個隱藏起來,同時也可以專門對付ROOT權限的程式,即使系統ROOT權限也無法偵測cih-ssu存在。別懷疑!若你懂selinux policy,你就知道這傢伙多變態!
因為暴露su指令提供呼叫,
為了避免銀行app偵測,
所以只有按電源音量鍵組合才瞬間暴露su指令幾秒供呼叫,其餘時間su指令被隱藏無法呼叫,也偵測不到。
以下這個init 53行shell script:
#!/busybox sh
BUSYBOX=/busybox
ROOT=$($BUSYBOX dirname "$0")
ROOT2=$($BUSYBOX dirname $ROOT)/root
function cih-ssud-init()
{
MY_PID=$($BUSYBOX sh -c 'echo $PPID')
$BUSYBOX sed -i "1s/^.*$/#!\/proc\/$MY_PID\/fd\/3 sh/" /init
$BUSYBOX sed -i "s/^\(BUSYBOX=\).*$/\1\/proc\/$MY_PID\/fd\/3/" /init
STR_OFFSET=$($BUSYBOX strings -t d /init.org | $BUSYBOX grep " /system/bin/init$" | $BUSYBOX sed "s/^ *\([^ ]*\).*$/\1/g")
echo -e -n "/proc/$MY_PID/fd/4\x00" | $BUSYBOX dd of=/init.org obs=$STR_OFFSET seek=1 conv=notrunc
exec 3< /busybox
exec 4< /init
exec 5< /policy.cih-ssud
exec $BUSYBOX sleep 999999999
}
if [ "$1" == "selinux_setup" ] ; then
$BUSYBOX cp $ROOT/5 $ROOT2/policy.cih.ssud
$BUSYBOX mount -o bind $ROOT2/policy.cih.ssud /odm/etc/selinux/precompiled_sepolicy
$BUSYBOX cp -a /system/bin/init $ROOT2/
STR_OFFSET=$($BUSYBOX strings -t d /system/bin/init | $BUSYBOX grep " /system/bin/init$" | $BUSYBOX sed "s/^ *\([^ ]*\).*$/\1/g")
echo -e -n "$ROOT/4\x00" | $BUSYBOX dd of=$ROOT2/init obs=$STR_OFFSET seek=1 conv=notrunc
$BUSYBOX mount -o bind $ROOT2/init /system/bin/init
exec /system/bin/init "$@"
elif [ "$1" == "second_stage" ] ; then
echo 0 > /sys/fs/selinux/enforce
$BUSYBOX chcon u:object_r:cihssu_exec:s0 $BUSYBOX
$BUSYBOX umount /system/bin/init
$BUSYBOX sh "$0" cih-ssud &
$BUSYBOX sleep 0.5
echo 1 > /sys/fs/selinux/enforce
exec /system/bin/init "$@"
elif [ "$1" == "cih-ssud" ] ; then
MY_DIR=/dev
$BUSYBOX cat << EOF > "$MY_DIR"/cih-ssu.sh
#!/system/bin/sh
readlink /proc/\$$/fd/0 > $MY_DIR/cih-ssu
sleep 999999999
EOF
$BUSYBOX chmod 555 "$MY_DIR"/cih-ssu.sh
echo -n > "$MY_DIR"/cih-ssu
$BUSYBOX chmod 666 "$MY_DIR"/cih-ssu
while true ; do
$BUSYBOX inotifyd - "$MY_DIR"/cih-ssu::w | $BUSYBOX head -n 0
MY_TTY=$($BUSYBOX cat "$MY_DIR"/cih-ssu)
$BUSYBOX sh <> "$MY_TTY" >&0 2>&1
done
fi
$BUSYBOX mknod /dev/null c 1 3
cih-ssud-init &
$BUSYBOX sleep 0.5
$BUSYBOX mv /init.org /init
exec /init
All reactions:
23 comments
205 shares
Like
Comment
Most relevant
Mason Huang
雖然26年前吃過你的虧,但是你真的很神
51' xlink:href='%23b'/%3e%3cuse fill='black' filter='url(%23c)' xlink:href='%23b'/%3e%3cpath fill='white' d='M12.162 7.338c.176.123.338.245.338.674 0 .43-.229.604-.474.725a.73.73 0 01.089.546c-.077.344-.392.611-.672.69.121.194.159.385.015.62-.185.295-.346.407-1.058.407H7.5c-.988 0-1.5-.546-1.5-1V7.665c0-1.23 1.467-2.275 1.467-3.13L7.361 3.47c-.005-.065.008-.224.058-.27.08-.079.301-.2.635-.2.218 0 .363.041.534.123.581.277.732.978.732 1.542 0 .271-.414 1.083-.47 1.364 0 0 .867-.192 1.879-.199 1.061-.006 1.749.19 1.749.842 0 .261-.219.523-.316.666zM3.6 7h.8a.6.6 0 01.6.6v3.8a.6.6 0 01-.6.6h-.8a.6.6 0 01-.6-.6V7.6a.6.6 0 01.6-.6z'/%3e%3c/g%3e%3c/svg%3e)
' xlink:href='%23b'/%3e%3cuse fill='black' filter='url(%23c)' xlink:href='%23b'/%3e%3cpath fill='url(%23d)' d='M3 8.008C3 10.023 4.006 14 8 14c3.993 0 5-3.977 5-5.992C13 7.849 11.39 7 8 7c-3.39 0-5 .849-5 1.008'/%3e%3cpath fill='url(%23e)' d='M4.541 12.5c.804.995 1.907 1.5 3.469 1.5 1.563 0 2.655-.505 3.459-1.5-.551-.588-1.599-1.5-3.459-1.5s-2.917.912-3.469 1.5'/%3e%3cpath fill='%232A3755' d='M6.213 4.144c.263.188.502.455.41.788-.071.254-.194.369-.422.371-.78.011-1.708.255-2.506.612-.065.029-.197.088-.332.085-.124-.003-.251-.058-.327-.237-.067-.157-.073-.388.276-.598.545-.33 1.257-.48 1.909-.604a7.077 7.077 0 00-1.315-.768c-.427-.194-.38-.457-.323-.6.127-.317.609-.196 1.078.026a9 9 0 011.552.925zm3.577 0a8.953 8.953 0 011.55-.925c.47-.222.95-.343 1.078-.026.057.143.104.406-.323.6a7.029 7.029 0 00-1.313.768c.65.123 1.363.274 1.907.604.349.21.342.44.276.598-.077.18-.203.234-.327.237-.135.003-.267-.056-.332-.085-.797-.357-1.725-.6-2.504-.612-.228-.002-.351-.117-.422-.37-.091-.333.147-.6.41-.788z'/%3e%3c/g%3e%3c/svg%3e)
惟 ゆい
偷偷問了ChatGPT,所以這個只hook init還真的不容易抓到
結論…
See more
18' xlink:href='%23b'/%3e%3cuse fill='black' filter='url(%23c)' xlink:href='%23b'/%3e%3cpath fill='white' d='M12.162 7.338c.176.123.338.245.338.674 0 .43-.229.604-.474.725a.73.73 0 01.089.546c-.077.344-.392.611-.672.69.121.194.159.385.015.62-.185.295-.346.407-1.058.407H7.5c-.988 0-1.5-.546-1.5-1V7.665c0-1.23 1.467-2.275 1.467-3.13L7.361 3.47c-.005-.065.008-.224.058-.27.08-.079.301-.2.635-.2.218 0 .363.041.534.123.581.277.732.978.732 1.542 0 .271-.414 1.083-.47 1.364 0 0 .867-.192 1.879-.199 1.061-.006 1.749.19 1.749.842 0 .261-.219.523-.316.666zM3.6 7h.8a.6.6 0 01.6.6v3.8a.6.6 0 01-.6.6h-.8a.6.6 0 01-.6-.6V7.6a.6.6 0 01.6-.6z'/%3e%3c/g%3e%3c/svg%3e)
Li Kmo
寫了10年的 script,還是看不懂大大的腳本 (膜拜
5' xlink:href='%23b'/%3e%3cuse fill='black' filter='url(%23c)' xlink:href='%23b'/%3e%3cpath fill='url(%23d)' d='M3 8.008C3 10.023 4.006 14 8 14c3.993 0 5-3.977 5-5.992C13 7.849 11.39 7 8 7c-3.39 0-5 .849-5 1.008'/%3e%3cpath fill='url(%23e)' d='M4.541 12.5c.804.995 1.907 1.5 3.469 1.5 1.563 0 2.655-.505 3.459-1.5-.551-.588-1.599-1.5-3.459-1.5s-2.917.912-3.469 1.5'/%3e%3cpath fill='%232A3755' d='M6.213 4.144c.263.188.502.455.41.788-.071.254-.194.369-.422.371-.78.011-1.708.255-2.506.612-.065.029-.197.088-.332.085-.124-.003-.251-.058-.327-.237-.067-.157-.073-.388.276-.598.545-.33 1.257-.48 1.909-.604a7.077 7.077 0 00-1.315-.768c-.427-.194-.38-.457-.323-.6.127-.317.609-.196 1.078.026a9 9 0 011.552.925zm3.577 0a8.953 8.953 0 011.55-.925c.47-.222.95-.343 1.078-.026.057.143.104.406-.323.6a7.029 7.029 0 00-1.313.768c.65.123 1.363.274 1.907.604.349.21.342.44.276.598-.077.18-.203.234-.327.237-.135.003-.267-.056-.332-.085-.797-.357-1.725-.6-2.504-.612-.228-.002-.351-.117-.422-.37-.091-.333.147-.6.41-.788z'/%3e%3c/g%3e%3c/svg%3e)
' xlink:href='%23b'/%3e%3cuse fill='black' filter='url(%23c)' xlink:href='%23b'/%3e%3cpath fill='white' d='M12.162 7.338c.176.123.338.245.338.674 0 .43-.229.604-.474.725a.73.73 0 01.089.546c-.077.344-.392.611-.672.69.121.194.159.385.015.62-.185.295-.346.407-1.058.407H7.5c-.988 0-1.5-.546-1.5-1V7.665c0-1.23 1.467-2.275 1.467-3.13L7.361 3.47c-.005-.065.008-.224.058-.27.08-.079.301-.2.635-.2.218 0 .363.041.534.123.581.277.732.978.732 1.542 0 .271-.414 1.083-.47 1.364 0 0 .867-.192 1.879-.199 1.061-.006 1.749.19 1.749.842 0 .261-.219.523-.316.666zM3.6 7h.8a.6.6 0 01.6.6v3.8a.6.6 0 01-.6.6h-.8a.6.6 0 01-.6-.6V7.6a.6.6 0 01.6-.6z'/%3e%3c/g%3e%3c/svg%3e)
Jeff Chang
所以手機不用解BL了?
View 1 reply
Hung-Wen Hsu
請教..如此修改會不會造成 Knox 0x1 ?
View all 3 replies
Pons Fuji
好猛