当前位置:便携吃瓜网 > 热门事件 > 通过映像劫持实现Notepad2替换记事本

通过映像劫持实现Notepad2替换记事本

更新时间:2020-01-27 16:20:29浏览次数:637+次

Notepad2是一个相当优秀的轻量级文本编辑器,开源软件,具有很多特色功能,如代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得的记事本替代方案。

开始使用Notepad2后,我是在Total Commander里设置F3和F4来调用,但在TC之外,就不是太好操作了。直接替换notepad.exe的方式不太喜欢,而且配置文件保存在C盘,不利于便携,于是我就手动更改txt、bat、nsi、ini、reg等格式的文件关联,但总归不方便。

后来无意间发现官方的替代默认记事本的方法,才是豁然开朗、相见恨晚,它是用Image File Execution Options的方式来实现替换,Image File Execution Options就是映像劫持技术,通过此种方式替换记事本,非常地绿色环保。

Image File Execution Options是CreateProcess函数中的一个功能,即在可执行程序运行时,Windows会先检测对应IFEO中的Debugger值,如果存在这个参数的话,就运行这个参数中指定的程序,好像是程序调试之用,具体可以见这里。

Notepad2

大体原理是这样的,修改Image File Execution Options键值后,在有notepad.exe运行请求的时候,就欺骗系统转而运行notepad2.exe:

  1. 创建如下注册表项:HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe,如果无法修改,需要先右键取得权限;
  2. 在notepad.exe注册表项中,创建名为Debugger的字符串值(REG_SZ);
  3. 修改字符串值Debugger的数据为Notepad2.exe的完整路径,最后以 /z参数结尾。
    如:"D:Program FilesNotepad2Notepad2.exe" /z

Notepad2

或直接创建如下注册表文件,然后导入:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe]
"Debugger"=""D:Program FilesNotepad2Notepad2.exe" /z"

  • Notepad2原版:http://www.flos-freeware.ch/notepad2.html
  • Notepad2-mod:http://code.google.com/p/notepad2-mod/
  • Notepad2-mod是我正在使用的修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等,由于不支持多标签,所以我用Notepad2-mod+EmEditor组合。

  • Replacing Windows Notepad with Notepad2:
    http://www.flos-freeware.ch/doc/notepad2-Replacement.html