vendor的第一天

昨天是onsite到微软的第一天,微软这边人真多,大部分都是vendor,很多人都抱着对微软的崇敬之心进来的。我连座位都还没有,暂时和其他7个人安排在一个会议室办公。
下午让我看培训资料,视频的,我耳机都没有,而且给找了一个sharepoint的链接,找了好长时间才找着那个视频资料的位置,都不知道给我们安排任务的人的座位在哪,也没地方问。快到下班时间才开始看,一直看到近9点才回家。
感觉外包的人好没有尊严,被人看不起,也没人管你,还好英语环境不错,只能自己努力了。
以下是一个简单的实现sd的vendor hook的示例代码: ```c #include <linux/kernel.h> #include <linux/module.h> #include <linux/syscalls.h> #define SD_VENDOR_HOOK_NR 333 asmlinkage long (*original_sd_vendor_hook)(int arg1, int arg2, ...); asmlinkage long sd_vendor_hook(int arg1, int arg2, ...) { // 在这里插入自定义的代码,实现对SD卡的操作 // 调用原始的vendor hook函数 return original_sd_vendor_hook(arg1, arg2, ...); } static int __init sd_vendor_hook_init(void) { // 保存原始的vendor hook函数地址 original_sd_vendor_hook = (void *)sys_call_table[SD_VENDOR_HOOK_NR]; // 关闭写保护 write_cr0(read_cr0() & (~0x10000)); // 替换系统调用表中的vendor hook函数 sys_call_table[SD_VENDOR_HOOK_NR] = sd_vendor_hook; // 打开写保护 write_cr0(read_cr0() | 0x10000); printk(KERN_INFO "sd_vendor_hook: module loaded\n"); return 0; } static void __exit sd_vendor_hook_exit(void) { // 关闭写保护 write_cr0(read_cr0() & (~0x10000)); // 恢复系统调用表中的原始vendor hook函数 sys_call_table[SD_VENDOR_HOOK_NR] = original_sd_vendor_hook; // 打开写保护 write_cr0(read_cr0() | 0x10000); printk(KERN_INFO "sd_vendor_hook: module unloaded\n"); } module_init(sd_vendor_hook_init); module_exit(sd_vendor_hook_exit); MODULE_LICENSE("GPL"); ``` 在上述代码中,我们定义了一个SD卡的vendor hook,编号为333,对应的系统调用表中的位置为sys_call_table[333]。在模块初始化时,我们将系统调用表中的原始vendor hook函数保存下来,然后将其替换为我们自定义的sd_vendor_hook函数。在sd_vendor_hook函数中,我们可以插入自定义的代码,实现对SD卡的操作。最后,在模块卸载时,我们将系统调用表中的vendor hook函数恢复为原始的函数。 需要注意的是,上述代码仅是一个简单的示例,实际情况可能会更加复杂。在实际开发中,需要根据具体的需求进行调整和修改。同时,需要谨慎处理对系统的影响,确保不会对系统造成不必要的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值