Hasty Briefsbeta

双语

Reverse Engineering

a day ago
  • 逆向工程涉及获取一个可执行二进制文件并分析其功能或代码结构。
  • 逆向工程中的内存类型包括栈、堆和静态内存,每种内存有不同的分配方式。
  • 标准库通过链接器编译到程序中;避免使用它可以减小程序体积。
  • mov、add、cmp、je、xor、push/pop、call/ret、lea 和 nop 是 x86 汇编中的基本指令。
  • 控制流结构如 if/then/else、while 循环、for 循环、switch 语句和递归可以通过 cmp 和条件跳转等模式在汇编中识别。
  • 二进制文件中常见的函数包括 strcmp、fwrite、getline、puts、scanf 和 strtol,它们揭示了程序的交互方式。
  • 反汇编通常显示函数序言(push rbp, mov rsp, rbp),用于为局部变量分配栈空间。
  • 跳转表可用于实现 switch 语句,从而基于索引进行高效分支跳转。
  • 递归函数遵循使用修改后的参数调用自身的模式,在汇编中表现为多个 call 指令。
  • 逆向工程工具和技术允许分析从简单到复杂的二进制文件,包括基本猜测和高级调试。