您的位置:首页 > 运维架构 > Linux

[笔记] 移动的Linux——Android随心root配置与找回遗忘的wifi密码

2013-05-03 01:09 323 查看
这几天数着回家的日子,也便思考着如何摆弄HTC。

网上成片的刷机的帖子,ROOT的帖子,倦了,找找这些东西的原理吧。

于是便有了这篇小文,为以后需时用。

一开始以为ROOT需要多少的技术,要找到小缝将su文件写到ROM里。后来发现,将手机关机,同时按Vol-和power键启动类似BIOS的小系统,进入Recovery后就已经是root权限了。安装了Android SDK之后,命令行里adb shell进入,就能随意浏览文件夹,修改文件的属性等。那些ROOT软件的原理可以解释为:

1)从Linux的代码里将su抓出来,修改少许,然后使用Google Android Native SDK包里的arm-linux-andriodeabi-gcc编译成可执行文件

2)用adb push命令将su的可执行文件放入/sbin或/system/bin中(adb push c:\linux_src\compiled\su /sbin)。

3)使用Linux的chmod命令使su在用户模式下可执行(chmod 755 /sbin/su)。

这样只要再写一个apk应用和su互交就可以了,平时的时候用terminal执行su也能得到root权限。

我们同样可以作一个自己的命令:

1)写一个C程序hello.c:

#include <stdio.h>

int main(int argc, char** argv) {
  printf("Hello Android Platform!\n");
  return 0;
}


2)使用Android Native SDK编译:

ndkdir\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-gcc -I"ndkdir\platforms\android-8\arch-arm\usr\include" -L"ndkdir\platforms\android-8\arch-arm\usr\lib" -o hello hello.c

这里的ndkdir就是你的Android Native SDK的安装路径,而android-8则是Android 2.2的包,目前最新的应该是android-14吧。

如果编译提示找不到crtbegin_dynamic.o或crtend_android.o,就干脆直接将ndkdir\platforms\android-8\arch-arm\usr\lib里的这两个文件复制到hello.c的文件夹下。

3)使用adb push:

adb push compileddir/hello /sbin/hello

4)使用adb shell:

adb shell

mount /system

cd /sbin

ls -l hello

chmod 755 hello

ls -l hello

exit

然后 adb reboot 重启手机

5)等手机重新启动到正常界面,我们可以打开terminal软件,然后尝试输入hello,Hello Android Platform就会输出在屏幕上了。同样的,在apk程序中也可以直接使用shell条用hello。目前busybox很强大,安装以后,连insmod都有了,可以自己写Android的Linux驱动进行内核编程了。自己配置自己的Android吧~

另外还发现了一个小应用:

当你不记得你家wifi的密码时,这个也能帮上忙——

启动Recovery,然后在windows命令行里:

adb shell

mount /data

(等待一段时间)

cd /data/misc/wifi

ls -l wpa*

cat wpa_supplicant.conf > /sdcard/wifi_password.txt

这样就把你手机以前连过的所有wifi的密码找回来啦,放进了sd卡里的wifi_password.txt中。

同样的原理,你可以在这种模式下轻松的删除不想要的自带应用:

adb shell

cd /system/app

ls *Facebook*

rm *Facebook*

忘了说一声,整个过程都是将手机和电脑USB连接上的,如果你有能力,可以写个wifi的驱动在recovery里直接加载,这样连USB都可以省了吧,世界是给懒人准备的~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: