【问题标题】:Shellcode searching for Bytes String: 0C330408BhShellcode 搜索字节字符串:0C330408Bh
【发布时间】:2012-05-18 07:39:41
【问题描述】:

我正在学习恶意软件(Blackhole Exploit)的工作原理,我从恶意代码中提取了 shellcode。除了搜索字节字符串之外,我想通了一切。谁可以帮我这个事?为什么这个 shellcode(大多数恶意 shellcode)会搜索这个特定的字符串? 搜索代码如下:

mov   eax, 0C330408BH;
inc   esi
cmp   dword ptr [esi], eax
jne   //back to top//

【问题讨论】:

    标签: assembly reverse-engineering malware shellcode malware-detection


    【解决方案1】:

    作为对伊戈尔回答的补充,我建议您阅读这篇文章http://skypher.com/index.php/2010/11/17/bypassing-eaf/。该代码在系统 DLL 中查找特定指令,以使用它们从内存中的任意位置读取或写入数据。所以要使用这段代码,只需将 (address-0x30) 放到 eax 中,然后调用上面的序列。

    【讨论】:

      【解决方案2】:

      如果您获取魔术字节,将它们转换为 little-endian 格式并反汇编,您会得到以下结果:

      8B 40 30    mov     eax, [eax+30h]
      C3          retn
      

      所以,shellcode 正在搜索这个指令序列。我不是 100% 确定,但我认为它用于在内存中查找 kernel32 映像(因为该序列通常发生在那里)。

      【讨论】:

      • 是的,它用于在内存中查找 kernel32 映像。感谢您的澄清。但是我仍然想知道,为什么作者不对其进行硬编码而不是提供字节字符串搜索?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2016-11-30
      相关资源
      最近更新 更多