CTF-RE-学习记录-汇编-2

本文介绍了汇编语言的学习,包括使用DTDebug工具,寄存器的32位和64位概念,特别是EIP寄存器的作用。讲解了MOV指令、内存地址的五种形式以及数据存储模式。还讨论了堆栈的相关指令如PUSH、POP,以及如何通过CALL和JMP指令修改EIP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

汇编工具DTDebug

下载后设置好odd与插件路径,同时在属性中设置为管理员身份运行(无Administrator权限进入的时候一直在提示)

寄存器

存储数据:

CPU>内存>硬盘

32位CPU: 8 16 32

64位CPU: 8 16 32 64

EIP:存储CPU下一次执行的指令集,不能作他用

通用寄存器

32位寄存器

32位 16位 8位
WAX AX AL(低8位)
ECX CX CL
EDX DX DL
EBX BX BL
ESP SP AH(高8位)
EBP BP CH
ESI SI DH
EDI DI BH

8位,16位寄存器同时存在于32位之中,8位指令改32位中的1位,16位改4位

MOV指令

  1. 立即数到寄存器

### 塔易 CTF 逆向工程 Easy RE 题目分析 #### 背景介绍 在处理塔易CTF中的Easy RE题目时,通常涉及对给定二进制文件进行静态和动态分析。这类题目旨在考察参赛者对于程序结构的理解以及如何通过逆向工程技术找到隐藏的关键信息或算法[^1]。 #### 工具准备 为了有效地解决此类问题,建议准备好如下工具: - IDA Pro 或 Ghidra 进行静态反汇编与调试; - Python 结合 Capstone 库用于编写自动化脚本辅助解析; - Hopper Disassembler (适用于 macOS 用户); #### 初步探索 打开目标可执行文件后,在IDA Pro中加载该文件并观察其入口点函数(main或其他),注意任何可疑字符串、API调用模式等特征。这些线索往往指向验证机制的核心部分[^2]。 #### 动态跟踪 如果遇到难以理解的复杂逻辑,则可以借助GDB(PEDA/GEF扩展更佳)设置断点逐步单步执行指令流,监视寄存器状态变化及内存读写行为。此过程有助于发现输入参数传递规律及其后续处理方式。 #### 多重加密破解 当面对存在多层加密的情况时,需特别留意各阶段密钥派生方法与数据流向关系。尝试从最外层开始逐级剥离保护措施直至触及底层明文内容为止。在此期间务必记录下每一步转换规则以便最终构建完整的解码流程图。 ```python from capstone import * def disassemble_code(binary_data, arch=CS_ARCH_X86, mode=CS_MODE_32): md = Cs(arch, mode) for i in md.disasm(binary_data, 0x1000): # Assuming code starts at address 0x1000 print(f"0x{i.address:x}:\t{i.mnemonic}\t{i.op_str}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值