文件名称:手动脱壳“ASProtect 1.2x - 1.3x”
目标程序:病毒样本
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版
编写作者:Coderui
编写时间:2009年01月05日
联系方式:coderui@163.com
作者博客:http://hi.baidu.com/coderui
---------------------------------------------------------------------------------------------
介绍:
“ASProtect”加密壳是一款商业壳,由于版本和其中的设置众多,所以加壳后的样本总是五花八门,都不好脱。最近准备利用工作之余把“ASProtect”加密壳的所有版本都试着脱一下(从低版本开始),顺便记点笔记以备后期查阅时使用!下文如有表达错误的地方还请多多指正,谢谢!
---------------------------------------------------------------------------------------------
OD设置:(OD设置为不忽略任何异常。[F2]:下软断点、[F4]:执行到当前代码处、[F7]:单步步入、[F8]单步步过、[F9]运行。)
请按照注解顺序观看(00)-(01)-(02)…(99),不然很容易混乱。
; (00) 病毒样本载入后,OD提示错误“不知如何继续,因为内存地址 E072C4B2 不可读. 请尝试更改 EIP 或忽略程序异常.”
; (01) 我们使用[Shift+F9]忽略异常。
10034000 > 68 01500610 PUSH virus.10065001 ; (02) OD停在这里,我们[F9]运行。
10034005 E8 01000000 CALL virus.1003400B
1003400A C3 RETN
1003400B C3 RETN
.
.
.
00D3FF66 0000 ADD BYTE PTR DS:[EAX],AL ; (03) OD停在这里,提示“内存访问”异常。我们使用[Shift+F9]忽略异常,并继续运行。
00D3FF68 E8 33C05A59 CALL 5A2EBFA0
00D3FF6D 59 POP ECX
00D3FF6E 64:8910 MOV DWORD PTR FS:[EAX],EDX
00D3FF71 EB 0F JMP SHORT 00D3FF82
00D3FF73 ^ E9 F02EFCFF JMP 00D02E68
00D3FF78 E8 67FBFFFF CALL 00D3FAE4
00D3FF7D E8 4232FCFF CALL 00D031C4
00D3FF82 E8 05E9FFFF CALL 00D3E88C
00D3FF87 33C0 XOR EAX,EAX
00D3FF89 5A POP EDX
00D3FF8A 59 POP ECX
00D3FF8B 59 POP ECX
00D3FF8C 64:8910 MOV DWORD PTR FS:[EAX],EDX
00D3FF8F 68 A4FFD300 PUSH 0D3FFA4
00D3FF94 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
00D3FF97 E8 5C37FCFF CALL 00D036F8
00D3FF9C C3 RETN
.
.
.
00D3E2BB 90 NOP ; (04) OD停在这里,提示“INT3”异常。我们使用[Shift+F9]忽略异常,并继续运行。
00D3E2BC EB 01 JMP SHORT 00D3E2BF
00D3E2BE 6966 81 FE47467>IMUL ESP,DWORD PTR DS:[ESI-7F],744647FE
00D3E2C5 05 31C040EB ADD EAX,EB40C031
00D3E2CA 0231 ADD DH,BYTE PTR DS:[ECX]
00D3E2CC C031 DB SAL BYTE PTR DS:[ECX],0DB ; 移位常量超出 1..31 的范围
00D3E2CF 64:8F03 POP DWORD PTR FS:[EBX]
00D3E2D2 83C4 04 ADD ESP,4
00D3E2D5 EB 01 JMP SHORT 00D3E2D8
.
.
.
00D3F004 0000 ADD BYTE PTR DS:[EAX],AL ;