汇编指令jmp call ret 变形
2007-11-06 22:28
288 查看
用 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
}
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
}
相关文章推荐
- 跳转指令 jmp、call、ret、retf
- jmp && call && ret 特权级转移 & 进程调度
- 不同特权级间代码段的跳转{ 门 + 跳转(jmp + call) + 返回(ret) }
- 汇编指令CALL与JMP的区别
- 不同特权级间代码段的跳转{ 门 + 跳转(jmp + call) + 返回(ret) }
- jmp,call,ret,特权级转移,进程调度
- jmp、call、ret、retf解析
- jmp、call、ret、retf解析
- AT&T汇编指令enter、leave、call、ret
- 汇编语言 JMP CALL RET RETF的使用与区别
- 【汇编】jmp、call、ret、retf比较
- 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程
- call jmp 与机器码
- Shellcode中ret调用和call调用函数区别
- 转移指令jmp和跳转指令call
- CALL和JMP的区别
- CALL 和 ret 指令
- __stdcall 与 __cdecl 区别 (汇编 call ret 时,栈的变化)
- 汇编入门学习笔记 (九)—— call和ret
- 义隆单片机CALL 与JMP的区别