什么是解包?如何成为专业的拆箱工?

逆向工程 开箱
2021-07-08 10:19:51

我在这个论坛上问了很多关于RE的问题,我是一个对逆向工程很感兴趣的初学者。(我正在用 Lena151 学习 RE)

  1. 什么是解包?
  2. 解压软件需要哪些工具?
  3. 反正有手动解包吗?
  4. 如何解包使用未知打包程序的软件?
  5. 有没有学习拆包0-100的教程?
  6. 如何在开箱中从零到英雄?

我想了解更多关于拆包的信息,所有让我成为专业人士的事情。

1个回答

这是一组非常广泛的问题......

我会尽量回答好,但是你问的问题太笼统了,我怕我不能回答所有的问题。

  1. 什么是拆包?

解包是移除恶意软件使用的保护层以达到其核心负载的操作。当恶意软件被打包后,一切看起来都乱七八糟,你无法真正看到(从静态的角度来看)有效载荷在做什么。尝试将其视为恶意软件周围的“盔甲”,仅在此处会减慢您的分析速度(并弄乱执行静态检测的 AV 产品)。如果您发现一个已打包的样本,除非您将其解压缩,否则您通常不知道该“保护”内的恶意软件是什么以及它在做什么。

  1. 解压软件需要哪些工具?

一个简单的调试器可以帮助您解压大多数打包程序。有时,您还会找到用于知名打包程序(独立的或与您的调试器甚至静态解包器兼容)的自动解包器脚本。有时打包程序是开源的,并且包含解包功能。您还有一些在线服务可以为您解包(想想 unpac[.]me)。

  1. 反正有手动解包吗?

是的。规则很简单:如果恶意软件正在运行(意味着它能够在运行时解压自身并执行其核心负载),您将始终能够跟踪所有内容并检查其行为。重要的不是“我可以手动完成吗”——答案只会是“是”,而是“我可以花多少时间在这上面?” 或者“复杂程度值得我花时间吗?”。

  1. 如何解包使用未知打包程序的软件?

稍加体验后,您会发现常见的封隔器的设计方式相同,使用的技术也相同。您总会不时发现一种新的巧妙技术,但其背后的理念将保持不变。如果你被一个未知的packer困住了,你可以试着找出哪个packer是这个样子的,区别在哪里。请记住,如果它运行,您可以随时转储解包的过程:) 您不必手动解包所有内容。

  1. 有没有学习拆包0-100的教程?

不,这太容易了。但是你可以找到一些关于如何解压 X 样本的教程。尝试重现它们。我个人的建议是学习如何通过跟随文章来解压受特定加壳程序保护的东西,然后搜索另一个使用相同加壳程序的恶意软件,然后单独完成。然后与另一个打包机重复。一段时间后,您会发现几乎每次都是同一件事。

  1. 如何在开箱中从零到英雄?

实践。一次又一次地练习。从一个简单的打包程序(开源的或广泛使用的)开始,然后慢慢提高级别。如果您遇到困难,请搜索一些文章。如果您真的遇到困难,请寻找更简单的方法。稍后你会回来讨论它。

一开始拆包可能会有点令人沮丧和耗时,但最终它会变得几乎是自动的。你只需要一次又一次地尝试。如果您从基本的打包恶意软件开始,那没关系。它将帮助您了解它的工作原理。然后与标准拆包过程的细微差异将变得明显。

一些资源: