Equation样本中nls_933w.dll模块简单分析(上)

这是一个dll文件,它的任务是对导出的5个函数提供支持。这些导出函数被调用程序使用完成相应的‘使命’,主要在两个方面,1注册表,2释放驱动文件并加载,与之通信。
1,突破口
将文件用Ida打开后,习惯性的去查看导入表来对可能发生的行为作一个大概的猜测。大致有注册表,权限(privilege),文件,资源,通信(与驱动程序,DeviceIoControl)。看来看去都是一个样,用过这些api的大概能马上在脑海里描绘出它的‘样子’吧!等等,好像每个操作的数据(实参)都是经过解密之后再使用的。找到解密函数 ,用快捷键 X ,可以看到迎面而来的是一大面交叉调用,总共差不多35次了,看了数据之后对它的操作由进一步了解。下面是该解密函数的C代码和得到的一些信息:

void __stdcall Decryption(char* a1,char* a2)
{
//a1用来接收解密后的数据,a2待解密的数据
  char v3; // cl@1
  unsigned int v4; // edi@1
  unsigned int i; // edx@1

  v3 = *(a2 + 3);
  v4 = *(WORD *)(a2 + 1);//数据的第2个字节,是有效数据长度(以字节为单位) 
  for ( i = 1; i <= v4; ++i )
  {
    *(char *)(a1 + i - 1) = *(char *)(a2 + i + 3) ^ v3 ^ i ^ 0x47;
    v3 += *(char *)(a2 + i + 3);
  }
}
(按照调用的顺序)
(1)\Device\WIN32M
(2)3.0.0.0
(3)IsWow64Process
(4)3.0.1
(5)Multi-User Win32 Driver
(6)WIN32M
(7)\Registry\Machine\System\CurrentControlSet\Services\WIN32M
(8)NtUnloadDriver
(9)\??\
(10).sys
(11)kernel32
(12)NtDll.dll
(13)SeLoadDriverPrivilege
(14)SYSTEM\CurrentControlSet\Services
(15)DispalyName
(16)ErrorControl
(17)Start
(18)Type
(19)ImagePath
(20)hdc
(21)SCSIAdapter
(22)PCI\
(23)CC_
(24)VEN_
(25)DEV_
(26)\\.Gloable\WIN32M
(27)3.0.0.0
(28)WDC WD
(29)SAMSUNG
(30)WDC WD
(31)ST
(32)Maxtor STM
(33)Maxtor
(34)Maxtor STM

2,与释放的驱动程序通信
在dll的反汇编代码里一共有6种控制码(IoControlCode):
0x870021c0 0x870021c4 0x870021c8 80x70021cc 0x870021d0 0x870021d4。
这里只是相当与发送指令,实际的工作有驱动程序完成。(待续)
(下)
掐指一算,此事必有蹊跷. 驱动程序的分析看来是安排不动了,它好像集中在对硬件修改,关于这个层次的背景知识我是一点也没有.如果感兴趣可以在网上搜,有一些相关的文章.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章