内核符号表

内核符号表的生成和查找过程 Linux内核中的函数名、全局变量等,都保存在一个全局的符号表中,本文介绍内核符号表的生成及查找过程。 阅读详情
在进行Windows Driver开发调试中,内核符号表是个问题。由于网络不稳定,利用windbg下载不了,在WDK的documentation中查找到下载然后本地运用的地址,贴上来:http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx在里面选择所需要调试系统版本的内核符号表,下载即可。附上原有的方法:将 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 添加到windbg的Sysmbol File path中,并与编译好的驱动的目录放在一起用分号隔开。 Windows内核开发调试环境配置详解分类: Windows内核2011-08-31 16:27 360人阅读 评论(0) 收藏 举报1. 下载和使用WDK应用程序使用开发包SDK,类似的,内核编程使用"Windows Driver Kit",简称WDK。WDK已经自带所有需要的头文件、库、C/C++语言及汇编语言的编译器和链接器如何获取WDK参见http://msdn.microsoft.com/zh-cn/windows/hardware/gg487463安装注意:尽量安装到相对简单路径,避免特殊情况配置路径时麻烦以及可能出现的编译问题选择“完全安装”2.编写第一个内核模块=============================#include VOID DriverUnload(PDRIVER_OBJECT driver){ DbgPrint("first: Our driver is unloading...\r\n");}NTSTATUS DriverEntry (PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){#if DBG _asm int 3#endifDbgPrint("first: Hello Windows kernel!!");driver->DriverUnload = DriverUnload;return STATUS_SUCCESS;}==============================以上是一个最简单的示例程序DriverEntry是每个内核模块的入口,在加载这个模块时被系统进程System调用一次。3.编译该内核模块在first.c相同工程目录下增加两个文件:makefile和sources内容分别为:makefile==============================############################################################################### Copyright (C) Microsoft Corporation 1995# All Rights Reserved.# # MAKEFILE for WDM device driver kit################################################################################ DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source# file to this component. This file merely indirects to the real make file# that is shared by all the driver components of the Windows NT DDK#!if "$(WIN2K_DDKBUILD)" == ""!INCLUDE $(NTMAKEENV)\makefile.def!endif===============================sources===============================# ##############################################################Copyright (c) 2000 Microsoft Corporation##Date:# 19-Jul-2000##Module Name:# sources.##Abstract:# This file specifies the target component being built and the list of# sources files needed to build that component. Also specifies optional# compiler switches and libraries that are unique for the component being# built.## This directory builds# WIA Sample Camera Driver## ############################################################TARGETNAME=firstTARGETTYPE=DRIVERSOURCES=first.c===============================开始->程序->Windows Driver Kits-> WDK XXXX.XXXX ->Build Enviroments ->Windows XP ->Launch Windows XP x86 Checked Build Enviroment编译即得到first.sys4. Vmware创建一个新的虚拟机,并安装WindowsXP SP3系统步骤在此不再详述,可搜索相关帖子记得安装Vmware tools, 以方便虚拟机内外共享文件5. 在虚拟机中下载并安装srvinstwsrvinstw即services installation for windows搜索下载,参考http://www.onlinedown.net/soft/36059.htma. 将刚刚编译生成的first.sys拖入虚拟机b. 安装服务->本地计算机->输入不与已存在服务重名的服务名c. 手动输入sys文件的路径d. 选择“设备驱动”e. 选择启动类型为手动6. 运行与查看输出信息至此内核模块已经可以运行了,可以通过net start first / net stop first来启动和停止该服务内核模块的输出可以在WinDbg中查看;也可以直接用DbgView.exe来查看输出去微软的网站上下载DebugView.exe,参考地址http://technet.microsoft.com/zh-cn/sysinternals/bb896647(en-us).aspx DebugView需要在Capture菜单中将Capture Kernel勾上再次启动/停止服务,就可以在DbgView中看到输出了7. 在调试机(宿主机)安装WinDbgWinDbg下载地址参考:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx8. 设置Windows XP调试执行显示所有文件,不隐藏系统保护的文件后在系统盘下打开并修改boot.ini文件内容通常为:============================[boot loader]timeout=0default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect============================最后一行复制一下,并加上新的参数使之以调试方法启动multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=1152009. 设置VMWare的管道虚拟串口调试机应与被调试机以串口相连,若被调试机是虚拟机,可以在虚拟机上生成一个用管道虚拟的串口打开虚拟机,不要启动->左边Commands栏->Edit virtual machine settings->Hardware->Add在Add Hardware Wizard中,类型选择"Serial Port"选择"Output to named pipe"接下来分别选择"\\.\pipe\com_1"和"This end is the server"以及"The other end is an application."完成即可10. WinDbg的启动参数在调试机上加上如下参数启动WinDbg,使之连接一个管道,并把这个管道当作一个串口来处理windbg.exe -b -k com:port=\\.=pipe\com_1,baud=115200,pipe在控制台执行此命令或者在windbg.exe的快捷方式属性中“目标”中增加上述启动参数先打开虚拟机,启动到调试模式下的Windows,然后启动WinDbg,显示已连接上的信息就表示成功了刚连接上时虚拟机里的系统会被中断,这时要在WinDbg的命令提示符“kd>”后输入“g”并回车11. 设置Windows的内核符号表WindDbg把内核视为一个整体,只要告诉它代码的路径和符号表的路径就可以了调试连接上之后,File->Symbol File Path, 输入符号表位置,指定编译结果所在的objchk_wxp_x86\i386即可还需要指定Windows的内核符号表,在上文的符号表路径中增加一条路径,与之前的用分号隔开:srv*c:\symbols*http://msdl.microsoft.com/download/symbols可打开C:\symbols查看是否将符号表下下来;若没有,多Reload几次12. 调试first源码中#if DBG _asm int 3#endifint 3是一句汇编指令,执行到此程序会中断;若不是调试状态执行则会直接蓝屏加上宏DBG测试以保证只有调试版本该语句才会被编译在虚拟机中运行net start first, 则会看到弹出断点此时可以打开Watch窗口观察和修改变量了本文是根据谭文《Windows内核安全编程》一书,结合自己的实际应用进行整理所得
WIN xp完整符号表,用于xp系统内调试 可将windows xp的完整符号表安装到电脑上,用于调试xp系统。 立即下载

相关推荐

WindowsXP SP3 32位 调试符号表离线包-WindowsXP-KB936929-SP3-x86-symbols-full-ENU.zip

windows XP 32位的调试符号表离线下载包, 现在微软已经不提供下载了,分享给大家. 真实可用。

sp3 win xp 符号表_[转载]Windows XP with SP3 各版本全搞定(附序列

Windows XP Home with Service Pack 3(x86)简体中文家用版 - CD (Chinese-Simplified)zh-hans_windows_xp_home_with_service_pack_3_x86_cd_x14-92408.iso容量:583.45MB发布日期 (UTC):5/1/2008 10:34:35 PMSHA1:f15ef466b1d87b1f...

weixin_42517019的博客 1899

winxp符号文件包完整(symbols)

winxp早期的符号pdb文件 ,对于学习驱动编程有帮助 VC++提示提示no symbols load... 这是Window xp sp3 调试符号(symbols)完整包

xp下WinDbg符号表设置

因为微软已经不再支持联网下载xp的符号表了,所以无法通过 srv *d:\SymbolsLocal *http://msdl.microsoft.com/download/symbols 这样的方法来获取xp符号表已经不行,只能下离线的符号表.(下载系统对应的符号表) WindowsXP-SP3符号表 提取码: gxsf 下载安装完后 .sympath C:\symbols //安装目录...

qq_38184895的博客 2300

操作系统的符号表文件

包含win10、win8、win7各个系统的x64; 主要是为了 ntoskrnl.exe 符号 打包的有以下版本 Build_7_7600 Build_8_9200 Build_10_10240 Build_10_17763 Build_10_17134 Build_10_18362 Build_10_18363 Build_10_16299

RocketMQ源码分析之消息轨迹

文章目录前言一、消息轨迹二、消息轨迹源码分析1、producer端2、consumer端三、消息轨迹中存储的信息1.TraceContext2.TraceBean3.TraceType四、总结 前言   本篇文章将会从以下方面介绍消息轨迹:什么是消息轨迹?如何启用消息轨迹?示例demo、消息轨迹的源码分析和消息轨迹中存储的信息。最后会用一张图来总结消息轨迹的工作原理。 一、消息轨迹 1.什么是消息轨迹? 消息轨迹是用来跟踪记录消息发送、消息消费的轨迹。 2.如何启用消息轨迹? broker端 需要在b

不爱学习的小妞博客 1075

内核符号表问题

问题描述   有两个模块,mod1和mod2。 在mod1中定义了func()函数,并且经EXPORT_SYMBOL()导出。 在mod2中extern func(),调用func()。   编译模块mod2,成功。 加载mod2时,输出: insmod: error inserting 'mod2.ko': -1 Invalid parameter

如丧 660

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

linux内核符号表

这应该是一个很基本的内核概念,和模块、系统调用等一样基础,但牵涉的东西却一点也不窄,一毫也不浅。(但也不深:-) 【内核符号表,kernel symbol table】 Linux的内核是个单内核monolithic,任一函数都可以访问公共数据结构和函数调用。在设计程

zifei123的专栏 4300

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 457

解决com.kingbase8.util.KSQLException: This _connection has been closed.

一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend. java.net.SocketTimeoutException: Read timed out.

qq_38127559的博客 2756

内核符号表和系统调用

转自:http://bbs.ednchina.com/BLOG_ARTICLE_62710.HTM 驱动程序开发过程中涉及kernel symbol table 和syscall两个概念,不知道大家是如何理解的,在此把我对二者理解罗列如下,给大家参考:     内核符号表是linux内核提供给内核代码的一部分引用,所指的“内核代码”包括内核以及驱动程序等运行在内核内存空间的程序,“引用”包

1355

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

weixin_59961223的博客 9451

Windows内核符号表下载

在进行Windows Driver开发调试中,内核符号表是个问题。由于网络不稳定,利用windbg下载不了,在WDK的documentation中查找到下载然后本地运用的地址,贴上来:http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx 在里面选择所需要调试系统版本的内核符号表,下载即可。 附上原有的方法:将 sr

taobao755624068的专栏 1万+

信号检测算法的MATLAB仿真:能量检测、循环平稳检测和匹配滤波检测

根据具体的应用场景和要求,选择合适的信号检测算法可以提高系统的性能和可靠性。在无线电通信中,信号检测是一项重要的任务,它用于检测和识别接收到的信号。在本文中,我们将介绍三种常用的信号检测算法:能量检测、循环平稳检测和匹配滤波检测,并提供相应的MATLAB源代码进行仿真实现。在上述代码中,我们首先设置了能量检测的阈值,然后生成了一个包含1000个服从正态分布的随机信号样本的信号。在上述代码中,我们首先设置了信号模板,然后生成了一个包含信号模板的信号样本。最后,通过比较相关性的最大值与阈值来判断信号是否存在。

PixelLancer的博客 1362

innovus:insert Power Switch失败,报告not covered by a row问题解析

这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1157

linux的内核符号表

比如,内核中的一个函数 do_something() ,在内核符号表中就会有一条记录,记录着 do_something() 这个符号以及它在内存中的具体地址。驱动程序开发人员在调试驱动时,通过内核符号表,可以更清晰地了解驱动与内核交互过程中出现的问题,比如函数调用顺序错误、参数传递错误等。- 性能分析:在对内核进行性能分析时,工具可以利用内核符号表将性能数据(如函数执行时间、调用次数等)与具体的内核函数关联起来,从而帮助开发人员找出性能瓶颈所在的函数,以便进行针对性的优化。

sinat_31608641的博客 511

ABAP 平台下配置 OAuth 2.0 Authorization Code 授权类型的完整指引

本文是面向ABAP管理员和SAP开发者的OAuth 2.0授权码配置实战指南。文章详细介绍了在ABAP平台启用Authorization Code的完整流程,包括前置条件检查(如TLS配置和系统用户准备)、SOAUTH2事务码中各字段配置要点(授权类型启用、Redirect URI设置、授权码有效期等)、Scope分配规则以及验证方法。通过一个销售订单OData接口的实际案例,说明了如何将抽象规范转化为具体配置。最后提供了多种验证方式(事务码测试、端点测试和Postman测试)以及关键配置参数(如授权码有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 296

内核符号表详解

内核符号表详解 http://hi.baidu.com/apollon2010/blog/item/ecbe1d5a3bd2ec8a800a18dc.html 关键词: Kernel Symbol Table、/proc/ksyms、system.map、Oops、LKM 这应该是一个很基本的内核概念,和模块、系统调用等一样基础,但牵涉的东西却一点也不窄,一毫也不浅。(但也不深

anhkgg的专栏 1004

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

内核符号表简介

System.map是内核符号表文件,是由“nm vmlinux”命令产生的。

wuzoujing的专栏 724

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Linux内核符号表

一,什么是符号(Symbols)?    什么是Symbol?  其实就是kernel中的变量(Variable Name)或函数名称(Function Name),  ...

Linux知识积累 1628

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

关于内核符号表

关于内核符号表 http://soft-app.iteye.com/blog/920312 在编写驱动的过程中,常会使用到EXPORT_SYMBOL宏来将定义的函数名导出到内核符号表。以前只是简单的知道如果一个模块中定义的函数要提供给其他模块调用,就必须进行导出。这段时间在编译单个模块的时候,因为没编译成功造成了函数没定义而报警的情况,因此让我有一个机会对内核符号表的

anhkgg的专栏 609
上一篇: MDL(内存描述符表) 详解
下一篇: VMware 虚拟机中添加新硬盘的方法
vbsourcecode
博客等级 码龄17年 19粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值