摘要
最近在逆向一个程序时,通过命令行启动参数定位到它使用了一个配置文件。但是该配置文件我去实际目录下面查看内容时,发现并没有。
猜测是程序在启动读取了配置信息后,接着将原文件删除了。因此我就想借助ProcessMonitor验证我这个想法。
正文
Process Monitor(ProcMon)是微软 Sysinternals 套件中的一款高级实时系统监控工具,可捕获并展示 Windows 的文件系统、注册表、进程/线程活动,还能查看网络连接(较有限)。
本文主要用它来监测程序创建文件、删除文件的时机。由于我还需要在 Windows7 上面运行,因此要下载旧版 3.8.4 。参考windows 7 - Sysinternals Process Monitor device driver: procedure could not be found - Super User
编写一个go程序,创建文件5秒后,将文件删除掉。
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
| package main
import (
"fmt"
"os"
"time"
)
func main() {
const filename = "test.txt"
// 1. 创建文件并关闭句柄
file, err := os.Create(filename)
if err != nil {
fmt.Printf("创建文件失败: %v\n", err)
return
}
file.Close() // ✅ 关键:关闭句柄
fmt.Printf("已创建 %s\n", filename)
// 2. 等待 5 秒
time.Sleep(5 * time.Second)
// 3. 删除文件
if err := os.Remove(filename); err != nil {
fmt.Printf("删除文件失败: %v\n", err)
return
}
fmt.Printf("已删除 %s\n", filename)
}
|
编译为main.exe
1
| go build -o main.exe main.go
|
启动ProcMon,然后运行main.exe,配置过滤器,就能抓取到创建和删除的时机。