gpt4 book ai didi

security - 自验证二进制文件?

转载 作者:行者123 更新时间:2023-12-02 22:12:53 25 4
gpt4 key购买 nike

我的问题非常简单:您是一个输出“授予访问权限”或“拒绝访问”的可执行文件,邪恶的人试图理解您的算法或修补您的内部结构,以使您始终说“授予访问权限” 。

经过此介绍,您可能会非常想知道我在做什么。暗黑破坏神3发布后他会破解它吗?我可以消除你的忧虑,我不是那些傻瓜之一。我的目标是破解。

Crackmes 可以在 - 例如 - www.crackmes.de 上找到。 Crackme 是一个小型可执行文件,(大多数情况下)包含一个小型算法来验证序列号并根据序列号输出“授予访问权限”或“拒绝访问”。目标是使该可执行输出始终“授予访问权限”。您可以使用的方法可能受到作者的限制 - 不能打补丁,不能反汇编 - 或者涉及您可以使用二进制、objdump 和十六进制编辑器执行的任何操作。破解crackmes 无疑是乐趣的一部分,但是,作为一名程序员,我想知道如何创建困难的crackme。

基本上,我认为crackme由两大部分组成:一定的串口验证和周边代码。

仅使用汇编使串行验证难以跟踪是很有可能的,例如,我有想法将串行作为模拟微处理器的输入,该微处理器必须最终处于某种状态才能使串行被接受。另一方面,人们可能会变得便宜并了解更多有关保护这部分的加密方式的强大方法。因此,让攻击者尝试修补可执行文件的难度不应该是很难。

但是,更困难的部分是保护二进制文件。让我们假设一个完全安全的序列验证,无法以某种方式逆转(当然我知道它可以逆转,有疑问,你从尝试破解的二进制文件中撕下部分,并向其抛出随机序列,直到它接受为止)。我们如何防止攻击者覆盖二进制文件中的跳转以使我们的二进制文件接受任何内容?

我一直在这个主题上进行一些搜索,但大多数关于二进制安全性、自验证二进制文件等的结果最终都出现在试图防止使用受损二进制文件对操作系统进行攻击的文章中。通过签署某些二进制文件并使用内核验证这些签名。

我目前的想法包括:

  • 检查二进制文件中要跳转的显式位置。
  • 对二进制文件的各个部分进行校验和,并将运行时计算的校验和与这些部分进行比较。
  • 对代码中的函数进行积极和消极的运行时检查。对串行验证有副作用。 :)

您能想出更多方法来更长时间地骚扰可能的攻击者吗? (当然,你不能永远让他远离,总有一天,所有检查都会被破坏,除非你能够通过在程序本身中嵌入程序的正确校验和来破坏校验和生成器,呵呵)

最佳答案

您正在了解“防逆向技术”。这基本上是一门艺术。更糟糕的是,即使你踩死新手,olly和IDA Pro都有“防反倒车插件”,他们可以下载并绕过你的很多反制措施。

对策包括通过陷阱调试器 API 进行调试器检测,或检测“单步执行”。您可以插入代码,在检测到调试器中断后,该代码会继续运行,但在程序中稍后会在随机时间开始运行。这确实是一场猫捉老鼠的游戏,破解者占据了显着的上风。

查看... http://www.openrce.org/reference_library/anti_reversing - 一些现有的内容。

http://www.amazon.com/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817/ - 这本书提供了非常好的防逆向信息并逐步介绍了这些技术。如果您总体上正在了解逆向,那么这是一个很好的起点。

关于security - 自验证二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/99999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com