所以我一直在看这个线程 -作为个人,我可以在哪里获取恶意软件样本进行分析? 并从Halvar Flake 的博客中获取了Win32.Upatre的二进制样本。
我开始在我的 VM (Win XP SP 3) 中分析文件并在 Olly 中加载恶意软件。我注意到代码看起来是加密的——我搜索了代码中的所有调用并得到了这个:

这似乎不太正常。
所以我继续前进并开始从 EP 踏出希望登陆一些解密程序 -

我将简要解释我从调试这段代码中得出的结论:
1 - 获取传递给这个可执行文件的参数 - 我很确定在此之前的任何代码都是无关紧要的,但我可能是错的。
2 - 调用 GetStartupInfo - 不太清楚为什么
3 - 调用 00401C80 将 EP 作为参数传递
所以我继续跳00401C80过去检查这是怎么回事,发现这段代码对我来说有点像垃圾代码 -

我怀疑是因为有一些指令对我来说似乎不合逻辑,例如:
MOV EAX, 64
CMP EAX,3E8
但我可能错了。
问题是在函数结束后,一个值被复制到ECX然后CALL ECX被调用,最终以内存访问冲突结束:

无论我做什么或如何使用此函数中的标志,我都会遇到访问冲突或代码退出。
SOOOOOOOOO,我的第一个想法是我正在处理某种反调试技术,所以我尝试在 VM 内运行恶意软件并从中拦截一些数据 -

看起来它运行正常,甚至创建了一个 UDP 套接字,没有访问冲突或类似的东西。
我尝试在网上查找有关此病毒的报告,但找不到有关如何绕过此障碍的任何资源。
任何人都知道我应该如何处理这个问题?为什么奥利失败了?这段代码如何知道它正在被调试?它似乎没有为此使用某种 API(例如 IsDebuggerPresent)。
提前感谢大家。
