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。
這裏只是相當與發送指令,實際的工作有驅動程序完成。(待續)
(下)
掐指一算,此事必有蹊蹺. 驅動程序的分析看來是安排不動了,它好像集中在對硬件修改,關於這個層次的背景知識我是一點也沒有.如果感興趣可以在網上搜,有一些相關的文章.

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