黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 文章正文
[推荐]给新手引路-浓缩汇编基础
        ★★★★★
给新手引路-浓缩汇编基础
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-6-29

   段寄存器:
     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)<-(DST)-(SRC)
   MUL 无符号乘法指令 格式: MUL SRC   执行的操作:字节操作(AX)<-(AL)*(SRC);字操作(DX,AX)<-(AX)*(SRC);双字操作:(EDX,EAX)<-        (EAX)*(SRC)
   DIV 无符号除法指令 格式:DIV SRC   执行的操作:字节操作:16们被除数在AX中,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中        。表示为:
        (AL)<-(AX)/(SRC)的商,(AH)<-(AX)/(SRC)的余数。字操作:32位被除数在DX,AX中。其中DX为高位字,16位除数为源操作数,结果的16        位商   在AX中,16位余数在DX中。表示为:(AX)<-(DX,AX)/(SRC)的商,(DX)<-(DX,AX)/(SRC)的余数。
   nop         <-   无操作,去掉指令用的吧!去掉一个跳转,让程序直接往下走,就到注册成功处啦(扯远了````)
   call        <- 调用子程序或函数用的

   关于跳转指令,可以查看汇编速查手册,别强迫自己把所有的都一下记住,浪费精力,不懂时再查一下,久了就记住了!
   
5.0 高级语言程序的汇编浅解析
   汇编语言要和硬件直接打交道,写病毒是方便点啦!!而在高级语言中,如C中我们要面向的是问题的解决,对于硬件资源操作,编译器搞定了!在这里稍微讲一下高级语言中与反汇编代码相应的一些地方:
   1、定义变量
     int a;
     一个变量其实是存放在一个内存地址里,如果对a进行赋值"a=10",在反汇编中就有可能表现为:
     mov word ptr[007e58c2],A
     像这个样子,而a所对应的内存地址就是0x007e58c2了,当然是乱写的一个地址而已,系统怎样分配?(天知道...)

2、比如一个数组
     char str[]="hello";
     占用了6个字节,最后一个是以0结尾的空字节,数组名可以当做数组的指针!str[0]='h',str[0]相应一个变量地址,比如为[0040e123],那么[0040e124]就为'e',[0040e125]就为'l'....了`

3、指针
    char *p;
    指针也是一个变量,所以它也对应一个内存地址!但访问时应该是访问其指向的内存地址的内容,而不是这个指针变量的内容,其内容只是一个地址而已!假如该指针变量地址为007e1000,那么语句p=a,这句在高级语言里是让指针p指向a这个内存单元!p里的内容是a的地址,*p实际上是a的内容了!而反汇编有可能表现成这样:
   mov [007e1000],007e2000<-假如007e2000为变量a的地址,那么就是把a的地址传到007e1000这个内容里了!

4、函数调用
   sub(a,b);
   假如sub是自定义的一个减法函数,作用为参数一减去参数二,上面语句为在C中调中时传递参数!前面有说过了,Win32平台下函数调用的参数是通过堆栈来传递的,那么反汇编就是:
   (假如a=2,b=1)
   mov eax,2
   mov ebx,1
   push eax
   push ebx
   call 取地址(sub)
   .......
-----------------------------------------------------------------------------------------------

   好了,最后感谢大家能看完这篇了了草草的东西,我也回顾了不少知识!在本人能力范围内的事不知道对新手们有没有帮助,还有一点要提醒各位新手,如果真想学好Crack学通Crack这门知识的话,不完全了解汇编是不行的!所以在看了我这篇之后如果能激起你学汇编的信心是最好的!要不等到Crack遇到什么问题时才再想回过头学汇编,那很难!~

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    VIP 专 区
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886