///////////////////////////////////////////////////////////////////////////////////////////////
文件名称:病毒“wuauclt.exe”所加未知壳的手脱方法
目标程序:病毒样本
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版
编写作者:Coderui
编写时间:2008年10月14日(更新)
///////////////////////////////////////////////////////////////////////////////////////////////
---------------------------------------------------------------------------------------------
前言:
本想努力工作来着,好把日程进度再往前赶赶,
病毒“wuauclt.exe”所加未知壳的手脱方法
。但很不幸,一不小心发现了个比较诱人的壳,看来今天又要把大部分时间压在它的身上了。其实这个病毒的其它变种样本我在很早以前就见过多次,也分析过多次了。只是它所加的壳实在是变态得很,以至于我一直都没能把它完全征服,所以在每次分析它的时候都只能是取其运行后的内存映像来进行研究。
使用PEID对样本进行扫描,显示出的壳名为“PEtite 2.1 -> Ian Luck”。我脱完壳后在网上搜索了一下,发现有好多该壳的脱文,并且内容都是寥寥几句,一个ESP定律就把壳给搞定了。仔细看了一下,怎么感觉完全不是同一个壳呢?也不知道问题出在哪里了。“PEtite 2.1 -> Ian Luck”这个壳以前我没接触过,具体什么样子我也不知道,这里就把它当未知壳来讲吧。
该壳应该是一个加密壳,里边有3处异常(通向光明的关键,其中的后2处异常加了暗桩手段)、输入表加密、代码动态解密执行,有N多迷惑性的花指令代码、压缩算法、反动态跟踪调试等技术。如果想脱掉这个壳的话,别说刚入门的新手了,就算是有经验的人都未必能很快的搞定。
今天仔细分析了下,用了2个小时左右,终于把这个壳的框架思路分析清楚了。下面准备分两部分来讲述:第一部分-手脱方法、第二部分-难点分析。
---------------------------------------------------------------------------------------------
第一部分:手脱方法:
说明:([F2]:下软断点、[F4]:执行到当前代码处、[F7]:单步步入、[F8]:单步步过、[F9]:运行。)
(01):使用“Ollydbg”打开病毒主程序,设置“Ollydbg”为“不忽略任何异常”,然后[F9]运行。
(02):“Ollydbg”提示“访问违规”,然后停在代码“MOV BYTE PTR DS:[EDI],AL”处(代码如下)。
131492178807MOV BYTE PTR DS:[EDI],AL; 访问违规
1314921981EC D8BA0000SUB ESP,0BAD8
1314921F8D8D 887FFFFFLEA ECX,DWORD PTR SS:[EBP+FFFF7F88]
13149225834D EC FFOR DWORD PTR SS:[EBP-14],FFFFFFFF
13149229894D 90MOV DWORD PTR SS:[EBP-70],ECX
1314922C8D8D 887FFFFFLEA ECX,DWORD PTR SS:[EBP+FFFF7F88]
13149232894D 8CMOV DWORD PTR SS:[EBP-74],ECX
131492358B4D 08MOV ECX,DWORD PTR SS:[EBP+8]
131492388D45 88LEA EAX,DWORD PTR SS:[EBP-78]
1314923B53PUSH EBX
(03):使用[Shift + F9]来忽略异常,“Ollydbg”停在下一个异常代码“POP EDX”处,并提示“单步异常”(代码如下)。
131438F15APOP EDX; 单步异常
131438F264:8F05 0000000>POP DWORD PTR FS:[0]
131438F958POP EAX
131438FA6A 00PUSH 0
131438FC53PUSH EBX
131438FD33DBXOR EBX,EBX
131438FF68 4C030000PUSH 34C
131439048B0C24MOV ECX,DWORD PTR SS:[ESP]
131439070FBAE3 00BT EBX,0
1314390B72 16JB SHORT virus.13143923
(04):在代码“POP DWORD PTR FS:[0]”处下软断点(如地址“131438F2”),
电脑资料
《病毒“wuauclt.exe”所加未知壳的手脱方法》()。使用[Shift + F9]来忽略异常,停在代码“POP DWORD PTR FS:[0]”处(代码如下)。131438F15APOP EDX; 断点
131438F264:8F05 0000000>POP DWORD PTR FS:[0]
131438F958POP EAX
131438FA6A 00PUSH 0
131438FC53PUSH EBX
131438FD33DBXOR EBX,EBX
131438FF68 4C030000PUSH 34C
131439048B0C24MOV ECX,DWORD PTR SS:[ESP]
131439070FBAE3 00BT EBX,0
1314390B72 16JB SHORT virus.13143923
(05):向下翻阅代码,你会找到具有明显特征的如下代码,然后在代码“CALL 74DBD43D”处下断点(如地址“13143BB2”),[F9]运行(代码如下)。
13143BA859POP ECX
13143BA95EPOP ESI
13143BAAFDSTD
13143BAB33C0XOR EAX,EAX
13143BADB9 65030000MOV ECX,365
13143BB2E8 8698C761CALL 74DBD43D; 下断点
13143BB70000ADD BYTE PTR DS:[EAX],AL
13143BB90000ADD BYTE PTR DS:[EAX],AL
13143BBB0000ADD BYTE PTR DS:[EAX],AL
13143BBD0000ADD BYTE PTR DS:[EAX],AL
13143BBF0000ADD BYTE PTR DS:[EAX],AL
13143BC10000ADD BYTE PTR DS:[EAX],AL
.
.
13143FF50000ADD BYTE PTR DS:[EAX],AL
13143FF70000ADD BYTE PTR DS:[EAX],AL
13143FF90000&