-
-
[原创]我也帖一下我的第3阶段第1题的解决方案
-
发表于:
2007-9-19 20:12
9631
-
这个病毒的多态的,因此不太好处理,其会感染exe和scr文件,
在PE头中会留下love(evol)标志,可能会多次感染。
病毒入口,作用为解码:
00415000 > /EB 00 jmp short 00415002 ; 多态
00415002 \FC cld
00415003 87DB xchg ebx, ebx
00415005 F5 cmc
00415006 55 push ebp
00415007 8BEC mov ebp, esp
00415009 E8 11000000 call 0041501F
0041500E E8 B7000000 call 004150CA
00415013 EB 00 jmp short 00415015
00415015 87DB xchg ebx, ebx
00415017 EB 00 jmp short 00415019
00415019 90 nop
0041501A E9 32000000 jmp 00415051
0041501F 67:64:FF36 0000 push [dword fs:0]
00415025 67:64:8926 0000 mov [fs:0], esp
0041502B 012D BA504100 add [4150BA], ebp
00415031 31DB xor ebx, ebx
00415033 68 00000100 push 10000 ; UNICODE "=::=::\"
00415038 68 00000080 push 80000000
0041503D 53 push ebx
0041503E 53 push ebx
0041503F 68 00040000 push 400
00415044 68 00000080 push 80000000
00415049 53 push ebx
0041504A 53 push ebx
0041504B FF15 9C634000 call [<&KERNEL32.GetModuleHandleA>] ; kernel32.GetModuleHandleA
00415051 EB 00 jmp short 00415053
00415053 F9 stc
00415054 F5 cmc
00415055 89DB mov ebx, ebx
00415057 29C0 sub eax, eax
00415059 FEC8 dec al
0041505B 08C0 or al, al
0041505D 74 04 je short 00415063
0041505F ^ 75 F8 jnz short 00415059
00415061 EB 67 jmp short 004150CA
00415063 F9 stc
00415064 FC cld
00415065 89DB mov ebx, ebx
00415067 F8 clc
00415068 29D2 sub edx, edx
0041506A 29C9 sub ecx, ecx
0041506C EB 00 jmp short 0041506E
0041506E F8 clc
0041506F B1 1F mov cl, 1F ; 密钥, 会变
00415071 8D52 01 lea edx, [edx+1]
00415074 49 dec ecx
00415075 ^ 75 FA jnz short 00415071
00415077 F9 stc
00415078 E8 00000000 call 0041507D ; 得到加密代码的位置
0041507D 5F pop edi ; 得到加密代码的位置
0041507E 87DB xchg ebx, ebx
00415080 F8 clc
00415081 81C7 5A000000 add edi, 5A ; 得到加密代码的位置
00415087 57 push edi
00415088 29F6 sub esi, esi
0041508A 81F6 00290000 xor esi, 2900 ; 加密代码的长度,可能会变, 2900为正常,
00415090 EB 00 jmp short 00415092 ; 如果大于2900则多余部份是被偷掉的代码,需要复制回去
00415092 89D2 mov edx, edx
00415094 8607 xchg [edi], al
00415096 89D2 mov edx, edx
00415098 F5 cmc
00415099 89D2 mov edx, edx
0041509B 87DB xchg ebx, ebx
0041509D 66:31D0 xor ax, dx ; 解码方法,可能会变
004150A0 8607 xchg [edi], al
004150A2 FC cld
004150A3 87DB xchg ebx, ebx
004150A5 90 nop
004150A6 EB 00 jmp short 004150A8
004150A8 89D2 mov edx, edx
004150AA FC cld
004150AB 90 nop
004150AC 90 nop
004150AD 89D2 mov edx, edx
004150AF 47 inc edi
004150B0 4E dec esi
004150B1 EB 00 jmp short 004150B3
004150B3 FC cld
004150B4 09F6 or esi, esi
004150B6 ^ 75 DC jnz short 00415094
004150B8 5F pop edi ; 解码完成
004150B9 BD 00000000 mov ebp, 0
004150BE 8B55 F8 mov edx, [ebp-8]
004150C1 67:64:8916 0000 mov [fs:0], edx
004150C7 C9 leave
004150C8 FFE7 jmp edi ; 跳到解密后的代码去
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)