编译Nexus5 4.4反反调试内核记录

/ 0评 / 0

首先确认已经同步过4.4的Android系统源码,因为需要用到源码中的交叉编译工具

在Android系统源码中新建一个文件夹用来同步内核源码,如mkdir kernel

这里推荐使用清华的源

cd kernel

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git

同步好后查看一下分支

git branch -a

然后找到n5对应的内核分支

git checkout remotes/origin/android-msm-hammerhead-3.4-kitkat-mr1

检出文件后开始修改文件

要修改的文件: 

kernel/msm/fs/proc/base.c 

kernel/msm/fs/proc/array.c 

要修改对以下文件的写入 

Status,stat

修改点: 

1. base.c 285行改成如下: 

else { 

           if (strstr(symname, "trace")) { 

                return sprintf(buffer, "%s", "sys_epoll_wait"); 

           } 

           return sprintf(buffer, "%s", symname); 

      } 

2. array.c134行改成如下: 

      static const char * const task_state_array[] = { 

           "R (running)",        /*    0 */ 

           "S (sleeping)",       /*    1 */ 

           "D (disk sleep)",     /*    2 */ 

           "S (sleeping)",       /*    4 */ 

           "S (sleeping)", /*     8 */ 

           "Z (zombie)",         /*  16 */ 

           "X (dead)",           /*  32 */ 

           "x (dead)",           /*  64 */ 

           "K (wakekill)",       /* 128 */ 

           "W (waking)",         /* 256 */ 

      };  

array.c187行改成如下: 

      "Gid:\t%d\t%d\t%d\t%d\n", 

                get_task_state(p), 

                task_tgid_nr_ns(p, ns), 

                pid_nr_ns(pid, ns), 

                ppid, /*tpid*/0, 

                cred->uid, cred->euid, cred->suid, cred->fsuid, 

                cred->gid, cred->egid, cred->sgid, cred->fsgid); 

开始编译,把以下命令写入一个sh文件chmod 777后直接执行即可

export PATH='/home/qtfreet/442/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin':$PATH

export ARCH=arm

export SUBARCH=arm

export CROSS_COMPILE=arm-eabi-

make hammerhead_defconfig

make -j4

注意上面的/home/qtfreet/442/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin根据自己的源码中对应的目录进行调整

编译过程中可能会出现错误,比如我出现的

在编译嵌入式Linux内核时出现了以下错误提示:

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.

if (!defined(@val)) {
改为if (!@val) {

后,编译成功。

编译完内核后,内核生成的路径为:kernel/msm/arch/arm/boot目录下的zImage-dtb文件(nexus 5是这个文件,nexus 4是zImage文件,请注意别弄错了),把该文件复制到源码下的device/lge/hammerhead-kernel夹下(注意:nexus 4则为mako-kernel文件夹),覆盖掉同名文件,然后重新按上面步骤编译一次安卓源码(这时候编译很快完成)即可

刷机过程可以参考这篇文章

http://blog.csdn.net/bingghost/article/details/53308694

参考文章:

http://mp.weixin.qq.com/s/JSJSAtAi2DlLNMh3t2NxgQ

发表评论

电子邮件地址不会被公开。 必填项已用*标注