运行一个程序,看看它在系统中发生了什么变化

运行一个程序,看看它在系统中发生了什么变化

我有一个闭源 VPN 程序,它搞乱了我的系统(Fedora Linux):我运行它,它改变了一些东西,VPN 工作了,但是当我终止连接时,我的系统处于脏状态,网络被破坏(特别是 DNS,即使/etc/resolv.conf已正确恢复)。

我想跟踪该程序(如果我没记错的话,这是一个带有 GUI 的 Java 程序)在我的系统上所做的更改。这至少应该包括文件系统和网络配置。

我考虑过使用 strace,但输出可能太混乱和低级,无法让我理解发生了什么。我还发现FSSB这在 fs 级别可能很好,但我仍然需要了解网络配置的情况,并且我不知道该使用什么工具。

我可以使用哪些工具?

答案1

我建议的一件事是在前后运行“ip ro”、“ip ad”和“iptables-save”并进行比较。即使 resolv.conf 恢复,DNS 也会变坏,这表明 VPN 的 UDP 流量可能已损坏;也许它试图在 UDP 处于活动状态时阻止它,但忘记正确恢复它,或者类似的情况。

我还发现在 /etc 中运行“git init”,保存所有内容(“git add .; git commit -m start”)很有用,然后 - 在进行一些可疑的更改后,使用“git diff”检查它可能是什么。您可能会惊讶地发现某些事情发生了意想不到的变化。我还会在 /etc 中寻找指向 /etc 之外的符号链接;那里的更改可能不会显示在 git-diff 中。

最后,strace 实际上是非常可定制的。例如,“strace -f -e trace=%file -o strace.log my-command [args]”仅获取文件操作。在程序完成后,您可以通过仅检查使用 open() 系统调用的某些变体的行来进一步对输出进行子集化。

相关内容