就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
9年前关闭。
作为程序员,我们都编写了一个非常酷的程序或以有趣的方式拼凑一些硬件来解决问题。今天我在思考这些 hack 以及它们中的一些是如何被现代技术弃用的(例如,您不再需要 hack 您的 Tivo 来添加网络端口)。在软件世界中,我们现在认为在网页上拖放之类的事情是理所当然的,但不久前这也是一个非常令人兴奋的黑客攻击。
我见过的最巧妙的硬件黑客之一是几年前由一家电信公司的前同事完成的。他的办公室里有一台小型可移植电视,他会在工作时整天看它。为了摆脱它,他将一个开关连接到通过他 table 底下的脚启动的开/关。
您个人见过或做过的最酷的硬件或软件黑客攻击是什么?你现在在做什么黑客?
最佳答案
我记得这个 hack 是 Bob Smith 写的,他做了一个名为 386MAX(或“386 to the Max”)的旧 DOS 时代内存管理器。它不是产品的一部分,而是一个他制作并张贴在某处的小实用程序。然而,在网络上,我能找到的对这项技术的唯一引用是 DDJ Undocumented Corner来自 November 1996 的专栏通过罗伯特柯林斯。
问题
在英特尔推出 CPUID instruction 之前,很难检查系统上 CPU 的确切类型和修订级别。事实证明,在 386 及更高版本的大多数版本中,实际上有一个 CPU ID,但它仅在特定时间可见:就在处理器在 EDX 寄存器中重置之后。 (假设计算机的 BIOS 将是唯一合法对此感兴趣的软件)。
问题:如果我们不是 BIOS,普通程序如何检索这个寄存器值?
背景 Material
这种黑客攻击依赖于 IBM PC 兼容计算机的六个不同特性。它们如下:
该程序结合了所有这些琐事的知识来实现目标。
黑客
结果是一个 DOS 命令行程序,它执行以下操作:
当软重启发生时,处理器会尝试跳转到内存顶部减去 16 个字节,这是 ROM 启动代码所在的位置。但是,由于 A20 关闭,它实际上会跳到内存顶部减去 16 字节减去 1 兆字节。在大多数 PC 上,那里没有 RAM。所以它会从这个不存在的 RAM 中获取一系列 0xFF 字节,并尝试执行它。这将创建非法操作码异常。
然后,他的异常处理程序会取出 EDX(CPUID)的值并将其存放在他可以找到的地方。然后它会清理困惑(重新打开 A20,从保护模式返回到 DOS 的实模式)并将控制权返回给原始代码。
当它奏效时,简直是天才。瞧,这是一个简单的命令行 DOS 程序,可以为您提供 CPUID 值。
当然,不可避免地会有一些“不太兼容”的 PC,当你运行它时会严重崩溃。呃,好吧。
关于hardware - 你见过或做过的最酷的黑客攻击是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192479/