• OD使用教程3(中) 调试篇03|解密系列


    OD使用教程3(上) - 调试篇03

     

    让编程改变世界

    Change the world by program


     

    关于系统API

      Windows应用程序运行在Ring3级别(包括我们的倚天剑:OllyDBG) [caption id="attachment_704" align="aligncenter" width="353"] windows等级安排[/caption]   但有时候需要Ring0级别才能进行操作,那咋整? 我们可以通过系统为我们搭建的桥梁:API函数,我们也称之为系统提供给我们的接口。   因为系统只信任自己提供的函数,所以我们要通过API才能实现对内核的操作。 你可以这么想,假如小甲鱼送给你一辆法拉利跑车,恩,你没听错,是假如,不是真的!那你要怎么来驾驶她?   没错,要通过踩油门来加速,要通过打方向盘来转弯……而油门,方向盘 就是所谓的接口,对于法拉利来说,它们就是API函数。  

    关于mov指令

      mov指令格式:mov dest, src 这是一个很容易理解的指令,mov指令将src的内容拷贝到dest,mov指令总共有以下几种扩展:   movs/movsb/movsw/movsd edi,esi:这些变体按串/字节/字/双字为单位将esi寄存器指向的数据复制到edi寄存器指向的空间。 movsx符号位扩展,byte->word,word->dword (扩展后高位全用符号位填充),然后实现mov。 movzx零扩展,byte->word,word->dword(扩展后高位全用0填充),然后实现mov。  

    关于cmp指令

      cmp指令格式:cmp dest, src cmp指令比较dest和src两个操作数,并通过比较结果设置C/?O/Z标志位。  

    cmp指令大概有以下几种格式:

    cmp eax, ebx ;如果相等,Z标志位置1,否则0. cmp eax, [404000] ;将eax和404000地址处的dword型数据相比较并同上置位。 cmp [404000], eax ;同上。  

    标志位

      对于这个概念,建议鱼油以关注苍井空老师的热情去关注它,因为它在破解中起到的作用是至关重要的。 事实上所有的标志位归并与一个32位的标志位寄存器,也就是说有32个不同的标志位。   每个标志位有两个属性:置1或置0,就相当于我们平时说的OK或不OK,OK就买鱼C优盘支持小甲鱼,不OK就看着小甲鱼饿死街头酱紫啦~ 哈哈,大家可能更加关注的是32个标志位都要记住?那不折腾死人才怪!   在逆向中,你真正需要关心的标志位只有三个,也就是cmp指令能修改的那三个:Z/O/C。 Z标志位(0标志),这个标志位是最常用的,运算结果为0时候,Z标志位置1,否则置0。 O标志位(溢出标志),在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0。 C标志位(进位标志),记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位时置1,否则置0。 [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LXZAPQEXMXQQ']视频下载[/Downlink] [Downlink href='http://urlxf.qq.com/?67Rney2']备胎下载[/Downlink]
  • 相关阅读:
    (转)史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
    (转)史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
    (转)史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
    (转)史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)
    (转)史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
    axios使用及配置明细小记
    明明白白ES6——Promise 对象
    状态压缩—骑士
    蒙德里安的梦想Poj2411
    bzoj4033
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846250.html
Copyright © 2020-2023  润新知