你有没有过这样的经历?电脑突然变慢,浏览器自动弹出奇怪页面,文件莫名其妙消失。这时候很多人第一反应是装杀毒软件扫一遍,可你想过病毒到底干了啥吗?其实,想搞清楚它做了什么,有个更硬核的办法——单步跟踪病毒行为观察。
什么是单步跟踪?
简单说,就是让程序一步一步执行,每走一步你就看一眼它在干嘛。就像你看电影时按逐帧播放,能看清每一个动作细节。在逆向分析里,这叫“单步调试”,常用工具比如 x64dbg、OllyDbg,它们能让你控制程序的每一条指令。
举个例子,你下载了一个看起来正常的“激活工具.exe”,但运行后桌面图标全没了。你把它拖进调试器,按下 F7(单步进入),程序开始一条条执行。你发现某一步它调用了 CreateRemoteThread,往另一个进程里注入代码——这就是典型的病毒行为。
观察病毒在做什么
单步过程中,重点盯这几个动作:
- 修改注册表启动项(比如写入
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run) - 创建隐藏文件或复制自身到系统目录
- 连接远程服务器(通过
WinHttpOpenRequest等网络 API) - 关闭安全软件(尝试结束
avp.exe或360tray.exe进程)
你可以在调试器里设置断点,比如在 WriteFile 上下断,一旦病毒写文件就会停下来,这时你就能看到它要生成哪个文件、写入什么内容。
来段真实场景模拟
假设你在分析一个勒索病毒样本,单步走到这一行:
call <kernel32.CreateFileW>
push 0x80 ; FILE_ATTRIBUTE_NORMAL
push 1 ; OPEN_EXISTING
push 0
push 0x40000000 ; GENERIC_WRITE
push 0
push 0
push L"C:\Users\Public\Documents\secret.txt"
call <kernel32.CreateFileW>
看到没?它打开了你的文档文件,准备写入数据。再往下走几步,调用加密函数,文件就被锁了。这时候你知道,防御的关键就是在它打开文件前拦截。
别在家随便试
这事儿听起来酷,但风险不小。真病毒可能跳出沙盒、感染主机。想动手得先准备好虚拟机+快照,最好断网操作。建议新手从CTF里的免杀题或教学样本练起,比如一些公开的 benign virus demo。
单步跟踪不是为了当黑客,而是理解攻击逻辑。知道它怎么动,你才明白防火墙为啥要拦某些行为,杀软为啥报那个API调用可疑。下次看到“程序试图自启动”,你就知道那不只是提示,而是它真的在动手脚。