用 FASM 汇编强大的宏来实现 汇编指令jmp call ret 变形。用它来生成的代码完全看不到 关键函数的调用,关键的跳转和函数结束处的ret等标志性的影子,能够在一定程度上很好的保护软件不被破解。
macro jmp Go
{
push Go
ret
}
macro call Proc
{
push @f
jmp Proc
@@:
}
macro ret AddEspNum
{
if ~ AddEspNum eq
if (AddEspNum mod 4)<>0
.err
end if
lea esp, [esp+(AddEspNum+4)]
jmp dword [esp-(AddEspNum+4)]
else
sub esp, -4
jmp dword [esp-4]
end if
}