| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 新手入门 >> 正文 用户登录 新用户注册
给新手引路-浓缩汇编基础         ★★★ 【字体:
给新手引路-浓缩汇编基础
作者:不详 文章来源:华盟收集 点击数: 更新时间:2007-7-3

前言:
   写这篇文章出于个人兴趣,要先声明的是本人能力是非常有限!其中参考了许多文章!由于无法提供更多的信息教程,所以文章题目才叫做"给新手引路 之 浓缩汇编基础"。主要讲的是破解中所要的一些汇编知识,方便新手们理解,我将用比较通俗的语言讲述!希望大家别说我"低级"    - -b
   写此文的理由:
     1、出于兴趣
     2、助于自己学习巩固,利于新手
   注:
     本文并不教如何编写汇编程序,只想引新手们进Crack大门,一些迟迟无法Crack成功的人也就是这个原因了!
     最好是能抛砖引玉了,勾起新手们学习汇编的兴趣!
    
   重要一点是:不懂汇编是完全没办法搞Crack的,希望大家带着这点来学习!


-----------------------------------------------------------------------------------------------
1.0 关于汇编语言
   汇编语言是创造出来代替原始的只能由处理器理解的二进制代码的,也就是在OD中常见的机器码!用机器码来写程序,可以想象其难度吧,所以汇编语言就出现了,汇编代码是直接描述处理器可以执行的代码,也就是在OD中最常见的反汇编代码了!(当然,有点不一样),而汇编语言是和cpu相关的,和机器语言是一一对应的!

2.0 关于cpu
   CPU的任务就是执行存放在存储器里的指令序列。为此,除要完成算术逻辑操作外,还需要担负CPU和存储器以及I/O之间的数据传送任务。早期的CPU芯片只包括运算器和控制器两大部分。到了近几年,为了使存储器速度能更好地与运算器的速度相匹配,又在芯片中引入了高速缓冲存储器(知道为什么P4比P4赛扬贵那么多了吧?)。
   看主要的部件:
   1.算术逻辑部件ALU(arithmetic logic unit)用来进行算术和逻辑运算。这部分与我们的关系不太大,我们没必要管它。
   2.控制逻辑。同样与我们的关系不大。
   3.工作寄存器。意识了吧,寄存器呀!喂,,寄存器呀!~

3.0 寄存器
   所要了解的是8个32位的寄存器,分别是eax,ebx,ecx,edx,esp,ebp,edi,esi
   eax-edx这四个是通用寄存器,虽然各个都有各自的用途,不过你可以用它们来做任何事!是32位的,自然有低位和高位,我们又可以通过ax,bx,cx,dx来访问其低十六位,但高十六位是无法访问的!比如eax=12345678h,那么低十六位ax=5678h!而十六位的自然也有低位和高位,不过高八位是可以访问的,如ax可以分为ah和al,看字面就知道,ah(high)高八位,al就为低八位了!前面的例子,ax=5678h,那么ah=56h,al=78h!这四个寄存器主要是用来暂放计算结果或什么什么的!
   esp-esi这四个主要是寻址时用来存放偏移或指针,所以,也就称为指针寄存器或变址寄存器了~如在OD中看到的[eax],其实eax中存放的是一个内存地址,而实际要访问的是那个内存地址里的内容!
   esp(堆栈指针寄存器):
      很重要的一个概论,堆栈有着先进后出的特点,就好像有一个圆柱形的筒子,该直径刚好是一个乒乓球的直径,所以最先放进去的球当然会最后出来.而esp呢,永远是指着最顶的那个球的,也就是永远都指向栈顶!在od中也很常见了,比如push和pop就是对栈的操作,push把一个数据压入栈中,也就是把一个球放进去,再去调用push时就再放进一个,而esp则指向第二个放进去的那个球了!使用pop呢就从栈中弹出一个数据,前面说了,堆栈有着先进后出的特点,所以用pop呢就从最后放进去的那个球先出了(除非你破坏筒子(破坏堆栈?那是不可能的,程序马上死给你看))!而esp还是指向栈顶!
   取个代码例子:
   (1) mov ecx, 100<---------100传入ecx
   (2) mov eax, 200<---------200传入eax
   (3) push eax <------------ecx先进了
   (4) push ecx<-------------再来是eax
   (5) pop ebx<--------------从栈顶取出一个,也是最后进去的那一个,结果存到ebx
   (6) pop ecx<--------------从栈顶取出一个,也就是刚刚先进去的那个了,结果存到ecx
最后ebx=200,ecx=100
   到了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 >/$   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指向的就是下一条将要执行的指令的指针。

[1] [2] 下一页

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    数据恢复的基础知识
    SQLInjection基础与技巧
    注射基础经验技巧总篇
    手动脱壳的基础知识
    脚本注射基础
    Win32汇编木马初探
    口令入侵法黑客入侵的基础
    汇编“免杀”基础知识
    端口基础常识大全(详)
    安全基础病毒加壳技术与脱壳杀毒
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号