当前位置: 首页 > news >正文

北京网站排名优化软件专业开发小程序公司

北京网站排名优化软件,专业开发小程序公司,大连好的网站建设公司,叙述网站建设的流程第一种 第一种是借助于kprobe机制#xff0c;通过kprobe机制中会调用kallsyms_lookup_name函数并设置到kprobe结构体中返回的原理找到我们需要的函数地址 内核中调用逻辑简化代码如下#xff1a; int register_kprobe(struct kprobe *p) {int ret;struct kprobe *old_p;st…第一种 第一种是借助于kprobe机制通过kprobe机制中会调用kallsyms_lookup_name函数并设置到kprobe结构体中返回的原理找到我们需要的函数地址 内核中调用逻辑简化代码如下 int register_kprobe(struct kprobe *p) {int ret;struct kprobe *old_p;struct module *probed_mod;kprobe_opcode_t *addr;/* Adjust probe address from symbol */addr kprobe_addr(p);if (IS_ERR(addr))return PTR_ERR(addr);p-addr addr;。。。。。。 } static kprobe_opcode_t *kprobe_addr(struct kprobe *p) {return _kprobe_addr(p-addr, p-symbol_name, p-offset); } static kprobe_opcode_t *_kprobe_addr(kprobe_opcode_t *addr,const char *symbol_name, unsigned int offset) {if ((symbol_name addr) || (!symbol_name !addr))goto invalid;if (symbol_name) {addr kprobe_lookup_name(symbol_name, offset);if (!addr)return ERR_PTR(-ENOENT);}。。。。。 } kprobe_opcode_t * __weak kprobe_lookup_name(const char *name,unsigned int __unused) {return ((kprobe_opcode_t *)(kallsyms_lookup_name(name))); } 如上逻辑可以看到其实就是调用的kallsyms_lookup_name函数来获取地址存到我们的addr中 第二种 第二种方式是借助于内核调试器提供的能力间接调用kallsyms_lookup_name函数获取地址 在内核中有这样一个函数并且这个函数是导出的 extern int kdbgetsymval(const char *, kdb_symtab_t *);int kdbgetsymval(const char *symname, kdb_symtab_t *symtab) {if (KDB_DEBUG(AR))kdb_printf(kdbgetsymval: symname%s, symtab%px\n, symname,symtab);memset(symtab, 0, sizeof(*symtab));symtab-sym_start kallsyms_lookup_name(symname);if (symtab-sym_start) {if (KDB_DEBUG(AR))kdb_printf(kdbgetsymval: returns 1, symtab-sym_start0x%lx\n,symtab-sym_start);return 1;}if (KDB_DEBUG(AR))kdb_printf(kdbgetsymval: returns 0\n);return 0; } EXPORT_SYMBOL(kdbgetsymval);代码示例 /************************************************************************* File Name: test.c Author: Mail: Created Time: 2024年06月09日 星期日 11时34分43秒 两种获取内核未导出函数地址方法************************************************************************/#include linux/init.h #include linux/module.h #include linux/kallsyms.h #include linux/kprobes.h #include linux/cdev.hMODULE_LICENSE(GPL); MODULE_AUTHOR(ch); typedef struct __ksymtab {unsigned long value; /* Address of symbol */const char *mod_name; /* Module containing symbol or* kernel */unsigned long mod_start;unsigned long mod_end;const char *sec_name; /* Section containing symbol */unsigned long sec_start;unsigned long sec_end;const char *sym_name; /* Full symbol name, including* any version */unsigned long sym_start;unsigned long sym_end;} kdb_symtab_t; extern int kdbgetsymval(const char *, kdb_symtab_t *); struct char_device_struct {struct char_device_struct *next;unsigned int major;unsigned int baseminor;int minorct;char name[64];struct cdev *cdev; /* will die */ };int noop_pre(struct kprobe* p, struct pt_regs* regs) {return 0;} static struct kprobe kp {.symbol_name kallsyms_lookup_name, }; unsigned long (*kallsyms_lookup_name_func)(const char* name) NULL; static int __init m_init(void) {kp.pre_handler noop_pre;int ret register_kprobe(kp);if (ret ! 0) {printk(find failed\n);return ret;}kallsyms_lookup_name_func (void*)kp.addr;printk(lookup func addr is %p\n, kp.addr);unregister_kprobe(kp);unsigned long chrdevs_addr kallsyms_lookup_name_func(chrdevs);printk(chardevs addr is 0x%p\n, chrdevs_addr);kdb_symtab_t val;kdbgetsymval(chrdevs, val);printk(second method get chrdevs addr is 0x%p\n, val.sym_start);return 0; }static void __exit m_exit(void) {}module_init(m_init); module_exit(m_exit);
http://www.pierceye.com/news/285861/

相关文章:

  • wordpress建淘宝客网站吗网站建设与维护技术浅谈论文
  • 网站建设 技术方案网站建设的指导书
  • ps网站首页怎么做google 浏览器
  • 网站建设数据库软件制作公司宣传片哪家好
  • 高端建站模版大兴模版网站建设哪家好
  • 帝国cms怎样做网站迁移西安网站设计公司排名
  • 网站建设三折页做僾网站
  • 长沙的网站建设公司上海做网站的哪家好
  • 网站开发做什么网站建设银行北京冬奥会纪念币发行时间
  • 企业怎么建设网站网站建设与管理计划
  • 域名怎么制作网站旅游线路设计方案模板
  • 专门做mmd的网站wordpress 免费商城
  • 简洁大气国内企业网站房产网签备案是什么意思
  • 海东企业网站建设公司佛山搜索引擎推广服务好
  • 建设电子商务网站策划书开发网站开发
  • 创建个人网站的流程沈阳德泰诺网站建设
  • 网站备案 接口开一个网站多少钱
  • 郑州网站制作公司哪家好公司网页怎么设计
  • 如何做好企业网站建设工作公众微信网站建设
  • 企业网站开发时间动效网站怎么做
  • 网站编辑是网页制作么表格制作excel下载
  • 网站开发 发表文章网站开发和移动开发
  • 建设银行网站的目的是什么意思展览策划
  • 没有网站如何做落地页wordpress 用户 购物
  • 谁做网站收录网站建设项目竞争性招标文件
  • 做淘客要有好的网站wordpress move
  • 做企业网站有前途吗网站的栏目设置
  • 免费购物网站专门教人做点心的网站
  • 佛山网站设计哪里好seo关于网站搜索排名关键词的标准评定
  • 化工行业网站模板网站上怎么做动画广告视频