问题标签 [disassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
249 浏览

assembly - 解释 Dhamdhere 教科书中玩具 ISA 的装配列表

考虑以下汇编器输出列表:

  1. 代码前的+号是什么意思?
  2. 为什么 ONE给定的地址001
  3. 为什么最后一条语句后面的条目RESULT DS 1留空?

此列表出现在 Dhamdhere的Systems Programming and Operating Systems中(编者注:由回答者发现)。

0 投票
2 回答
1362 浏览

reverse-engineering - 逆向工程旧油漆程序

我有几个非常老的基于 MSDos 的绘图程序。他们在调色板索引的图像缓冲区上工作。他们有许多壮观的形状绘制工具、画笔和效果,这些工具在任何现代绘画程序中都不存在——尤其是在停留在低调色板索引图像的“界限”内时。我想在一个现代程序中重现许多这些美妙的工具,也许让我和公众再次更容易使用它们,而不必启动像 dosbox 这样的模拟器。但我有一个问题。

虽然很多这些画笔和工具和东西都有明显的功能,但它们的实现应该相当简单。但是对于其他工具,它们的操作原理就不是那么明显了。我会被困在确定一个正确或忠实的算法来实现这些。

如果你是我,你会采取什么方法?是否有现成的反编译器/反汇编器可以处理这样的旧程序?或者你会采取一些不同的方法,比如有条不紊地测试不同输入的算法来推断底层函数?一些不同技术的组合?就这些程序中的一行而言,这些(商业)程序的原作者是众所周知的,现在是狂热的开源倡导者。我应该尝试直接联系他们并询问吗?我在逆向工程方面不是特别有经验,所以我不知道从哪里开始。

编辑:似乎“问,你会收到”确实有效。

编辑 2:查看http://animatorpro.org以获取我...获得源代码的程序的源代码。豪华油漆也不错,但丹席尔瓦似乎已经从地球上消失了。

0 投票
3 回答
1276 浏览

.net - 如何查看 .net JITer 生成的机器代码的反汇编?

如何查看 .net JITer 生成的机器代码的反汇编?显示反汇编窗口菜单选项在哪里找不到。甚至它的工具栏按钮也处于禁用状态。如果我没记错的话,确实可以看到拆卸,但必须使用一些技巧,不幸的是我不记得那个技巧是什么了。有人可以在这里提供一些指示吗?

调试环境:VS2008(我猜你可以在WinDbg和一些调试器扩展(SOS.dll?)中看到反汇编没有太大的痛苦,现在我认为VS2008也可能使用相同的dll让我检查并回复你。如果我错了,请随时纠正我。)

0 投票
3 回答
9550 浏览

c++ - 确定哪个编译器构建了 Win32 PE

如何确定使用哪个 C 或 C++ 编译器来构建特定的 Windows 可执行文件或 DLL?一些编译器在最终的可执行文件中留下了版本字符串,但这在 Windows 上似乎比在 Linux 上更罕见。

具体来说,我有兴趣区分 Visual C++ 和各种 MinGW 编译器(通常从函数签名相当容易),然后区分 Visual C++ 版本(6、2002/2003、2005、2008;更难做到)。有没有一种工具可以以半可靠的方式进行区分?

0 投票
4 回答
298 浏览

windows - 应用程序如何加载没有名称的 DLL?

我已经反汇编了一个调用 DLL 库中的函数的 VB6 应用程序,但是在反汇编中我找不到对 DLL 的任何引用。调用代码如何加载这个 DLL?它是动态链接的,因为我可以观察到删除和替换 DLL 的效果。

我使用的是 IDA Pro Free,调用应用程序是一个 VB6 应用程序,而 DLL 是一个普通的 Win32 DLL,我怀疑它是使用 C 或 C++ 创建的。

0 投票
14 回答
107858 浏览

c++ - 如何查看 C++ 程序的汇编代码?

如何查看 C++ 程序的汇编代码?

有哪些流行的工具可以做到这一点?

0 投票
3 回答
2323 浏览

c# - 有没有好的 VB/C# x86 反汇编库?

我正在寻找一个库,它将 x86 代码反汇编成某种对象模型,然后我可以使用它来编写分析代码的例程。我对将 x86 代码转换为文本反汇编的库不感兴趣——我发现其中不止一些,但它们并不是那么有用,因为我想在我反汇编的代码之上做一些工作. 哦,我希望它是 .Net 代码(最好是 VB 或 C#)。

0 投票
2 回答
609 浏览

c# - 反射器和自动属性的问题

我刚刚反汇编了一个项目以使用Reflector对其进行调试,但它似乎不愿解码自动属性的“编译结果”,例如下一行给了我一个语法错误。我试过手动修复这些,但每次我修复一个,都会出现更多。

对此我能做些什么吗?

0 投票
5 回答
26088 浏览

x86 - 如何编写反汇编程序?

我有兴趣将 x86 dissembler 编写为一个教育项目。

我找到的唯一真正的资源是 Spiral Space 的“如何编写反汇编程序”。虽然这对反汇编程序的各种组件进行了很好的高级描述,但我对一些更详细的资源感兴趣。我还快速浏览了NASM 的源代码,但这有点值得学习。

我意识到这个项目的主要挑战之一是我将不得不处理相当大的 x86 指令集。我也对基本结构、基本反汇编链接等感兴趣。

任何人都可以向我指出有关编写 x86 反汇编程序的任何详细资源吗?

0 投票
13 回答
2911 浏览

reflector - 为什么人们要反汇编 .NET (CLR) 二进制文件?

我对 .NET 有点陌生,但对编程并不陌生,而且我对反汇编已编译的 .NET 代码的趋势和兴奋感到有些困惑。似乎毫无意义。

.NET 的高级易用性是我使用它的原因。我在资源有限的环境中编写了 C 和真实(硬件处理器)程序集。这就是为什么要在如此多的细节上花费精力,以提高效率。在 .NET 领域,如果您浪费时间深入研究实现的最隐秘的细节,这有点违背了拥有高级面向对象语言的目的。在使用 .NET 的过程中,我调试了常见的性能问题和奇怪的竞争条件,我通过阅读自己的源代码完成了这一切,从来没有想过编译器正在生成什么中间语言。例如,考虑到 foreach() 将使用枚举,很明显 for(;;) 循环将比数组上的 foreach() 更快对象带有一个方法调用来前进到下一次,而不是简单地增加一个变量,这很容易通过一个紧密的循环运行几百万次来证明(不需要反汇编)。

真正让反汇编 IL 变得愚蠢的是它不是真正的机器代码。是虚拟机代码。我听说有些人实际上喜欢移动指令来优化它。你在开玩笑吧?即时编译的虚拟机代码甚至无法以本机编译代码的速度执行简单的紧 for(;;) 循环。如果您想从处理器中挤出最后一个周期,那么请使用 C/C++ 并花时间学习真正的汇编。这样一来,您花在了解许多低级细节上的时间实际上是值得的。

那么,除了手头有太多时间之外,人们为什么还要反汇编 .NET (CLR) 二进制文件呢?