zoukankan      html  css  js  c++  java
  • xp下用debug查看内存和汇编指令

     

          win7下好像用debug不行。简单介绍下debug查看内存中的机器码,已经查看汇编指令的方法。

      -r 参数用来查看CPU中寄存器的值,以及改变寄存器的值。主要是怕自己忘记了

         至于那些神马AX,BX,CX,DX的都不用说了,CS跟IP更不用说了,指向了要执行的下一条指令。

         可以用-r cs或者-r ip来改变它们的值。如图:

        这样我们就可以让CS:IP指向我们希望的指向内存地址,从而可能执行我们预先在该地址存放好的代码。

         -D命令:用来查看内存中的值。比如:

     

      如图:最左边的是内存的地址,用基地址:偏移量的方式给出,中间存放的是内存中的机器码,一行刚好15个字节,而最右边则是对这些数据敌对应的可显示的ASCII字符,对于没有的,则用.代替。所以如果想看一下,右边输出hello之类的 东西,则可以向指令里面写如这些字符的ASCII码。

        -E命令:改写内存中的内容。上面已经说到了,下面我们来试试,用E改变CS:IP里面存放的指令。

       

    如图:使用' ‘的格式就可以向里面输入字符了,右边出现了字符hello,所以我们可以认为中间的数据就是对应字符的ASCII码,我们之所以看到h是68,那是因为这是十六进制的数据,h真正的ASCII码应该是6*16+8=104,所以是吻合的。比如我们像内存里面写入:61(也就是6*16=97)

        

    而0到9几个数字ASCII码的十六机制刚好是3x,也就是48+x.这点必须的搞清楚。

         好,搞了这么长时间的E命令,我们在看看U命令,它用来查看机器码对应的汇编代码。比如:

       

    可以看到十六进制的61对应的汇编还是61?所以我们可以用-e写入机器码,然后用-u来查看汇编指令。

        -A:以汇编的形式向内存写入指令。比如:

         还有一个命令就是-t,也就是执行,不多说了。

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/hbhzz/p/2879153.html
Copyright © 2011-2022 走看看