C++代码
1. 著名多形病毒Marburg的变形解密子:
2.
3.
4.
5. 00401020: movsx edi,si ;病毒入口
6.
7. 00401023: movsx edx,bp
8.
9. 00401026: jmp 00408a99
10.
11. ......
12.
13. 00407400: ;病毒体入口
14.
15. 加密的病毒主体
16.
17. 00408a94: ;解密指针初始值
18.
19. ......
20.
21. 00408a99: mov dl,f7
22.
23. 00408a9b: movsx edx,bx
24.
25. 00408a9e: mov ecx,cf4b9b4f
26.
27. 00408aa3: call 00408ac4
28.
29. ......
30.
31. 00408ac4: pop ebx
32.
33. 00408ac5: jmp 00408ade
34.
35. ......
36.
37. 00408ade: mov cx,di
38.
39. 00408ae1: add ebx,9fdbd22d
40.
41. 00408ae7: jmp 00408b08
42.
43. ......
44.
45. 00408b08: add ecx,80c1fbc1
46.
47. 00408b0e: mov ebp,7fcdeff3 ;循环解密记数器初值
48.
49. 00408b13: sub cl,39
50.
51. 00408b16: movsx esi,si
52.
53. 00408b19: add dword ptr[ebx+60242dbf],9ef42073 ;解密语句,9ef42073是密钥
54.
55. 00408b23: mov edx,6fd1d4cf
56.
57. 00408b28: mov di,dx
58.
59. 00408b2b: inc ebp
60.
61. 00408b2c: xor dl,a3
62.
63. 00408b2f: mov cx,si
64.
65. 00408b32: sub ebx,00000004 ;移动解密偏移指针,逆向解密
66.
67. 00408b38: mov ecx,86425df9
68.
69. 00408b3d: cmp ebp,7fcdf599 ;判断解密结束与否
70.
71. 00408b43: jnz 00408b16
72.
73. 00408b49: jmp 00408b62
74.
75. ......
76.
77. 00408b62: mov di,bp
78.
79. 00408b65: jmp 00407400 ;将控制权交给解密后的病毒体入口
80.
81. 著名多形病毒Hps的变形解密子:
82.
83.
84.
85. 005365b8: ;解密指针初始值和病毒体入口
86.
87. 加密的病毒主体
88.
89. ......
90.
91. 005379cd: call 005379e2
92.
93. ......
94.
95. 005379e2: pop ebx
96.
97. 005379e3: sub ebx,0000141a ;设置解密指针初值
98.
99. 005379e9: ret
100.
101. ......
102.
103. 005379f0: dec edx ;减少循环记数值
104.
105. 005379f1: ret
106.
107. ......
108.
109. 00537a00: xor dword ptr[ebx],10e7ed59 ;解密语句,10e7ed59是密钥
110.
111. 00537a06: ret
112.
113. ......
114.
115. 00537a1a: sub ebx,ffffffff
116.
117. 00537a20: sub ebx,fffffffd ;移动解密指针,正向解密
118.
119. 00537a26: ret
120.
121. ......
122.
123. 00537a30: mov edx,74d9cb97 ;设置循环记数初值
124.
125. 00537a35: ret
126.
127. ......
128.
129. 00537a3f: call 005379cd ;病毒入口
130.
131. 00537a44: call 00537a30
132.
133. 00537a49: call 00537a00
134.
135. 00537a4e: call 00537a1a
136.
137. 00537a53: call 005379f0
138.
139. 00537a58: mov esi,edx
140.
141. 00537a5a: cmp esi,74d9c696 ;判断解密结束与否
142.
143. 00537a60: jnz 00537a49
144.
145. 00537a66: jmp 005365b8 ;将控制权交给解密后的病毒体入口
|