精华内容
下载资源
问答
  • windows系统内核

    2014-03-29 23:19:00
    简述windows操作系统内核功能作用
  • windows系统内核编程(vc)windows系统内核编程(vc)windows系统内核编程(vc)windows系统内核编程(vc)
  • 大会讲师系列访谈(3) :Windows系统内核专家-张银奎 大会会务组:张老师是什么时候开始关注Windows系统内核和软件调试排错方面的?为什么选择这些领域研究?张老师能否与广大IT工程师分享一下...



    大会讲师系列访谈(3) :Windows系统内核专家-张银奎



    大会会务组 张老师是什么时候开始关注Windows系统内核和软件调试排错方面的?为什么选择这些领域研究?张老师能否与广大IT工程师分享一下技术道路上的成长心得?

    张银奎 对系统内核的重视大约是在七八年前,也就是在做了五六年的顶层开发之后,我慢慢意识 到底层藏着很多奥秘,有很多影响全局的机关,是牵一发而动全身的关键地方。于是,便逐渐开始探索底层的东西,买了些内核和驱动程序开发方面的书,开始学习 编写驱动程序。现在回过头来看,掌握底层的门槛要比顶层高,因为需要对计算机系统和硬件有比较深入的理解,而这些东西恰恰是不少软件工程师不愿意接触的。

    我对软件调试的热爱要更早一些,应该有十年以上了。可以说,这种热爱是在漫长的征途和激烈的战斗中产生的,就如同是剑客对手中宝剑的感情。在开始学习计算 机的几年,我也曾经满脑子都是迷茫和困惑,但是当我学会用调试器将CPU中断下来慢慢思索和分析后,这些困惑便一个个云开雾散了。软件很复杂,对人类而 言,无形的软件比有形的硬件更加难以驾驭和征服!但一旦进了调试器之后,再桀骜不驯的软件都会变得服服帖帖。我一直把以调试器为核心的调试技术当成是征服 软件世界的银弹。



    大会会务组 据悉,张老师在此次“2009首届IT管理技术大会”上将会奉献两大主题:"解 读Win7的IT管理特性" 和 "系统崩溃转储分析"。张老师为什么选择这两大主题?这两大主题对IT Pro工程师日常的工作实践有哪些帮助?是否能够提前透露一下在这两场演讲中,会有哪些亮点?

    张银奎 如果说Windows Vista是大刀阔斧砍出来的,有很多参差不齐的棱角,来不及修饰打扮,那么Windows 7便是精雕细琢磨出来的,不仅打平了所有棱角,而且还遍施粉黛。如果有些公司是因为Vista的某些棱角还在使用Windows XP,那么他们很可能会直接升级到Windows 7。诸多因素都预示着,Windows 7会很快成为主流的Windows系统。这也正是我选择这个题目的原因。

    “系统崩溃”是IT管理中的一个永恒话题。面对崩溃,很多时候不知原因何在,只能不了了之,因此,有个冷笑话说IT工程师有三件宝:重 试、重启、重装。本演讲旨在引领大家如何根据转储文件来寻找崩溃原因,然后将其排除。没有不崩溃的系统,因此学习如何分析系统崩溃是IT工程师的一项很实 用的本领。



    大会会务组 张老师的技术风格一向偏重于底层探索、偏重于原理解析。这方面对于许多IT Pro工程师属于弱项,有些人认为这些底层原理特别高深,不易学习。请问张老师怎么看待这个问题?对于希望在这方面有所建树的IT Pro工程师,张老师有什么好的建议?

    张银奎 底层是不易入门,但是如果方法对头,而且有决心和毅力,那么便也不是难事。底层的好 处是东西不是很多,而且相对来说比较固定,不像顶层更新换代那么快。因此,想长期走技术路线的朋友比较适合向底层发展,这样容易建立自己的优势。底层的资 料不像顶层那么多,很多时候都需要自己去探索。就我个人的经验来讲,我主要是依靠调试器来学习和探索底层知识的。很多东西,搜索了半天也未必找到确切的说 法,但是使用调试器观察一下,也许花十几分钟就一清二楚了。

    展开全文
  • Linux/Windows系统内核性能调优

    千次阅读 2017-06-09 10:38:32
    做过Linux平台性能测试的童鞋平时可能会遇到如下问题: 1、 TCP端口号不够用导致并发上不去(即与服务器端...我们可以通过优化系统内核参数来解决上述问题,优化步骤如下: Linux 平台 1、 参考附件1中sysctl.co

    做过Linux平台性能测试的童鞋平时可能会遇到如下问题:
    1、 TCP端口号不够用导致并发上不去(即与服务器端建立新连接失败)
    2、 TIME_WAIT状态连接过多导致应用服务器(Nginx、Haproxy、Redis、Tomcat等)性能下降或假死
    等等
    我们可以通过优化系统内核参数来解决上述问题,优化步骤如下:
    Linux 平台
    1、 参考附件1中sysctl.conf文件替换或修改系统中/etc/sysctl.conf
    意义:
    (1) 突破系统最大打开文件描述符数限制(系统级别)
    (2) 提高系统网络负载
    2、 使用命令“sysctl -p /etc/sysctl.conf”使步骤1修改生效
    备注:error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key 解决方法

    modprobe bridge
    lsmod|grep bridge
    • 1
    • 2
    • 1
    • 2

    3、 修改/etc/security/limits.conf,添加如下内容:

    * hard nofile 1024000
    * soft nofile 1024000
    • 1
    • 2
    • 1
    • 2

    意义:突破 进程最大打开文件描述符数限制(用户级别)
    4、 重新登录服务器使其步骤3修改生效
    备注:
    (1) 修改过程中需注意:
    a. 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
    b. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
    c. nofile的soft limit不能超过其hard limit
    d. nofile的hard limit不能超过/proc/sys/fs/nr_open
    (2) /etc/security/limits.conf里面修改文件描述符数量,建议带上账号,*号代表了所有账户!
    1) 新建kdxf运行的账户(一般不使用root账户;现网安全起见一般会禁用root账户直接登录权限,需要从普通账户登录后切换至root)
    2) 关闭Linux系统SELINUX和防火墙(需要重启操作系统,SELINUX安全系统控制过严,可能会影响进程访问操作系统某些资源)
    修改/etc/selinux/config文件中SELINUX=”“为disabled
    关闭防火墙使用命令:

    chkconfig iptables off
    chkconfig ip6tables off
    • 1
    • 2
    • 1
    • 2

    3) 系统字符集编码配置(系统默认utf-8,在需要的时候可以修改系统字符集,需要重启操作系统)
    修改/etc/sysconfig/i18n配置文件中的LANG

    LANG="zh_CN.GB18030"
    • 1
    • 1

    修改/etc/profile,增加两行:

    export LANG=zh_CN.GB18030
    export LC_ALL=zh_CN.GB18030
    • 1
    • 2
    • 1
    • 2

    4) 产生core文件配置(该配置是应用程序在崩溃时能自动产生一个崩溃core文件,有助于开发定位崩溃原因)
    修改/etc/profile,增加一行:

    ulimit -c unlimited
    • 1
    • 1

    修改/etc/sysctl.conf文件,设置

    fs.suid_dumpable = 1
    • 1
    • 1

    运行以下命令使得配置生效

    sysctl -p
    • 1
    • 1

    5) 用户最大进程数配置
    Centos5环境修改/etc/security/limits.conf文件
    Centos6环境修改/etc/security/limits.d/90-nproc.conf文件

    kdxf hard nproc unlimited
    kdxf soft nproc unlimited
    • 1
    • 2
    • 1
    • 2

    注:这里kdxf代表运行应用程序的普通系统账户,请根据实际填写!
    附件1:sysctl.conf

    # Kernel sysctl configuration file for Red Hat Linux
    # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
    # sysctl.conf(5) for more details.
    # Controls IP packet forwarding
    net.ipv4.ip_forward = 0
    # Controls source route verification
    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    # Do not accept source routing
    net.ipv4.conf.default.accept_source_route = 0
    # Controls the System Request debugging functionality of the kernel
    kernel.sysrq = 0
    # Controls whether core dumps will append the PID to the core filename.
    # Useful for debugging multi-threaded applications.
    kernel.core_uses_pid = 1
    # Controls the use of TCP syncookies
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 12
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.tcp_max_syn_backlog = 8192
    # Disable netfilter on bridges.
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0
    # Controls the default maxmimum size of a mesage queue
    kernel.msgmnb = 65536
    # Controls the maximum size of a message, in bytes
    kernel.msgmax = 65536
    # Controls the maximum shared segment size, in bytes
    kernel.shmmax = 68719476736
    # Controls the maximum number of shared memory segments, in pages
    kernel.shmall = 4294967296
    # Disable IPv6
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    # Determines how often to check for stale neighbor entries. 
    net.ipv4.neigh.default.gc_stale_time=120
    # Using arp_announce/arp_ignore to solve the ARP Problem
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.all.arp_announce=2
    vm.swappiness = 0
    net.ipv4.tcp_max_tw_buckets = 50000
    net.ipv4.tcp_max_syn_backlog = 1024
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.conf.lo.arp_announce=2
    # Controls the application is able to bind to not belong to the local network address
    net.ipv4.ip_nonlocal_bind=1
    fs.file-max = 1700000
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    Windows平台
    1、 按附件2内容新建tcp.reg注册表文件并执行
    意义:修改系统连接数限制
    2、 重启系统,使其步骤1修改生效
    附件2:tcp.reg

    Windows Registry Editor Version 5.00
    ;修改TCP并发连接数为最大值
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
    "TcpNumConnections"=dword:00fffffe
    ;修改分页池最大使用值被系统回收
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
    "PoolUsageMaxium"=dword:00000032
    ;修复系统支持最大网络吞吐量
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer]
    "MaxFreeConnections"=dword:00001000
    "MinFreeConnections"=dword:00000100
    展开全文
  • https://blog.csdn.net/weixin_43833642/article/details/106155255 安装完以后需要配置vmware,虚拟机安装windows系统我就不说了吧! 配置Vmware 添加一个串行端口 使用命名管道,按照下图设置好 配置系统调试模式 ...

    WinDbg下载

    推荐下载:https://down.52pojie.cn/Tools/Debuggers/
    在这里插入图片描述

    WinDbg Preview下载

    这个很蛋疼,需要用到win10系统自带的应用商店下载
    在这里插入图片描述
    关于为什么,我去微软官网下载,他说我所在地区不提供下载???
    https://www.microsoft.com/zh-cn/p/windbg-preview/9pgjgd53tn86?rtc=1&activetab=pivot:overviewtab
    在这里插入图片描述
    所以回到应用商店,很不幸,我一直以为没啥用,我装系统的那一刻就给卸载了…
    接下来如果你也和我一样,下面的链接可以帮到你!https://blog.csdn.net/weixin_43833642/article/details/106155255

    安装完以后需要配置vmware,虚拟机安装windows系统我就不说了吧!

    配置Vmware

    添加一个串行端口
    在这里插入图片描述
    使用命名管道,按照下图设置好
    在这里插入图片描述

    配置系统调试模式

    winxp

    下面是xp系统的调试设置,目的就为了启动能够进入调试模式
    在这里插入图片描述

    win7

    注意win7的设置方法有所不同
    在这里插入图片描述

    配置调试器

    Windbg

    需要配置快捷方式的启用参数-b -k com:port=\\.\pepe\com1,pipe
    在这里插入图片描述

    WinDbg Preview

    因为这是新版的调试器,所以直接打开在调试器里面配置
    在这里插入图片描述
    在这里插入图片描述
    配置完成以后会有这个选项
    在这里插入图片描述
    调试内核的时候,首先启动虚拟机后,直接打开调试器即可!

    关于调试符号表的问题

    微软现在已经不提供xp的服务了,所以符号表也找不到的,但是对于win7以上可以直接通过符号表服务器下载,但是需要学科网上,我千辛万苦找到了xp的!https://download.csdn.net/download/weixin_43833642/12427078如果没有积分的小伙伴,可以下方留下邮箱我发给你好吧!

    没有符号表有些调试就下面这样
    在这里插入图片描述
    下面修复符号表就可以了
    首先打开本机的符号表位置(我这个就是上面的链接的文件,可能你win10系统打不开,可以在虚拟机xp上面安装好然后将释放的文件复制到本机的目录即可!)
    在这里插入图片描述

    修复符号表位置

    .sympath F:\winxp\Symbols
    

    在这里插入图片描述
    在这里插入图片描述
    加载符号表

    .reload
    

    在这里插入图片描述
    到现在就基本ok了,如果还是没有办法解决就重启一下虚拟机吧!

    微软官方文档:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-local-kernel-debugging-of-a-single-computer-manually
    可以参考的一些文档:
    https://blog.51cto.com/14317856/2410156
    https://www.cnblogs.com/dreamer-fish/p/3822820.html
    https://blog.csdn.net/luchengtao11/article/details/82379374

    展开全文
  • 根据地址空间、代码权限等WindowsNt将整个操作系统划分为两个不同的部分,即内核模式与用户模式。 谈到这就不得不谈x86CPU的一点小感念了,x86CPU在访问权限中设置了4个等级,Ring0,Ring1,Ring2,Ring3,数值越小...

      根据地址空间、代码权限等WindowsNt将整个操作系统划分为两个不同的部分,即内核模式与用户模式。

            谈到这就不得不谈x86CPU的一点小感念了,x86CPU在访问权限中设置了4个等级,Ring0,Ring1,Ring2,Ring3,数值越小权限越高,按照Intel原本的设想,操作系统工作在Ring0层,驱动程序工作在Ring1,2层,应用程序工作在Ring3层,这样普通的Win32应用程序和驱动程序都无法直接访问到操作系统内核代码,如果Windows真这样的做的话病毒的数量肯定会大大减少,但事实是M$只用了R0和R3,查阅资料发现只是为了和其他处理器相兼容如:Alpha等历史原因。。。。。。比如08年比较流行的Rootkit话题说白了也就是安全专家与“病毒爱好者”们在Ring0这块乐土上面争来争去,有的杀软的大量使用的Ring0HOOK多的吓人,可以用RKU(RootKit Unlocker)自己查下就知道事实了。

            可能很多人想问为什么病毒会出现?。。。简单点就是色即是空,空即是色的数据存储概念,冯诺依曼的代码和数据不分家!代码和数据都能执行导致了大量的堆,栈溢出攻击的产生;还有技术的特点:两面性!

            言规正传,

            1、内核模式模块和用户模块。

                  用户模块:系统进程WinLogon,服务进程Spooler,任何Win32 应用程序,子系统Csrss等。

                  内核模块:Windows的核心程序:(和Linux的那个核心叫什么的~~~我给忘了。。呵呵)NtosKrnl.exe,支持进程和线程的管理(有谁HOOK这个过嘛?),内存管理(MM~哦),中断、异常的分派、安全机制的的管理等;设备的驱动程序:物理、逻辑设备的驱动,文件系统和网络驱动程序;硬件抽象层:HAL.DLL作用就是将以上的模块和具体的硬件平台隔离开。

            2、内核模式驱动程序和用户模式驱动程序

                  用户模式驱动如打印机驱动,虚拟设备驱动等

                  内核模式驱动如文件系统驱动,设备驱动程序,WDM驱动程序。

     

    最近忙考试,有空来补充~       

            

    展开全文
  • 您是否想修改WIN2000系统内核文件呢?(如:NTOSKRNL.EXE或HAL.DLL)如果您修改了NTOSKRNL.EXE后,再复制到SYSTEM32目录下,WIN2000系统就会恢复您所覆盖的系统内核文件。最简单的解决方法就是用引导盘引导后再复制。...
  • 用户进程通过调用这些OS接口,可以部分操作系统内核。 硬件] 设备驱动] 核心层] 管理层] 系统服务界面,中断入口(不公开)] 系统DLL(公开)] ——>API 用户进程没有调用内核函数(特权指令)...
  • 详细讲解了windows XP系统内核文件分析(全)
  • Windows CE内核启动分析  移植或者创建一个BSP,也许需要先熟悉Windows CE的内核启动过程。  目录  基于ARM的Windows CE内核启动分析1  1.startup.s2  2.KernelStart2  2.1 ARMInit()3  2.1.1 OALIntrInit3 ...
  • 这是一本关于 windows 系统编程的书籍
  • windows_XP系统内核文件分析,如果你想创建你自己的批处理文件的话,请仔细查看相关移除信息。
  • 操作系统内核。从本质上来讲,它本身也是一个程序。比如windows的内核 ntoskrnl.exe 就是一个我们平常看到的 PE 文件,它的位置位于 \WINDOWS\system32\ntoskrnl.exe 。很多人误以为windows 操作系统的内核很庞大,...
  • 这一方面是因为Windows内核并不导出这些函数 另一方面,这些函数调用时是需要系统调用框架/自陷框架,而从内核直接调用显然没有这样一个框架 所以这就是为什么在内核中只能通过ZwReadFile一类函数进行系统调用的...
  • 今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子。 首先我们打开WMI测试器,连接ROOT\CIMV2命名空间,输入WQL查询语句SELECT * FROM Win32_OperatingSystem, 然后在查询的结果里我们找到...
  • 遍历Windows系统内核模块

    千次阅读 2011-12-22 13:03:04
    自己做了一个工具需要遍历Windows系统加载的内核模块信息,网上查了一些都是用Zwxxx内核函数来做。后来发现完全没必要...  直接上代码: #include #include #include #include #pragma comment(lib, "psapi...
  • WP 系统内核Windows

    2017-06-09 15:24:00
    自早期 Windows 版本开始,微软的操作系统一直存在一个令人惊奇而又非常酷的彩蛋,即用户无法创建以“con”命名的文件或文件夹。日前,外 媒 Nokiaviews 报道称,国外有用户在 Windows Phone 手机上的 File 文件应用...
  • windows XP系统内核文件分析精简系统很有好处黑客防线 当然, 精简系统是要付出代价的. 不要贪得无厌, 免得系统坏了修不好啊. Windows XP个别 System32 文件 System32 文件夹下个别要移除的文件 我们就要删除另外600...
  • Windows Phone系统将迎来史无前例的大规模升级,Windows Phone系统将采用跟PC和平板电脑专用的Windows 8内核。当然,这个Windows8内核肯定不是一模一样的,但基本上可以确定,Windows8内核将同时应用在PC、平板和...
  • Windows并非一个开放源码的操作系统,但正如上一章所提,Microsoft开放了一份以Windows XP x64和Windows Server 2003 SP1为基础的内核源代码,它可以编译和运行,作为教育科研机构的教学实践和研究的平台使用,称为...
  • 获取Windows 系统内核变量创建时间:2004-08-05文章属性:原创文章提交:tombkeeper (t0mbkeeper_at_hotmail.com)获取Windows 系统内核变量作 者:于旸邮 件:tombkeeper[0x40]nsfocus[0x2e]com tombkeeper...
  • 遍历Windows系统内核模块(源码)

    千次阅读 2017-05-31 17:59:10
    原文链接: ... 自己做了一个工具需要遍历Windows系统加载的内核模块信息,网上查了一些都是用Zwxxx内核函数来做。后来发现完全没必要...  直接上代码: [cpp] view plain copy
  • 用户登录(即使是终端服务)到Windows中时,操作系统为用户建立一个会话,每个子系统会话都有自己的会话空间,属于某一会话的资源将从该会话空间中分配。 通常我们运行的图形界面应用程序运行在默认桌面上。...
  • 摘要:Windows 是采用CPU 时间片轮转多任务分配机制的非实时... 本文分析了Windows 系统的进程调度机制,并设计了一种基于Windows 操作系统内核驱动的多核CPU 线程管理方法,实现了一个基于Windows 内核驱动的线程管理
  • 一、windows 系统结构 ... 当应用程序需要用到系统内核或者内核驱动程序所提供的服务的时候,应用程序通过硬件指令,从用户模式切换到内核模式中,内核完成所请求的服务后,控制权回到用户模 式代码;  内核模式和用
  • Windows研究内核WRK- ...该版本可能还支持在Windows XP x86系统上引导WRK内核,但是由于某些共享结构的差异,当前内核将无法引导。 NTOS内核实现了用于进程,线程,虚拟内存和缓存管理器,I / O管理
  • windows内核

    2015-04-25 18:11:39
    单一内核,一般是将系统的主要核心组件全部在内核实现。例如,内存管理器、进程管理器和I/O管理器等。可以想象,这样设计的内核各组件之间的关联很大,也就是常说的耦合性很大,不利于模块化设计。但优点也显而易见...
  • Win10查询内部版本(内核版本)的方法:1、按下Win+R组合键启动“运行”窗口,输入“msconfig”并确定2、在“系统配置”窗口中点击“工具”标签,选择“关于Windows”一项后点击“启动”按钮3、“关于Windows”窗口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,218
精华内容 5,287
关键字:

windows系统内核