Bugku——入门逆向

0x00 前言

这个题一直没看懂。。。直到今天

0x01 前言

打开ida,看到这个。感觉没有利用,我的第一个错觉就是去点那个_main()。
在这里插入图片描述
看到的是这个样子的,继续往下走无果,没有看到重要信息。
在这里插入图片描述
打开od看看。使用F8找到main函数入口处,然后看到打印了这串字符,这里有一个非常可以的东西。这一串的mov。
在这里插入图片描述
ida打开。
在这里插入图片描述
然后R一下,这里的R指的就是字符转换。
在这里插入图片描述
拿到flag。

0x02 总结

做这种题,还是先找到函数入口,然后进行观察,然后得到结果。最后IDA R键功能一定要掌握。

知识补充

堆栈

堆栈(Stack)是一种数据结构,它是一种后入先出(LIFO,Last In First Out)的线性表,即最先入栈的元素最后出栈。堆栈具有一些特殊的性质,比如后入先出、只能在栈顶进行插入和删除操作等。

堆栈的应用非常广泛,例如在计算机科学中,堆栈被用于处理函数调用和递归、解析表达式、深度优先搜索等。在操作系统中,堆栈被用于处理进程调度、任务切换等。在计算机网络中,堆栈被用于处理TCP/IP协议、HTTP请求等。

堆栈的基本操作包括入栈(push)、出栈(pop)、查看栈顶(peek)等。入栈操作将元素添加到栈顶,出栈操作删除栈顶元素,查看栈顶操作返回栈顶元素但不删除。

堆栈的实现方式可以是显式或隐式。显式堆栈是指明确使用堆栈数据结构进行操作,例如使用数组或链表实现。隐式堆栈则是指没有明确使用堆栈数据结构,但通过特定操作可以实现堆栈的功能,例如使用递归函数调用。

堆栈是一种重要的数据结构,具有广泛的应用价值。通过对堆栈的学习和实践,可以更好地理解和应用计算机科学中的一些基本概念和技术。

内存

堆栈内存是计算机内存管理的一种方式,它用于存储局部变量、函数参数、返回地址等。堆栈内存由操作系统自动分配和回收,通常用于支持程序的递归调用和异常处理。

在堆栈内存中,栈底通常指向高地址,栈顶指向低地址。当一个函数被调用时,系统会在栈顶为其分配一个栈帧,用于存储该函数的局部变量、参数和返回地址等。当函数执行完毕时,系统会回收该栈帧,以便后续函数使用。

由于堆栈内存是后入先出(LIFO)的数据结构,因此在堆栈中存储的数据顺序与它们被压入栈的顺序相反。这种特性使得堆栈在处理递归调用和异常处理等场景下非常方便。

除了堆栈内存外,计算机内存还包括堆内存和静态内存等其他部分。堆内存用于动态分配内存空间,可以用于实现数据结构的动态增长和释放;静态内存则用于存储程序中的全局变量和静态变量等。

堆栈内存是计算机内存管理中的重要组成部分,它为程序提供了方便的函数调用机制和异常处理机制,使得程序更加高效和可靠。

逆向工程

逆向工程是通过分析一个产品或设备的组成,设计和功能等特征来理解和复制它的过程。这个过程通常涉及到分解、分析、重新设计和重组成新的模型或系统。逆向工程的目的通常包括以下几个方面:

  1. 复制和改进产品或设备的设计和功能。
  2. 理解并评估竞争对手的产品或设备的优点和劣势。
  3. 修复和改进老旧或损坏的产品或设备。
  4. 保护产品或设备的知识产权。

逆向工程主要分为以下几种类型:

  1. 反汇编:对软件进行分析,以了解其功能和操作方式。
  2. 反编译:将已编译的可执行文件转换为可读的源代码。
  3. 逆向设计:对物理产品进行分解和分析,并重新设计它们以改进其性能和功能。
  4. 反向工程:通过分析产品或系统的构成,了解其操作方式,以开发新产品或系统。

逆向工程在许多领域中都有应用,例如制造业、电子、计算机软件等,它可以帮助企业提高自身技术和创新能力。

逆向的学习方法

逆向工程是一种通过分析已有产品或代码,细节反向推导其设计、构造、功能、结构等信息,以理解其原理、优化其性能、改善其问题、甚至仿制其功能的技术。学习逆向工程需要掌握以下方法:

  1. 掌握基础知识:了解计算机原理、操作系统、编程语言等相关基础知识,打好理论基础。

  2. 实践操作:通过实践操作,熟练掌握逆向工具的使用,例如IDA Pro、OllyDbg、WinDbg等。

  3. 分析样本:对已有的程序或产品进行分析,理解其结构、功能、实现原理等。

  4. 学习反汇编:反汇编是逆向工程的核心方法之一,需要掌握反汇编的基本语法、指令集、调试技巧等。

  5. 学习调试技巧:需要掌握调试技巧,分析代码执行流程,找到程序的漏洞和安全问题。

  6. 学习破解技术:逆向工程的目的之一是破解,需要学习破解技术,了解常见的保护机制,例如加壳、加密等。

  7. 加强实践:学习逆向工程需要不断实践,通过逆向不同类型的程序和样本,不断提升自己的技能水平。

逆向工程是一门需要不断实践和学习的技术,需要投入足够的精力和时间来掌握。

学习逆向的书籍推荐

以下是学习逆向工程的书籍推荐:

1.《逆向工程核心原理》(英文原版名:Reversing: Secrets of Reverse Engineering)作者:Eldad Eilam

2.《逆向工程》(英文原版名:Practical Reverse Engineering)作者:Bruce Dang、Alexandre Gazet、Elias Bachaalany

3.《逆向工程实战》(英文原版名:Reverse Engineering for Beginners)作者:Dennis Yurichev

4.《逆向工程与程序分析》(英文原版名:Gray Hat Hacking: The Ethical Hacker’s Handbook, Fourth Edition)作者:Daniel Regalado、Shon Harris、Allen Harper等

5.《IDA Pro权威指南》(英文原版名:The IDA Pro Book)作者:Chris Eagle

逆向工程核心原理 介绍

《逆向工程核心原理》是一本与计算机逆向工程相关的书籍,主要涵盖了逆向工程的基本概念,技术流程和工具使用等方面。该书主要适用于对计算机逆向工程技术有一定了解并希望深入研究该领域的读者。此外,该书作者是业内知名的逆向工程专家之一,所以书中涵盖的内容比较权威和全面。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王嘟嘟_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值