修改android手机内核
2018-10-14 16:32:27 killsmm0 阅读数 298

1. 编译内核

~/orange_pi_zero_plus/Android/lichee/linux-3.10$ ./build.sh -p sun50iw2p1_android -k linux-3.10

2.修改内核配置

~/orange_pi_zero_plus/Android/lichee/linux-3.10$ make ARCH=arm64 menuconfig

3.再次编译内核

~/orange_pi_zero_plus/Android/lichee$ ./build.sh

4.编译android

~/orange_pi_zero_plus/Android/android$ source build/envsetup.sh

~/orange_pi_zero_plus/Android/android$lunch  (选择目标)

~/orange_pi_zero_plus/Android/android$extract-bsp

if 首次编译android 

         ~/orange_pi_zero_plus/Android/android$make

5. 打包

~/orange_pi_zero_plus/Android/android$pack

 

2017-10-31 17:20:00 weixin_34072159 阅读数 103

环境:
linux
工具:
abooting: https://github.com/gerasiov/abootimg-android

参考:
https://bbs.pediy.com/thread-207538.htm

1.提取zImage 文件

root@hammerhead:/ # ls -l /dev/block/platform/msm_sdcc.1/by-name/ |grep boot   
lrwxrwxrwx root     root              1970-07-08 20:42 aboot -> /dev/block/mmcblk0p6
lrwxrwxrwx root     root              1970-07-08 20:42 abootb -> /dev/block/mmcblk0p11
lrwxrwxrwx root     root              1970-07-08 20:42 boot -> /dev/block/mmcblk0p19
root@hammerhead:/ # dd if=/dev/block/mmcblk0p19 of=/data/data/tmp/boot.img

在主机上对boot.img 进行解压

➜  kernel adb pull /data/local/tmp/boot.img .
/data/local/tmp/boot.img: 1 file pulled. 6.4 MB/s (23068672 bytes in 3.459s)
➜  kernel ls
abootimg  abootimg-android  boot.img
➜  kernel 
➜  kernel 
➜  kernel 
➜  kernel ll
total 22560
-rwxrwxrwx 1 z3r0 z3r0    29680 Oct 31 15:32 abootimg
drwxrwxrwx 1 z3r0 z3r0      448 Oct 31 15:32 abootimg-android
-rwxrwxrwx 1 z3r0 z3r0 23068672 Oct 31 15:38 boot.img
➜  kernel abootimg-android/
➜  kernel ./abootimg -x boot.img 
writing boot image config in bootimg.cfg
extracting kernel in zImage
extracting ramdisk in initrd.img
➜  kernel ls
abootimg  abootimg-android  boot.img  bootimg.cfg  initrd.img  zImage
➜  kernel 

关闭符号屏蔽

root@hammerhead:/ # echo 0 > /proc/sys/kernel/kptr_restrict                    
[1] + Done (1)             cat /proc/kallsyms |
      Done                 less 
root@hammerhead:/ #                 

找到这两函数的地址

root@hammerhead:/ # cat /proc/kallsyms |grep proc_pid_status                   
c02ba04c T proc_pid_status
root@hammerhead:/ # cat /proc/kallsyms |grep __task_pid_nr_ns                  
c01b0884 T __task_pid_nr_ns

将zImage 复制为z.gz ,并且再用010editor 编辑,

3201115-dcb7229f06ebda0e.png
4.png

去掉1f 88 08 00 前面的数据后,再用gunzip 解压得到 z

3201115-3c679d36c5f33d91.png
![Uploading 6_233342.png . . .]
  1. ida 修改
    使用ida 打开z, 处理器选择ARM little ,并设置
3201115-0556f7f944137151.png
3.png

在找proc_pid_status 函数时,ida 无法识别为代码,所以p 来自定义函数,之后通过__task_pid_nr_ns 函数的地址来交叉引用找到位置或者通过字符串

3201115-71b5abff5440c59d.png
7.png

找到引用的位置,修改其机器码

3201115-77950a91cbe20003.png
8.png

mov r0,#0 的机器码为 00 00 a0 e3
mov R10, #0 的机器码 为00 a0 a0 e3

3201115-ec0242090e37d305.png
9.png

修改后

3201115-a9c60e8565b17e4a.png
10.png
  1. 重新写入
    1.将z 重新压缩gzip -n -f -9 z
  2. 将z.gz 覆盖原zImage
    z.gz 替换前和替换后
total 114409
-rwxrwxrwx 1 z3r0 z3r0    29680 Oct 31 15:32 abootimg
drwxrwxrwx 1 z3r0 z3r0     4096 Oct 31 15:32 abootimg-android
-rwxrwxrwx 1 z3r0 z3r0 23068672 Oct 31 15:38 boot.img
-rwxrwxrwx 1 z3r0 z3r0      252 Oct 31 15:38 bootimg.cfg
-rwxrwxrwx 1 z3r0 z3r0   500854 Oct 31 15:38 initrd.img
-rwxrwxrwx 1 z3r0 z3r0  6992288 Oct 31 15:57 z.gz
-rwxrwxrwx 1 z3r0 z3r0 78136638 Oct 31 16:38 z.idb
-rwxrwxrwx 1 z3r0 z3r0  8405280 Oct 31 15:38 zImage
➜  kernel ll
total 113045
-rwxrwxrwx 1 z3r0 lifenad   29680 Oct 31 15:32 abootimg
drwxrwxrwx 1 z3r0 z3r0     4096 Oct 31 15:32 abootimg-android
-rwxrwxrwx 1 z3r0 z3r0 23068672 Oct 31 15:38 boot.img
-rwxrwxrwx 1 z3r0 z3r0      252 Oct 31 15:38 bootimg.cfg
-rwxrwxrwx 1 z3r0 z3r0   500854 Oct 31 15:38 initrd.img
-rwxrwxrwx 1 z3r0 z3r0  6992288 Oct 31 15:57 z.gz
-rwxrwxrwx 1 z3r0 z3r0 78136638 Oct 31 16:38 z.idb
-rwxrwxrwx 1 z3r0 z3r0  8405280 Oct 31 16:49 zImage

注意这里zImage 的大小要和原来的一样,不然刷回去会变转

重新生成boot.img

abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img

使用fastboot 重新刷boot.img

2013-05-20 21:15:00 weixin_34088598 阅读数 50

在本文中,我们主要介绍内核修改的内容,自我感觉有个不错的建议和大家分享下

    这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库

    执行:apt-get install netpbm

    对于Android系统最开始表现logo是在内核当中,所以首先我们要修改内核中的logo.

    .内核中相关修改

    编译linux内核logo制造脚本mklogo.sh,内容如下:

#!/bin/sh
pngtopnm logo.png > linuxlogo.pnm
pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
pnmtoplainpnm linuxlogo224.pnm > logo_linux_gzsd_clut224.ppm
rm linuxlogo.pnm linuxlogo224.pnm

    将你选好的logo转换成png格式,定名为logo.png并与mklogo.sh放在统一路径下.
执行./mklogo.sh最后生成logo_linux_gzsd_clut224.ppm

    这个定名可以自由变动,但是必须遵守logo_yourname_type这类定名方法,这里仅罗列*_clut224.ppm的定名方法,其它格式的定名方法请查看drivers/video/logo/Makefile文件.

    将logo_linux_gzsd_clut224.ppm文件放到内核源码下的drivers/video/logo/目录下

    进入drivers/video/logo目录

    1.修改Kconfig文件

    增加:在endif #LOGO之前

    

config LOGO_LINUX_GZSD
        bool "gzsd logo"
        default n

    2.修改Makefile文件

    增加:

    obj-$(CONFIG_LOGO_LINUX_GZSD)       += logo_linux_gzsd_clut224.o

    3.logo.c中函数fb_find_logo中的 if (depth >= 8)上面增加:

    #ifdef CONFIG_LOGO_LINUX_GZSD
                logo = &logo_linux_gzsd_clut224;
#endif

    4.内核源码目录下的include/linux/linux_logo.h中增加

    extern const struct linux_logo logo_linux_gzsd_clut224;

    每日一道理
毅力,是千里大堤一沙一石的凝聚,一点点地累积,才有前不见头后不见尾的壮丽;毅力,是春蚕吐丝一缕一缕的环绕,一丝丝地坚持,才有破茧而出重见光明的辉煌; 毅力,是远航的船的帆,有了帆,船才可以到达成功的彼岸。

    5.在终端执行make menuconfig上.

    Device Drivers  ---> Graphics support  --->Bootup logo  --->gzsd logo

    保存退出后编译即可

    6.禁止LCD控制台的光标

    在内核源码目录下drivers/video/console/fbcon.c中

    注释掉函数:fb_flashcursor和fbcon_cursor内的所有内容

    7.让logo中屏幕旁边表现:

    drivers/video/fbmem.c

    修改函数fb_do_show_logo如下

static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
			    int rotate, unsigned int num)
{
	unsigned int x;
	int xoff,yoff; 

	/**for central logo**/ 
	xoff = (info->var.xres - num * (fb_logo.logo->width + 8))>>1; //得到旁边x坐标
	yoff = (info->var.yres - num * (fb_logo.logo->height + 8))>>1; //得到旁边y坐标

	if (rotate == FB_ROTATE_UR) {
		for (x = 0; x < num && image->dx + image->width <= info->var.xres; x++) {
			image->dx = xoff; 
			image->dy = yoff; 
			info->fbops->fb_imageblit(info, image);
			image->dx += image->width + 8;
		}
	} 
	else if (rotate == FB_ROTATE_UD) {
		for (x = 0; x < num && image->dx >= 0; x++) {
			info->fbops->fb_imageblit(info, image);
			image->dx -= image->width + 8;
		}
	} 
	else if (rotate == FB_ROTATE_CW) {
		for (x = 0; x < num && image->dy + image->height <= info->var.yres; x++) {
			info->fbops->fb_imageblit(info, image);
			image->dy += image->height + 8;
		}
	} 
	else if (rotate == FB_ROTATE_CCW) {
		for (x = 0; x < num && image->dy >= 0; x++) {
		info->fbops->fb_imageblit(info, image);
		image->dy -= image->height + 8;
		}
	}
}

    重新编译即可

    二.android启动后闪动画面修改:

    路径:文件系统源码下的frameworks/base/core/res/assets/images/下有两张图片

    android-logo-mask.png

    android-logo-shine.png

    修改这两张图片即可,注意请将本来的保存。

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

2018-11-15 09:51:43 Cricket_7 阅读数 205

一,手机文件权限修改

1,文件权限概念(Android 手机上文件权限是采用 Linux ugo权限模式) 

ugo Linux

-rwxrw-r--

rwxrwxrwx

r 读 w 写 x 执行

第1位:文件类型(d 目录,- 普通文件,l 链接文件)

第2-4位:所属用户权限,用u(user)表示

第5-7位:所属组权限,用g(group)表示

第8-10位:其他用户权限,用o(other)表示

 

用数字来表示权限 r=4,w=2,x=1,-=0

rw- = 4 + 2 = 6

rwx = 4 + 2 + 1 = 7

r-x = 4 + 1 = 5

2,修改权限

1,确保你的手机是root 成功的测试机

2,sdk 配置没有问题。配置了tools,和Platform-tools

3,在sdk目录找到platform-tools 按住shift命令窗口打开

 

没有更多推荐了,返回首页