计算机病毒——Call To Pop技巧
为什么使用Call To Pop
计算机病毒需要将自己插入宿主中,绝对地址难以获取,运行时虽然我们不能读写EIP,但是call指令会将当前指令的下一指令地址压入栈,方便获取。
Call To Pop实例
典型Call To Pop
Call_To_Pop:
call Next
Next:
pop eax
此时eax中储存着Next的地址。(由于call Next是相对地址,因此call Next处不需要重定位)
变形Call To Pop
典型Call To Pop很容易作为病毒的标志,因此可以进行变形。
下面是博主的想法:
变形1
Need_To_Get_Address:
call Next
Next:
mov eax,[eap]
add esp,4
变形2
Need_To_Get_Address:
call Next
Next:
mov eax,DWORD ;DWORD随便定个常数即可
xor eax,[eap]
xor eax,DWORD
add esp,4
W32/Kris中的应用(来自《计算机病毒防护技术》一书)
0040601A E807000000 call 004060
0040601F 34F4 xor al,F4
00406021 F0A4 lock movsb
00406023 288C085EB934AC sub [eax + ecx - 53CB46A2],cl
0040602A 0200 add al,[eax]
(看了之后一头雾水)