逆向工程开篇(连载中)

项目特点

这个专栏专门设计用于汇编逆向工程研究,包含:

  • ✅ 18个测试模块,覆盖所有主要C语言特性
  • ✅ 1200+行工具类代码,400+行主程序代码
  • ✅ 完整的Visual Studio 2017项目支持
  • ✅ Debug和Release两种构建配置
  • ✅ 静态库和可执行文件分离
  • ✅ 自动化的.obj和.asm文件提取
  • ✅ 丰富的汇编指令覆盖率
  • ✅ 详细的提取报告和文档
  • 专门的函数参数传递测试模块
  • 多种调用约定和参数传递模式测试

适用于:

  • C语言到汇编的转换研究
  • 汇编逆向工程的准确性验证
  • 编译器优化效果分析
  • 汇编指令覆盖率测试
  • 静态库文件分析
  • 目标文件格式研究
  • 函数调用约定分析
  • 参数传递机制研究

跳转

一、无参数的函数调用- RSP,EAX寄存器,全局变量,INT类型和MOV,INC,SHL指令
二、函数调用包含单个参数之整型-ECX寄存器,LEA指令
三、函数调用包含单个参数之float类型-xmm0寄存器,sub,rep,stos,movss,mulss,addss指令
四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型

项目地址

整体项目地址存放于https://github.com/Jacen9/AssemblyReverse

可以使用命令拉取

bash 复制代码
https://github.com/Jacen9/AssemblyReverse.git

功能特性

该项目覆盖了以下C语言特性,确保生成的汇编代码具有最大的指令覆盖率:

1. 基础数据类型和运算

  • 整数运算(int, short, long)
  • 浮点运算(float, double)
  • 字符和字符串操作
  • 布尔类型操作

2. 位运算操作

  • 按位与、或、异或、非
  • 左移、右移操作
  • 位域操作

3. 控制流结构

  • if/else条件语句
  • switch/case语句
  • for循环
  • while循环
  • do-while循环
  • goto语句

4. 函数和调用约定

  • 普通函数调用
  • 递归函数调用
  • 函数指针和回调函数
  • 变参函数(variadic functions)
  • 内联函数
  • 函数参数传递测试
    • 无参数函数
    • 单参数函数(不同类型:int, float, double, char, bool, pointer)
    • 双参数函数(相同类型和混合类型)
    • 三到八参数函数(混合类型组合)
    • 大量参数函数(超过寄存器数量,测试栈传递)
    • 结构体参数传递(按值和按指针)
    • 数组参数传递(不同声明方式)
    • 函数指针参数传递
    • 复杂混合参数(结构体+函数指针+数组+基础类型)
    • 递归函数参数传递
    • 参数传递性能基准测试

5. 数据结构

  • 结构体(struct)
  • 联合体(union)
  • 枚举(enum)
  • 数组操作
  • 指针算术

6. 内存管理

  • 动态内存分配(malloc/free)
  • 内存复制和设置
  • 指针操作和解引用

7. 高级特性

  • 链表数据结构
  • 文件I/O操作
  • 类型转换
  • 宏定义和预处理器指令
  • 静态和全局变量
  • 常量定义

汇编指令覆盖率

通过以上18个测试模块,项目能够生成以下汇编指令类型:

参数传递和调用约定指令

  • 寄存器传递:MOV RCX, MOV RDX, MOV R8, MOV R9(Windows x64前4个整数参数)
  • 浮点寄存器:MOVSS XMM0, MOVSD XMM1(浮点参数传递)
  • 栈传递:PUSH, SUB RSP(大量参数时的栈传递)
  • 函数调用:CALL, RET
  • 栈帧管理:PUSH RBP, MOV RBP RSP, POP RBP, ADD RSP

算术和逻辑指令

  • 整数运算:ADD, SUB, MUL, DIV, MOD, INC, DEC
  • 浮点运算:FADD, FSUB, FMUL, FDIV, ADDSS, SUBSS, MULSS, DIVSS
  • 位运算:AND, OR, XOR, NOT, SHL, SHR
  • 比较指令:CMP, TEST

控制流指令

  • 条件跳转:JE, JNE, JL, JLE, JG, JGE, JA, JB, JC, JNC
  • 无条件跳转:JMP
  • 循环指令:LOOP, LOOPE, LOOPNE

内存操作指令

  • 数据移动:MOV, MOVZX, MOVSX
  • 地址计算:LEA
  • 内存访问:各种寻址模式(直接、间接、基址+偏移、索引等)
相关推荐
典典分享指南10 小时前
飞书 + 企业微信 + 微信文档多端协同实践指南
汇编·flask·intellij-idea·fastapi
极客互动API5 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot88811 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾16 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程17 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust18 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王18 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg66619 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-20 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot8881 个月前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa