executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
re-tracing系统调用/函数调用跟踪:strace/ltrace/dtruss。 触发词:strace、跟踪系统调用、ltrace、API监控
Independent GitHub snapshot · Automated classification · Original documentation governs
参考 [[re-analyze/platform-tips]] 最高原则——跟踪即动态执行,默认在沙箱内进行,网络隔离。
apt install stracednf install stracepacman -S stracestrace -V-f 跟子进程、-o 写文件、-e trace= 过滤、-s 200 放大字符串显示(默认 32 字节)、-x 非 ASCII 转十六进制、-y/-yy 把 fd 解析为路径、-c 汇总统计、-p attach——速查与组合见 [[commands]]apt install ltracednf install ltracepacman -S ltraceltrace -Vsudo dtruss -c ls / 2>&1 | head 输出去重调用统计choco install sysinternals(或官网下载)strace -f 全进程树跟踪:
strace -f -o trace.log ./target args
-f 必须加:跟随 fork/vfork/clone 子进程——不加会漏掉全部子进程行为。
-tt 加微秒时间戳,-T 加每调用耗时(网络等待/慢调用线索);-s 200 放大字符串显示(默认 32 字节,路径/参数看不全时必加)。
已运行的目标用 attach(看不到 attach 之前的调用):
sudo strace -f -p <pid> -o attach.log # attach 需要与目标同权限
strace -f -c ./target # 退出时打印系统调用计数/耗时汇总(热点定位)
过滤(-e trace=...):
strace -f -e trace=network,file ./target # 只看网络与文件
strace -f -e trace=write,read ./target # 只看读写
strace -f -e trace=execve,fork,clone ./target # 只看进程行为
strace -f -e trace=!futex ./target # 排除噪声(futex 高频)
过滤规则先白名单后黑名单,控制输出体积(见坑 2)。
ltrace 库调用:
ltrace -f -o lib.log ./target
ltrace -e malloc+free ./target # 只跟踪指定库函数
ltrace -l /path/libfoo.so ./target # 跟踪 dlopen 动态加载的库
ltrace -f -S ./target # 库调用 + 系统调用一起跟踪
ltrace -f -c ./target # 退出时库调用汇总
动态解析的 API(dlsym 拿到的函数)不会出现在静态 IAT 里,但会出现在 ltrace 输出中——与 [[re-imports]] 互补。
输出保存为证据:
strace -f -tt -o evidence/trace-$(date +%s).log ./target
# 或
ltrace -f -o evidence/libcall.log ./target
每条记录带 pid 与时间戳;分析完成后在笔记中引用文件路径与哈希(样本与日志各存 sha256,见 [[re-triage]])。
Windows 用 APIMonitor/ProcMon:
比系统调用级更深一层——指令粒度执行流:
-plugin 加载指令级 trace 插件(insn 粒度、call/ret 路径、guest 代码块事件);用途——脱壳后真实路径还原、反混淆(静态混淆无法隐藏实际执行)perf record -e intel_pt)→ 解码(perf script 或第三方解析)→ 分支流还原;用途——无插桩开销的完整执行路径-f 是标配-e trace= 白名单,必要时 -o 写文件而非终端ptrace 状态检测/LD_PRELOAD 痕迹暴露 strace/ltrace——与 [[re-anti-analysis]] 的反调试绕过组合使用dlopen 后加载的库函数要加 -l 显式指定