当前位置: 网学 > 编程文档 > 汇编语言 > 正文

给新手引路之浓缩汇编基础

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
nbsp;

到了win32的平台下,api大家都知道了吧!api的参数都是靠堆栈来传递的,比如说一个FindWindow,在C里我这样调用
->::FindWindow(NULL,“a”)->而反汇编之后在系统底层反汇编代码就象这个样子:
push xxxxxxxx->xxxxxxxx为“a”的内存地址
push yyyyyyyy->yyyyyyyy为空中止字符串的指针
call zzzzzzzz->调用FindWindow
而在call里面先使用pop弹出先前压入栈的参数再使用

ebp(基址指针寄存器):
它称为基址指针寄存器,它们都可以与堆栈段寄存器SS(堆栈段)联用来确定堆栈中的某一存储单元的地址,ESP用来指示段顶的偏移地址,而EBP可作为堆栈区中的一个基地址以便访问堆栈中的信息。

ESI(源变址寄存器)和EDI(目的变址寄存器)一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,可以很方便地用于变址。

还有两个专用寄存器,分别是eip和flags
flags:
这个是标志寄存器了,存放条件标志码、控制标志和系统标志的寄存器!在od中也见很多了,比如zf(零标志),用cmp比较时,把两个操作数相减,为0就置zf为1,否则zf为0。而jnz就是看zf是否为0,为0就跳!这样说起来似乎更乱了,建议大家去记那些大于就跳,小于就跳的,比较简单(jnz就是不相等就跳)``哦呵呵!!至于其它标志,这里不再阐述了,可以去参看汇编速查!
cmp eax,ebx<-比较eax和ebx,两个相减,为0的话zf就为一,否则zf为0
jnz xxxxxxx<-判断zf是否为0,为0就跳到xxxxxxx处,也就是所谓的不相等就跳

eip(指令指针寄存器):
这个很好理解,根据od来说,载入一个程序后,比如代码像这样:
0043C412 >/$Content$nbsp;  55             push     ebp          <-载入后停在这,看寄存器窗口eip这时为43c412
0043C413   |.   8BEC           mov      ebp, esp     <-f8运行一步之后,eip为43c413
0043C415   |.   6A FF          push     -1           <-eip为43c415
0043C417   |.   68 C8B64800    push     0048B6C8     <-eip为43c417
有人会说“原来eip是指示当前执行到代码处的地址的!”   ,这不对!!因为f8运行还没通过那条代码,所以还不算已经执行了,没错,eip指向的就是下一条将要执行的指令的指针!

 

段寄存器:
cs代码段,ds数据段,ss堆栈段,es附加段
在Win32编程中段的概念已经不重要了!而在Crack时你总不会是在调是dos时代的程序吧!-!

4.0 常用汇编指令
mov ax,cx   <-很常用了,把cx的值送入ax中,cx值保持不变
cmp eax,ecx<-很常见了吧,比较eax和ecx,置标志位!方法前面说过了
xor eax,eax<-看这个,eax与自己异或,是清零的操作!
lea eax,str<-并不传送数据,只传送该数据的地址,将str字符串的地址传到eax
push eax    <-进栈操作,前面说过了,eax进栈
pop   ebx    <-出栈操作,前面也说了,弹出位于栈顶的数据存入ebx
ADD 加法指令 格式:ADD DST,SRC 执行的操作:(DST)<-(SRC)+(DST)
SUB 减法指令 格式:SUB DST,SRC 执行的操作:(DST)&

  • 上一篇资讯: 一段精彩的汇编代码!
  • 下一篇资讯: 基本概念(win32)汇编教程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号