寄存器

EAX:累加寄存器

EBX:基址寄存器

ECX:计数寄存器

EDX:数据寄存器

ESI:来源寄存器

EDI:目标寄存器

EBP:基址指针寄存器

ESP:堆栈指针寄存器

EIP:指令指针寄存器

条件跳转指令

ja  CF=0 and ZF=0

jab CF=0

jb   CF=1

jbe  CF=1 of ZF =1

jcxz  CX=0

je     ZF=1

jecxz   ECX=0

jg   ZF=0  and    SF=OF

jge  SF=OF

jl  SF!=OF

jle  ZF=1   or SF!=OF

jmp  无条件跳转

jna  CF=1 or  ZF=1

jnae  CF=1

jnb   CF=0

jnbe  CF=0 and ZF=0

jnc     CF=0

jne     ZF=0

jng     ZF=1 or SF!=OF

jnge   SF!=OF

jnl       SF=OF

jnle     ZF=0 and SF=OF

jno      OF=0

jnp      PF=0

jns      SF=0

jnz      ZF=0

jo       OF=1

jp       PF=1

jpe    PF=1

jpo     PF=0

js      SF=1

jz      ZF=1

标志位

Z标志位(0标志),这个标志位是最常用的,运算结果为0时候,Z标志位置1,否则置0。

O标志位(溢出标志),在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0。

C标志位(进位标志),记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位时置1,否则置0。

cmp指令大概有以下几种格式:

cmp eax, ebx ;如果相等,Z标志位置1,否则0.

cmp eax, [404000] ;将eax和404000地址处的dword型数据相比较并同上置位。

cmp [404000], eax ;同上。

test指令

test eax,eax  ;如果eax的值为0,则Z标志位置1

逻辑运算

and eax,ebx

or eax,ebx

xor eax,ebx

not eax

CALL指令

call XXX; 等于 push eip; 然后 jmp XXX;

call有以下几点调用方式

call 404000h ;直接跳到函数或过程的地址

call eax ;函数或过程地址存放在eax

call dword ptr [eax]

call dword ptr [eax+5]

call dword ptr [<&API>] ;执行一个系统API

PE文件格式

PE文件结构:

DOS header

DOS stub

PE File Header

Image Optional Header

Section Table

Data Directories

Sections

GetModuleHandleA这个API函数用于获取程序的ImageBase(基址)

VA(VirtualAddress,虚拟地址)

RVA(RelativeVirtualAddress,相对虚拟地址)

EP(EntryPoint,程序入口点)

软件断点

设置该断点的原理是在断点处重写代码,插入一个int3中断指令,当CPU执行到int3指令的时候,OD就可以获得控制权。软件断点只能在OD的CPU界面下,在数据段它下不了,在一条指令的中间它也下不了。

硬件断点:

这个原理跟软件断点不同,硬件断点的可行性依赖于CPU的物理支持。CPU有四个调试寄存器。如果我们想下在windows的动态链接库里下断点,需要用到硬件断点,因为用软件断点下在dll文件中是不会保存的,重启程序后将丢失断点。

逆向与汇编的一些笔记相关推荐

  1. 非虫 android应用逆向,android逆向-ARM汇编基础-非虫笔记

    这里是非虫笔记本,对学习知识的一种总结.有机会可以一起学习. ARM汇编(非虫笔记) 1.ARM汇编的目的: 分析elf文件的需要. 2.原生程序生成过程. (1)预处理,编译器处理c代码中的预处理指 ...

  2. 《格蠹汇编》读书笔记—windbg的使用(中)

    笔记本唤醒失败的原因探究(16章) 1)如何产生dmp文件 方法在前一章说过<格蠹汇编>读书笔记-windbg的使用_u012138730的专栏-CSDN博客_windbg怎么用 当唤醒失 ...

  3. 汇编入门学习笔记 (十二)—— int指令、port

    疯狂的暑假学习之  汇编入门学习笔记 (十二)--  int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引 ...

  4. 计算机指令int,汇编入门学习笔记 (十二)—— int指令、端口

    疯狂的暑假学习之  汇编入门学习笔记 (十二)--  int指令.端口 参考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引发一 ...

  5. KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3——串口Stdio实现

    KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3--串口Stdio实现 一.介绍 任务目标 二.工程创建 三.软件设计 第一步,BSP构建 1, 添加前面的pll_config文件 2 ...

  6. Powerpc汇编编译学习笔记

    Powerpc汇编编译学习笔记 本篇文章结合网上学习的部分知识,搭建对于Powerpc的编译环境. 1.准备 本人使用Fedora 33 64bit虚拟机 核心Binutils用于对二进制文件进行处理 ...

  7. KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记4——Directives

    KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记4--Directives 一.若干重要的DIRECTIVE介绍 二.一些概念 三.Directives详细介绍 1,GET/INCLUD ...

  8. IOS逆向之汇编基础

    原文出处 学习汇编前你应该知道的知识   1.汇编需要什么工具和程序,到哪里下载?     目前阶段,汇编程序仅需要两个程序就够了.masm.exe,link.exe. 前者是编译程序,后者是链接程序 ...

  9. 【汇编实战开发笔记】从汇编代码中找出一段普通的for循环变成“死循环”的根本原因(RT-Thread技术论坛优秀文章)

    文章目录 1 前言 2 问题描述 3 简单分析 4 场景再现 5 柳暗花明 6 找到证据 6.1 究竟是不是警告 6.2 盘根问底 6.3 解除风险 7 扩展延伸 7.1 RISC-V架构 7.2 8 ...

最新文章

  1. 【Python入门】你值得拥有的这八个实用工具安装包与实战项目
  2. 什么是python函数_Python之什么是函数
  3. iptables 手册
  4. exadata磁盘组无法mount恢复---惜分飞 1
  5. ubuntu 安装redash
  6. tshark (wireshark)笔记
  7. Linux 能否拿下苹果 M1 阵地?
  8. 微软语音识别技术屡破世界纪录的秘密都在这里了
  9. iPhone 和 华为手机 :手机端酷狗音乐提示 “导入歌曲不支持此操作” ----曲线解决导入问题
  10. ajax 每隔5秒,利用jQuery Ajax技术实现每隔5秒向某页面传值
  11. 马哥linux docker视频,[其他] 马哥Docker + K8S 视频教程
  12. wampserver 的Apache启动错误提示:The requested URL / was not found on this server
  13. 32位无符号整数快开方函数
  14. 外星人笔记本计算机在哪里,笔记本电脑没声音,教您外星人笔记本没声音如何解决...
  15. (附源码)springboot电影院售票与管理系统 毕业设计011449
  16. 在线订票系统--永胜票务网是怎么搭建的?
  17. 点成分享| 低温冷冻保存的技术研究(一)
  18. 湘潭大学研究生计算机科学,湘潭大学计算机研究生难考么
  19. 推荐系统实践读书笔记-06利用社交网络数据
  20. android应用商店设计规范,商店应用图尺寸规则

热门文章

  1. mysql 远程连接
  2. 开始食用grpc(之一)
  3. day01 js三种导入html的方法、js书写规范、变量的基本使用、变量提升
  4. 图解集合8:红黑树的移除节点操作
  5. linux最初配置( vimrc设置 、tab键设置 inputrc、中文输入法等等)
  6. 【原】TreeView+Checkbox级联操作(IE/FireFox测试通过)
  7. 一个Delphi写的DES算法, 翻译成C#
  8. [知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱
  9. 【数据结构与算法】之深入解析“石子游戏V”的求解思路与算法示例
  10. 【数据结构与算法】之栈与队列的应用和操作