开启逆向之旅

  在将来,我们主要用到Windows下最老牌的C语言编译器,Visual C++ 6.0 这款工具;值得注意的是,这款工具在64位操作系统上运行时有时候会出现兼容性的问题,它和32位操作系统相处的比较和谐。因此建议在32位Windows虚拟机下倒腾这个软件(我的虚拟机是win7 32bits 盗版……QAQ),会出现较少的Bug。可能会结合一些Linux反汇编工具来了解不同汇编器的区别和不同。


  前期需要掌握的知识:(推荐书籍《汇编语言》王爽)

  1.汇编语言的常用指令  

  赋值指令mov,加减乘除指令add sub inc dec mul div,逻辑运算指令or and not xor test,[逻辑/算术]移位(循环移位)指令系列,栈操作指令push pop细节,循环指令,地址传送指令lea,比较指令cmp,无条件跳转指令jmp,条件跳转指令一系列,函数调用和返回指令call ret细节

  2.若干种寻址方式

  

       

  3.常用的寄存器分类

  普通寄存器,指针寄存器,变址寄存器,标志寄存器,段寄存器 以及对应功能。 

寄存器16位32位64位
累加寄存器   AX EAXRAX
基址寄存器BXEBXRBX
计数寄存器CXECXRCX
数据寄存器DXEDXRDX
堆栈基指针BPEBPRBP
变址寄存器SIESIRSI
堆栈顶指针SPESPRSP
指令指针IPEIPRIP

   

       参考网址:https://blog.csdn.net/luoyhang003/article/details/46786591

  4. debug常用命令的使用(32bits Windows dos下可以使用,64bits dos没这个命令)

        -r   读取所有寄存器内容

  -a   在cs:ip处写入汇编代码

  -d   读取(可以指定起始地址)内存区内容,默认从开始位置ds:ip显示128字节空间

  -u   查看cs:ip处(可指定开始位置)的反汇编(机器码)得到的汇编代码

  -t/-p    单步执行

  5.asm文件编写规范以及ml指令、debug指令的结合操作 


   推荐入门的书籍:  《解密数据解密的关键技术》第一、二章的内容。

     

 

原文地址:https://www.cnblogs.com/Higgerw/p/10460864.html