載入linux kernel 的安全機制分析

2021-06-18 21:34:32 字數 917 閱讀 2525

system/core/mkbootimg/mkbootimg.c

首先,一般bootimage 的結構如下

打包的時候會計算kernel,ramdisk分割槽資料的sha值,並把其存放在boot header

(注意:計算的時候不包含boot header本身)

sha_init(&ctx);

sha_update(&ctx, kernel_data, hdr.kernel_size);

sha_update(&ctx, &hdr.kernel_size, sizeof(hdr.kernel_size));

sha_update(&ctx, ramdisk_data, hdr.ramdisk_size);

sha_update(&ctx, &hdr.ramdisk_size, sizeof(hdr.ramdisk_size));

sha_update(&ctx, second_data, hdr.second_size);

sha_update(&ctx, &hdr.second_size, sizeof(hdr.second_size));

sha = sha_final(&ctx);

memcpy(hdr.id, sha,

sha_digest_size > sizeof(hdr.id) ? sizeof(hdr.id) : sha_digest_size);

當然不同的廠家,為了安全是可以修改如下的字串:

void sha_init(sha_ctx* ctx)

當從prelaoder 或者 uboot等載入kernel的時候,就會去重新計算sha值,

從而保證bootimage,被別人因為某些目的而直接修改bin檔案。(如根檔案系統的某些配置或屬性檔案)

Android 安卓Glide載入圓角

寫好了乙個工具類 要在自己專案中build.gradle加入以下內容 匯入glide 可以自己設定圓角度數,也可以自動設定,如第5行,我寫了20 public class glidetool suppresslint checkresult public static void glideradiu...

關於linux kernel的死法

最近在除錯linux核心驅動,宕機無數次。關於linux的死法也有些心得。1 嘎嘣兒脆型。特點 啥提示也沒有,說宕就宕,var log messages 裡邊啥提示資訊也沒有。原因 八成是你自己沒玩兒好,在kernel裡邊記憶體越界了。還有兩成是超過了linux核心棧8k的限制。2 半死不活型。特點...

Linux kernel 關機的底層操作

linux關機相關命令如 halt,shutdown,poweroff和reboot 其實它們底層都是呼叫名為reboot的system call,其具體實現是在核心目錄的kernel sys.c中的 syscall define4 reboot,int,magic1,int,magic2,unsi...