有人能帮我解释一下这个代码吗?
有人能帮我解释一下这个代码吗,看我的理解对不,不对请更正一下啊,先谢谢了
.386p ; 386+ required =)
.model flat ; 32 bit registers, no segs.
shit_size equ (offset delta-offset aztec)
.code
start label byte
aztec:
pushad ; Push all the registers
pushfd ; Push the FLAG register
call delta ; 1 这句是调用delta:标签下的代码吗?
delta: pop ebp ; 2 这句是把当前的栈顶的4个字节内容弹出到ebp寄存器中么?
mov eax,ebp
sub ebp,offset delta ; 3 这句不明白什么意思了?请帮我解释下啊,谢谢
sub eax,shit_size ; Obtain the Image Base on 4 不明白????请帮我解释下啊,谢谢
sub eax,00001000h ; the fly
NewEIP equ $-4 ; 5 这句不明白什么意思了?请帮我解释下啊,谢谢
mov dword ptr [ebp+ModBase],eax
[解决办法]
call delta delta: pop ebp ;重定位基址放入ebp mov eax,ebp sub ebp,offset delta ;算出偏移 sub eax,shit_size ;指向aztec: sub eax,00001000h ;取得mod base NewEIP equ $-4 ;cur EIP-4 mov dword ptr [ebp+ModBase],eax ;将运行时的模块基址 ;放入全局变量ModBase.
[解决办法]
1,2,两句是汇编中非常常用的取当前指令地址的语句(也就是取EIP内容)