• 从Android源码修改cpu信息


    cpuinfo

    网上的文章都是怎么查看/proc/cpuinfo,一直以为这种东西没法改呢,我还是太天真了。/proc/cpuinfo是个文件,只读,想直接写肯定不行的。今天研究了一下,发现它的输出逻辑在:
    kernel/[品牌]/[机型代号]/arch/[cpu架构]/kernel/setup.c,修改c_show(struct seq_file *m, void *v)方法,用seq_printf,想输出啥都可以。特地下Linux内核源码下来看,不止Android,其他Linux路径都是类似的。

    cpu频率

    平常我们通过shell命令查看cpu频率的办法,都是读取/sys/devices/system/cpu/cpu0/cpufreq下的cpuinfo_min_freqcpuinfo_max_freq,它们分别代表cpu的最小频率和最大频率,这个几个文件也是可以修改的,修改后并不是你的cpu就会变快,而是可以骗过某些软件,修改方法如下:在kernel/[品牌]/[型号]/drivers/cpufreq/cpufreq.c找到

    show_one(cpuinfo_min_freq, cpuinfo.min_freq);
    show_one(cpuinfo_max_freq, cpuinfo.max_freq);
    

    把它们注释掉,修改成以下两行

    show_cpu_min_freq(cpuinfo_min_freq, cpuinfo.min_freq);
    show_cpu_max_freq(cpuinfo_max_freq,cpuinfo.max_freq);
    

    上面的show_one其实是一个宏定义,那我们也要创建相应的宏。

    #define show_cpu_min_freq(file_name, object)			
    static ssize_t show_##file_name				
    (struct cpufreq_policy *policy, char *buf)		
    {							
    	return sprintf(buf, "%u
    ", 307200);	
    }
    
    #define show_cpu_max_freq(file_name, object)			
    static ssize_t show_##file_name				
    (struct cpufreq_policy *policy, char *buf)		
    {							
    	return sprintf(buf, "%u
    ", 1593600);	
    }
    

    上面的307200和1593600就是我们要修改成的最小频率和最大频率。

    测试

    在Android,修改后执行make bootimage编译内核源码,编译成功后会生成boot.img。让手机进fastboot模式,在源码目录执行fastboot flash boot $OUT/boot.img就把boot.img刷入手机了,重启手机就可以测试。

  • 相关阅读:
    sqlmap使用教程-安装教程
    SQL注入攻击总结
    mysql 创建函数失败解决办法,版本 8.0.26
    【VUE3.0体验】axios引入以及property的替代
    异化的房价周期
    vue使用websoket
    spring依赖注入方式及springBoot如何解决循环依赖
    范型的正确使用
    mysql GROUP_CONCAT使用
    Mybatis-MySQL 中使用IFNUL
  • 原文地址:https://www.cnblogs.com/luoyesiqiu/p/9412803.html
Copyright © 2020-2023  润新知