美文网首页
每日总结-第七天

每日总结-第七天

作者: SamiraG | 来源:发表于2020-04-07 23:41 被阅读0次

    RDTSC指令反调试

    今天做题遇到了rdtsc这个指令



    RDTSC(Read Time Stamp Count),将计算机启动以来的CPU运行周期数放到EDX:EAX里面,EDX是高位,EAX是低位。这样我们就可以两次获取CPU执行周期数,相减得到中间执行花费了多少时间。在debug等待我们处理的时候,CPU采用多任务处理的机制,将这个线程挂起,把CPU的时间片分给了其他线程,因为实在是太快了导致就象多个线程同时运行一样,而停在push eax的时候虽然时间很短0.0几秒,但是CPU的时间片却已经轮回了很多次。所以这条指令可以用来反调试和测量程序运行速度。

    rep movsb

    mov esi,offset @s1
    mov edi,offset @s2 
    mov ecx,10
    cld 
    rep movsd 
    

    1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di
    2.同时由于在一般exe中ds = es 程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2
    3.movsd此类指令有个性质,当标志位d=0时执行一次esi = esi +1,edi= edi+ 1
    d=1时执行一次esi = esi +1,edi= edi+ 1
    所以此段指令的含义是从s1复制ecx个dword到s2

    相关文章

      网友评论

          本文标题:每日总结-第七天

          本文链接:https://www.haomeiwen.com/subject/onjnphtx.html