Bu eski bir soru, ama son zamanlarda bunu kendim merak ettim. Yeniden derleme gerektirmeyen bir yöntem buldum adbd
, ancak gerektiriyor su
(Chainfire SuperSu 2.45 kullanıyorum).
Aslında bunun böyle bir şeyde bash
bulunduğu /system/bin/bash
ve su
olduğu varsayılmaktadır /system/xbin/su
:
adb shell
(etkileşimli bir kabuk kullanın. Bu işlemi bir astar olarak çağırmak, bir sorun varsa ADB'nin çalışmayı durdurmasına neden olabilir)
mount -o remount,rw /system
mv /system/bin/sh /system/bin/sh.bak
echo -e '#!/system/bin/bash\n/system/xbin/su -mm -l -s /system/xbin/bash' > /system/bin/sh
Yollarınızın farklı olabileceğini unutmayın; which bash
ve which su
emin olmak için kullanın .
chmod 777 /system/bin/sh
- Eğer çıkmadan önce kabuğunu test edin:
/system/bin/sh
. Eğer bir hata alırsanız, yedeği geri yükleyerek hata veya geri alma düzeltmek: cp /system/bin/sh.bak /system/bin/sh
.
- İsteğe bağlı olarak yeniden montaj / sistem; çoğu cihaz bunu otomatik olarak yapar:
mount -o remount,ro /system
Ve işiniz bitti.
BASH to SH sembolizasyonu işe yaramaz çünkü bash bu şekilde çağrıldığında SH'yi öykünür.
Bununla birlikte, strace'ye bakıldığında, sembolik bashrc
bir BASH 'sh --login' olarak adlandırıldığında bir zaman gibi görünüyor . Bu, SH'nin çağrılma şeklinin sabit kodlandığı gibi, kodlama yoluyla kabukları "zincirle doldurmak" için akla yatkın olarak kullanılabilir adbd
.
Bir sorun varsa ve kaldırıldı (veya taşındı) /system/bin/sh
ADB sorunu düzeltmek için vermek için bir kabuk alışkanlık. Bu durumda, birkaç seçeneğiniz vardır:
adbd
/System/bin/sh.bak dosyasını tekrar / system / bin / sh dizinine kopyalamak için (CWM veya TWRP gibi) bir kurtarma işlemine yeniden başlayın ve buna bir adb kabuğu açın.
- Yedeklemeyi kopyalamak için adb'yi kullanın:
adb root; adb remount; adb shell; adb pull /system/bin/sh.bak; adb push sh.bak /system/bin/sh
Bunun tüm cihazlarda çalışmadığını unutmayın; bazıları adb'nin bu şekilde yeniden monte edilmesine / sistem rw'sine izin vermez.
- Farklı bir kabuk çalıştıracak şekilde ayarlanabilen bir terminal emülatörü kullanın; birkaçının önce / system / bin / sh komutunu deneyeceğini ve kapanmaya zorlayacağını unutmayın.
sh
, vanilya CM7 (kaynaktan inşa edilmiş) beni düşürüyorbash
. Hangi yapıyı kullanıyorsunuz?