问题标签 [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 投票
8 回答
1960 浏览

memory-management - 为什么每次都从同一个内存地址执行一个函数?

我正在反汇编一个可执行文件:

每次内存地址都是一样的:0x004012d0.

内存地址不是由操作系统动态分配的吗?

更新

现在我看到它是虚拟空间,它可以在某些平台上随机化。

有人可以发布一个改变的 gdb 转储吗?

0 投票
6 回答
1842 浏览

c - * address(found in printf) 在汇编中是什么意思?

拆卸printf并没有提供太多信息:

它是如何在幕后实现的?

为什么拆机没有用?

之前是什么*意思0x405130

0 投票
2 回答
1370 浏览

assembly - 汇编程序中的 Printf 不打印

我有一个使用缓冲区溢出来破解程序的作业(通过反汇编,程序是用 C++ 编写的,我没有源代码)。我已经解决了它,但我有一个问题。我必须在屏幕上打印一些消息,所以我找到了 printf 函数的地址、堆栈上的“HACKED”地址和“%s”地址(按此顺序)并调用了该函数。调用的代码顺利通过,但没有打印任何内容。

我试图模拟程序中其他地方的环境,但一定有问题。你知道我做错了什么,我没有输出吗?非常感谢

编辑:

该程序在 Windows XP SP3 32b 上运行,用 C++ 编写,Intel asm

有“黑客”代码

程序开始:

这段代码真的很难看,因为我是汇编程序的新手,而且由于缓冲区溢出错误,不能有空字节

0 投票
6 回答
10054 浏览

c# - 在 C# 编译的 exe 中修改嵌入字符串

我有一个问题,我需要能够拥有一个已编译的 exe ( .net 3.5 c# ),我将复制它以分发,例如在发送 exe 之前需要更改密钥。

每次需要新的 exe 时我都无法编译。这是一个瘦客户端,将用作注册过程的一部分。

是否可以使用空白值向资源文件添加一个条目,然后当请求进入时,让另一个应用程序获取空白的默认瘦客户端,复制它,用所需的数据填充空白值。

如果是怎么办?如果没有,你有什么想法吗?几天来,我一直在摸不着头脑,并且由于我需要工作的界限而受到限制。

我的另一个想法是将值注入一个方法,我什至不知道我会如何尝试。

谢谢。

0 投票
1 回答
317 浏览

c - gcc/persistence 的优化标志 gcc/C 的变化

只是好奇。在 Ubuntu 9.10 下使用 gcc/gdb。

读一本 C 书,也经常给出目标文件的反汇编。一月份看的时候,我的拆解看起来很像书的;现在,它完全不同了——可能更优化了(我注意到现在汇编代码中有一些重新排列,至少在我检查的文件中,看起来优化了)。我在第一次和第二次读取之间使用了优化选项 -O1 - -O3 用于 gcc,但不是在第一次读取之前。

(1) 优化选项的使用是否持久,也就是说,如果你使用它们一次,你会一直使用它们直到关闭它们?那会很奇怪(浏览了 man 文件,至少没有看到任何类似的东西)。在不太可能的情况下,它是真的,你如何关闭它们?

(2) gcc 的程序集是否因最近的升级而改变?

(3) 尽管选择了相同的编译选项,gcc 是否有时会产生(显着)不同的汇编代码?

非常感谢。

0 投票
2 回答
2043 浏览

gdb - GDB 问题 - 我如何逐行浏览反汇编代码?

我想逐行查看老师给我的二进制文件,以检查堆栈上的地址和不同寄存器的内容,但是我对使用gdb不是很熟悉。虽然我有 C 代码,但我们应该完全从二进制文件中工作。以下是我到目前为止使用的命令:

这给了我这个信息:

然后我使用:

这给了我所有的程序集。我想设置一个断点并使用“下一个”命令,但我尝试过的命令都不起作用。有人知道我会使用的语法吗?

0 投票
1 回答
256 浏览

gdb - GDB disas 关于地址值的问题

我正在使用我在 gdb 中拒绝的二进制文件。现在我只是在检查一个函数的返回值。

显示的地址是函数中存储 ret 的地址吗?还是只是返回 ret 值的指令地址?

0 投票
1 回答
3967 浏览

c - 反汇编 Microsoft Visual Studio 2003 编译器输出

我从 Microsoft Visual Studio 2003 工具输出的目标文件中看到了我认为奇怪的行为。该file实用程序告诉我:

对于汇编程序创建的对象,但对于来自 C 文件的对象,我得到的只是:

使用 Microsoft 的dumpbin实用程序和objdump我从 cygwin 获得的工具,我可以反汇编程序集构建的文件,但是对于 C 构建的文件,我从这两个实用程序都没有得到有用的结果。

我有几个与此差异相关的问题:

  1. MSVC2003 编译器生成的目标文件格式是什么?
  2. 如何反汇编该目标文件?

我对使用 AT&T 语法进行反汇编特别感兴趣 - 我正在移植一个大型源代码库以使其与 GCC 一起工作,我想将此方法用作一些内联汇编例程的快捷方式项目。

编辑:添加更多信息。

当我dumpbin在其中一个文件上运行时,没有结果:

随着objdump,它给出:

在从程序集构建的文件上,我得到了合理的结果。

再次编辑:添加命令行信息。

汇编文件是使用类似于以下内容的命令行构建的:

ml自行执行时说:

C 文件是使用以下命令构建的:

有一些-Iand-D选项传递给ml和 to cl,但为了简洁起见,我在这里省略了它们。此处描述了这些cl选项。

0 投票
1 回答
3590 浏览

xcode - Xcode中的反汇编程序?

我正在做一个项目,在没有 Xcode 的机器上,我遇到了崩溃。(当然它适用于我的机器 B-/)我有一个崩溃日志,其中包含崩溃的 PC 偏移量。我希望能够看到代码中的实际位置。我知道 Code Warrior 可以反汇编代码(大概只有可调试的代码)并显示它与 C 代码穿插,然后我只需要寻找那个地址,我就完成了。

在 Xcode 中是否有一种简单的方法可以做到这一点?

谢谢。

0 投票
4 回答
2371 浏览

windows - Windows反汇编程序:寻找工具

我正在寻找一种(最好是免费的)工具,它可以从(非.NET)Windows PE 文件(*.exe 或 *.dll)生成“正确的”反汇编列表。

重要要求:应该可以通过 Windows 汇编程序(nasm、masm 或其他)运行清单并再次获得工作 exe(不一定与原来的相同,但它应该以相同的方式运行)。

预期用途是在源不可用时将新子例程添加到现有代码中。

理想情况下,工具应该能够检测函数/段边界、API 调用,并为跳转生成适当的标签(不过,我可以在没有循环/跳转标签的情况下生活,但函数边界检测会很好),并保留程序资源/段到位。

我已经知道 IdaPRO(不是免费的),OllyDBG(对就地黑客有用,不生成反汇编列表,AFAIK),ndisasm(输出不适合汇编程序),dumpbin(有用,但 AFAIK,输出不适用于汇编程序)和“代理 dll”技术。

想法?或者也许有一本书/教程解释了某种替代方法?