【转】第一课寄存器与寻址

转自: 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] //相对基址+变址寻址 访问结构

 

posted @ 2015-11-10 23:05  Lthis  阅读(421)  评论(0编辑  收藏  举报