逆向工程的汇编语言[关闭]

2024-04-16

学习汇编应该选择NASM还是MASM?我想学习组装,动机是逆向工程。

这样当我反汇编一些可执行文件时,我可以通过查看反汇编代码来理解代码。

更新:我想我没有让自己清楚..我知道这些是汇编程序,但是要理解反汇编程序的输出,我需要了解汇编,这就是我问从哪里开始的原因(使用 MASM 或 NASM)


假设您想学习如何进行逆向工程在 Windows 上, 就是这样。 Linux 方式非常不同(尽管最终你或多或少会到达相同的地方):

您想从非常简单的东西开始,例如 8080 处理器。您可以在这里找到在线模拟器:http://www.tramm.li/i8080 http://www.tramm.li/i8080-- 这是一个名为“CP/M”的遗留操作系统。单击“Start EMU8080”链接——您将看到“SID”命令行——一个简单的古老调试器。它只有大约 10 个命令——浏览任意地址的内存、输入新的汇编命令等。输入 HELP 即可查看全部命令。如果需要,您可以尝试通过 google 搜索 SID 手册。然后谷歌搜索 8080 组装手册——你会发现一堆 PDF——它们都是 Intel 在 1970 年代编写的两本相同手册的副本。阅读这两本 — 它们将为您提供 808x CPU 基础知识的良好开端。PC 中使用的所有现代处理器均源自 8080。尝试使用 SID 和 8080,直到您觉得自己明白了。

下一步是 8086。 为此,您需要获取 Window XP 的副本并在命令行中运行 DEBUG 程序。 DEBUG 是微软对SID 的抄袭。一旦了解了SID,学习起来就会非常容易。文档在这里:http://thestarman.pcministry.com/asm/debug/debug.htm http://thestarman.pcministry.com/asm/debug/debug.htm-- 尽可能多地阅读,同时确保点击其他页面的链接 -- 同一站点包含大量有关基本 8086 编程的内容。如果到时候你已经内化了8080的使用手册,那么8086就会感觉超级简单。 (如果你跳过 8080/SID 阶段,一切都会感觉很奇怪,并且谜题将需要更多时间来解决,相信我。)

您可能还想玩http://ladsoft.tripod.com/grdb_debugger.html http://ladsoft.tripod.com/grdb_debugger.html-- DEBUG 的改进克隆,更易于使用。

下一步,获取 Peter Abel 撰写的一本名为“IBM PC 汇编语言和编程”的书——越旧的版本越好。你可以在亚马逊上以 1 美元左右的价格找到一个(我不是在开玩笑!)。阅读前 7 章。给自己安装一个名为“FASM”的汇编程序(忘记 MASM 和 NASM 废话)。阅读 FASM 文档。以 16 位实模式编写程序。您仍然可以在 Windows XP 命令行上运行它们。

下一步,阅读http://www.drpaulcarter.com/pcasm/ http://www.drpaulcarter.com/pcasm/-- 这将帮助您了解保护模式。然后阅读实际的 Intel 386 参考文档:http://www.logix.cz/michal/doc/i386/ http://www.logix.cz/michal/doc/i386/

然后买一本叫《逆向。逆向工程的秘密》的书。它相当蹩脚,但会给你一些关于接下来需要学习什么的想法。就像低级 Windows 编程(消息、处理程序等)

当你完成所有这些之后,才可以下载http://www.ollydbg.de/ http://www.ollydbg.de/并尝试玩它。确保获取版本 1.x,而不是 2.x。去 Youtube 找一些教程。欢迎您跳过这一步,但我可以保证您会感到沮丧,并且无法理解屏幕上看到的任何内容,除非您执行上述所有操作。

祝你好运。如果您有任何疑问,可以通过我的博客与我联系(链接位于我的个人资料页面上)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逆向工程的汇编语言[关闭] 的相关文章

随机推荐

  • bash 替换每行中的第一个字符

    我的文件如下所示 1 chrX 73833098 73834098 1 chrX 73889652 73890652 1 chrX 91194501 91195501 1 chrX 92000157 92001157 1 chrX 9210
  • 为什么导入的函数“作为”另一个名称保留其原始 __name__ ?

    Here from os path import exists as foo print foo name we get exists 为什么不 foo 哪个属性会给出 foo 您可以查看import foo as bar只是一个任务 你不
  • 有没有办法在不出现 PlatformNotSupportedException 的情况下读取响应标头?

    我正在为 ASP Net MVC 开发一个过滤器属性 当内容未被修改时 它将返回 304 响应 为了实现这一目标 能够读取控制器中设置的 Last Modified 标头值会很方便 似乎只是一个问题 在 Cassini Visual Stu
  • 我可以绕过 Windows 中 Statc 级联上下文菜单的 20 项限制(注册表项/子项)

    我正在为 Windows 中的 ImageMagick 创建详细的静态级联上下文菜单 一切似乎在功能方面都运行良好 直到我通过上下文菜单传递了 20 个项目 此后 单击命令将停止正常运行 项目也会消失 我知道这不是格式问题 因为我可以通过删
  • 为什么这个 .vimrc 映射在终端中不起作用(但在 MacVim 中起作用):map O

    我的 vimrc 文件中有两行 map
  • 使用Knockout将不同模型绑定到页面上的不同部分

    我在我的 asp net 应用程序中使用淘汰赛 javascript 库 对于淘汰赛我使用ko对象和应用绑定 方法来绑定它 现在我想将两个淘汰对象绑定到两个不同的用户界面部分 我如何使用第二个淘汰对象或第二个数据源 以便我可以在第二部分中使
  • Python:如何制作递归生成器函数

    我一直致力于为生物学问题生成所有可能的子模型 我有一个工作递归来生成我想要的所有子模型的大列表 然而 列表很快就会变得难以管理 在下面的示例中 N 12 是可能的 N gt 12 使用了太多内存 所以我想使用yield 将其转换为生成器函数
  • 如何注册音量变化通知?

    当 OS X 音量发生变化时 我需要通知我的应用程序 这适用于桌面应用程序 不适用于 iOS 我如何注册此通知 这可能有点棘手 因为某些音频设备支持主通道 但大多数不支持 因此音量将是每个通道的属性 根据您需要执行的操作 您可以仅观察一个通
  • 显示/隐藏 C# 控制台应用程序的控制台窗口

    我在谷歌上搜索了有关如何隐藏自己的控制台窗口的信息 令人惊讶的是 我能找到的唯一解决方案是涉及的 hacky 解决方案FindWindow 找到控制台窗口按其标题 我对 Windows API 进行了更深入的研究 发现有一种更好 更简单的方
  • 在 Core i7 Mac 上禁用睿频加速?

    有没有什么方法可以在运行 Mac OS X 的 Core i7 mac 上以编程方式禁用 Turbo Boost 我需要能够在代码优化等过程中出于基准测试目的执行此操作 如果做不到这一点 任何可以禁用 启用 Turbo Boost 的实用程
  • Mac 终端上的基本命令行不起作用

    我在尝试安装 mongodb 时更改了 bash 配置文件 但我的命令行均无法在终端上运行 我在网上读到我需要修复 PATH 但当我的命令都不起作用时我什至无法访问它 Help 错误地 我也遇到了同样的问题 要解决这个问题 我必须将 PAT
  • 生成随机布尔概率

    我只知道如何生成随机布尔值 真 假 默认概率为 50 50 但我怎样才能以自己的概率生成真假值呢 假设它返回 true 的概率为 40 60 或 20 80 等 一种方法是检查返回值Random Next 100 小于您期望的概率 但我无法
  • 在 Javascript 中根据 JSON 数据创建饼图

    我是 PHP 和 JavaScript 新手 我需要使用从 URL 获取的 JSON 数据创建一个饼图 JSON 数据是 Domain Artificial Intelligence Count 46 Domain Data Archite
  • Actionscript 内存管理、垃圾收集

    这个博客 http blogagic com 163 flex memory management and memory leaks varref 和其他人 指出 在清理对象时 您应该在 dispose 方法中将对象引用设置为 null 但
  • 人们可以放心地忽略宏和内置宏之间的区别吗?

    我从 Clojure 开始 这也是我的第一个 lisp 显然有很多东西需要吸收 为了减轻认知负担 我尝试找到我可以安全地忽略的部分 目前 人们能否安全地以相同的方式处理带有宏的表单和带有内置函数的表单 或者是否会出现以后出现的陷阱 换句话说
  • 修改现有表单值 - GetChoices() 不起作用

    为什么 getChoices https developers google com apps script reference forms list item getChoices 不适用于现有列表项 我有以下代码 它通过 ID 获取表单
  • Excel:如何使用数组连接 criteread 部分旁边的字符串(If 函数)

    今天是个好日子 我有一个 Excel 工作表 分为两列 如下所示 我知道如何使用带有 sum 的数组 if 函数来将满足条件的列旁边的所有值相加 如下所示 sum if A1 A5 YES B1 B5 但如何使用字符串进行操作并连接 以便它
  • AdMob 刷新请求

    我有几个令我困惑的问题 谁最负责广告刷新 加载请求后bannerView load GADRequest 让开发者或 Google 进行监控是最佳做法吗 刷新时间应该短至 30 秒还是至少 60 秒 他们建议 60 秒 但给你选择 30 秒
  • Azure 部署错误:找不到 ClientPerfCountersInstaller.exe

    我最近尝试在现有站点和部署上设置 Azure 预览缓存 但由于错误而不得不中止 但是从那时起 当我尝试部署到 Azure 时 我会收到以下错误 找不到名为的文件approot bin Microsoft WindowsAzure Cachi
  • 逆向工程的汇编语言[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi