zoukankan      html  css  js  c++  java
  • 【转】第一课寄存器与寻址

    转自: www.jmpoep.com

    先贴大纲

    第一部分 基础
    1.汇编语言-寄存器。寻址方式。
    @1.寄存器作用
    @2.寻址方式判断
    2.汇编语言-8086指令、典型函数调用约定
    @1 8086常用运算指令
    @2 8086跳转指令
    @3 常见函数调用约定
    3.汇编语言-识别高级语言中的汇编代码
    @1 常量/变量/指针
      @1-1.常量
      @1-2-1.全局变量
      @1-2-2.局部变量
      @1-3.指针
    @2 字符串/数组/结构体
      @2-1-1.ASCII字符串
      @2-1-2.UNICODE字符串
      @2-1-3.Delphi字符串
      @2-2.数组
      @2-3.结构体
    @3 分支语句
      @3-1.if else
      @3-2.switch
    @4 循环语句
      @4-1.do while
      @4-2.while
      @4-3.for
    @5 函数
      @5-2.栈空间布局
      @5-1.函数调用约定(__cdecl/__stdcall/__fastcall/__thiscall)
    4.数据加密解密算法-汇编运算
    @1 基础加密 and or xor not shl shr
    5.数据加密解密算法-常用加密算法特征
    @1 MD5 CRC BASE64 RC4 DEC 

    汇编语言- 寄存器/ 寻址方式。
    论坛地址:WwW.JmpOep.CoM
    代课:BambooQJ
    一.前言
    我的课程可能不如网上大部分人讲的那么好,但是,我希望我可以尽我最大努力做好它.本人
    没上过学,书读的少.有啥讲错的地方.请指教.我并不能保证我的课程适合大部分人.但是,我保
    证.它可以让你更系统的理解系统机制.本教程定位是初级教程.所以,多半都是记录学习.讲的
    地方并不是很多.
    1.何为软件逆向
    逆向-反其道而行之,从结果得出其过程..那么就简单了.从软件本身逆向出作者算法与
    思路.正向与逆向是相互结合的过程,逆向到一定程度势必会去学正向.正向到一定程度势必
    也会转过来研究逆向.相辅相成.最终都是为了可以更好的提升软件效率与效果.
    2.软件逆向分类
    大框架分两个.代码逆向与数据逆向. 为什么大框架方向分为这两个呢.那就从软
    件机制上谈起. 软件由代码与数据组成.两个合起来才是软件.所以,在逆向方面数据最多的就
    是 软件逆向-这里其实代表的是代码逆向和部分数据逆向侧重于代码逆向.数据分析--这里
    代表的就是数据逆向.侧重与数据逆向.其实两个方向都差不多.只不过,针对的地方不一样.就
    好像一个大的工作室,需要一个反调试作者.一个数据分析作者.来合作.并不是一个人不能做
    这个事情.而是侧重点不一样.每个都是大工程.如果,你说你可以一个人完成.那么请独立找一
    个网上没有任何分析资料的游戏去自己做以上两个工程.你就会理解上面我所说的.
    3.软件逆向的平台
    最常见的 WINDOWS.LINUX.(UNIX).Android.IOS(mac). 这四大平台.
    4 .软件逆向为什么选择汇编语言.而不是 C.delphi.
    答案很简单,因为足够底层.任何高级语言需要在 PC 机上执行都需要中间转化为
    CPU 可读的语言也就是汇编语言.
    二. 寄存器
    1.八位.十六位.三十二位寄存器分别是什么
    八位的寄存器包括AH ,AL,BH,BL,CH,CL,DH 和 和 DL 。
    16位寄存器包括 AX,BX,CX,DX,SP,BP,DI,SI,IP,FLAGS,CS,DS,ES,SS,FS,和 和 GS 。
    扩展的32 位的指令包括EAX,EBX,ECX,EDX,ESP,EBP,EDI,ESI,EIP 和 和 EFLAGS 。
    2.三十二位寄存器作用.
    通用寄存器-常用寄存器
    EAX---累加寄存器.算数运算.逻辑操作.返回函数结果.
    EBX---基址寄存器.存内存地址
    ECX---计数寄存器.记录循环操作
    EDX---数据寄存器.常配合 eax 一起使用.
    变址寄存器
    ESI---源变址寄存器.要处理数据的内存地址
    EDI----目的变址寄存器.处理后的数据的内存地址
    指针寄存器
    EBP----基址寄存器.存放操作数.代替堆栈指针
    ESP----- 堆栈指针寄存器.存放堆栈栈顶.
    标志寄存器
    OF----溢出标志.溢出为1.
    DF----方向标志
    IF----中断标志
    AF----辅助进位标志.
    ZF----零标志.运算结果为零标志位为一.否则为零
    SF-----符号标志 结果为负则为一
    CF----进位标志
    PF----判断结果奇数还是偶数
    三. 寻址方式
    Mov eax,常量 // 用于赋值 eax 此时相当于常量.立即寻址方式
    Mov eax,[内存地址] //处理变量 直接寻址
    Mov eax,[edx] //寄存器寻址 指针转化
    Mov eax,[esi+0x8] //寄存器相对寻址 访问 数组和结构
    Mov eax,[ebp+esi] //基址+变址寻址 访问数组
    Mov eax,[ebx+edi-0x8] //相对基址+变址寻址 访问结构

  • 相关阅读:
    localstorage实现带过期时间的缓存功能
    移动Web深度剖析
    对接口规范的一些思考
    css代码优化
    Web安全:你必须知道的“Cookie安全”
    androidstudio 常用快捷键
    通过oauth 认证 新浪微博 开发过程中遇到的问题
    【问题】R文件报错原因及解决办法 (转)
    为什么 SharedPreferences 可以直接 调用,前面却没有对象
    关于 android 开发中 debug不能顺利进行的各种问题的总结
  • 原文地址:https://www.cnblogs.com/Lthis/p/4954886.html
Copyright © 2011-2022 走看看