2019-09-14更新:本文已经在新博客重新整理发布,请各位读者移步。

process explorer有个功能是替换任务管理器,它是怎么实现的呢???

 
windows有个注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,用来给调试器用的。当指定的程序A启动的时候,系统会用debugger项指定的文件启动A。
以taskmgr.exe为例,如下图
当taskmgr.exe启动的时候会用C:\MY\SYSINTERNALS\PROCEXP.EXE启动之,并且procexp.exe启动的时候,会有一个命令行参数(taskmgr.exe的路径)"C:\WINDOWS\SYSTEM32\TASKMGR.EXE",如下图

 注意:上图中的Path是C:\Users\bcn\AppData\Local\Temp\PROCEXP64.exe,这是procexp会根据系统位数自动启动对应位数的程序。
 
bonus:
- 具体过程都可以通过procmon.exe来观察。
- 把下列代码保存成taskmgr.reg,导入到注册表即可,注意debugger后面的值要替换成你机器上的路径
  1. WindowsRegistryEditorVersion5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image FileExecutionOptions\taskmgr.exe]
  3. "Debugger"="\"C:\\MY\\SYSINTERNALS\\PROCEXP.EXE\""
 

[原]procexp替换任务管理器的更多相关文章

  1. [原]排错实战——使用process explorer替换任务管理器

    原Aha总结注册表process explorersysinternalsprocess monitor 前言 一般,我们会使用任务管理器查看系统中有哪些进程正在运行,强制杀掉某个进程.可是系统自带的 ...

  2. [原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?

    原调试debugwindbghangprocess explorer 前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环.你知道怎么快速定位并解决吗? ...

  3. 转载:shell脚本之sed使用----替换、变量、转义字符

    sed替换的基本语法为:----s后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式, ...

  4. mysql replace 替换函数

    UPDATE ecm_goods SET description = replace(description,'原字符串', '替换为') WHERE 条件;

  5. sed 字符串替换

    1. sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义. 2. 单引号” ‘ ’”是没有办法用反 ...

  6. sed替换文件中的字符串

    sed -i 's/原字符串/替换字符串/g' filename

  7. 在SQL SERVER中批量替换字符串

    update [表名] set [字段名]=replace([字段名],'被替换原内容','替换后内容')

  8. Linux中使用sed命令替换字符串小结

    sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的 ...

  9. Linux sed 命令字符串替换使用方法详解

    1. sed替换的基本语法 sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义.2. 单引号” ‘ ’”是没有办法用反斜线” ...

随机推荐

  1. 自定义css

    /** * 重写FrozenUI */ /** * 按钮 */ body { background-color: #F2F2F2; } @media screen and (-webkit-min-d ...

  2. 【LeetCode】课程表

    [问题]现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程.例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...

  3. C++编程学习(三)运算符

    一.运算符 1.求余运算双方必须是整数. 2.编程时一定要注意运算符的优先级!!!例如: int a=5,b=6,c=6,k; 3>4 //结果为假 a<b //结果为真 k= b!=c ...

  4. Mybatis报错——Mapped Statements collection already contains value for

    解决办法: 看看你的mybatis-config.xml <mappers>     <mapper resource="mapper/SeckillDao.xml&quo ...

  5. 大二暑假第六周总结--开始学习Hadoop基础(五)

    简单学习数据仓库HIVE HIVE是一个构建于Hadoop顶端的数据仓库工具 支持大规模数据存储,分析,具有良好的可扩展性 某种程度上可以看做是用户编程接口,本身不存储和处理数据 依赖分布式系统HDF ...

  6. LabVIEW面向对象的ActorFramework(3)

    四.LabVIEW面向对象的编程架构:Actor Framework Actor Framework是一个软件类库,用以支持编写有多个VI独立运行且相互间可通信的应用程序,在该类型应用程序中,每个VI ...

  7. 吴裕雄--天生自然Django框架开发笔记:Django 模型

    Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django 为这些数据库提供了统一的调用API. 可以根据自己业务需求选择不同的数据 ...

  8. 组件state

    一.设计合适的state 1.1 定义: state代表一个组件UI呈现的完整状态 stae代表一个组件UI呈现的最小状态集[所有状态都用于组件UI的变化,没有任何多余的状态] 1.2 state和p ...

  9. c++ 正则表达式查找

    C++ 正则表达式的使用 需求: 字符串含有除[0-9a-z]之外的字符,均返回失败! #include<regex> smatch result; string reg_str = &q ...

  10. c++程序—变量

    #include<iostream> using namespace std; int main() { int a = 10; cout << "a=" ...