问题标签 [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.
memory-management - 为什么每次都从同一个内存地址执行一个函数?
我正在反汇编一个可执行文件:
每次内存地址都是一样的:0x004012d0
.
内存地址不是由操作系统动态分配的吗?
更新
现在我看到它是虚拟空间,它可以在某些平台上随机化。
有人可以发布一个改变的 gdb 转储吗?
c - * address(found in printf) 在汇编中是什么意思?
拆卸printf
并没有提供太多信息:
它是如何在幕后实现的?
为什么拆机没有用?
之前是什么*
意思0x405130
?
assembly - 汇编程序中的 Printf 不打印
我有一个使用缓冲区溢出来破解程序的作业(通过反汇编,程序是用 C++ 编写的,我没有源代码)。我已经解决了它,但我有一个问题。我必须在屏幕上打印一些消息,所以我找到了 printf 函数的地址、堆栈上的“HACKED”地址和“%s”地址(按此顺序)并调用了该函数。调用的代码顺利通过,但没有打印任何内容。
我试图模拟程序中其他地方的环境,但一定有问题。你知道我做错了什么,我没有输出吗?非常感谢
编辑:
该程序在 Windows XP SP3 32b 上运行,用 C++ 编写,Intel asm
有“黑客”代码
程序开始:
这段代码真的很难看,因为我是汇编程序的新手,而且由于缓冲区溢出错误,不能有空字节
c# - 在 C# 编译的 exe 中修改嵌入字符串
我有一个问题,我需要能够拥有一个已编译的 exe ( .net 3.5 c# ),我将复制它以分发,例如在发送 exe 之前需要更改密钥。
每次需要新的 exe 时我都无法编译。这是一个瘦客户端,将用作注册过程的一部分。
是否可以使用空白值向资源文件添加一个条目,然后当请求进入时,让另一个应用程序获取空白的默认瘦客户端,复制它,用所需的数据填充空白值。
如果是怎么办?如果没有,你有什么想法吗?几天来,我一直在摸不着头脑,并且由于我需要工作的界限而受到限制。
我的另一个想法是将值注入一个方法,我什至不知道我会如何尝试。
谢谢。
c - gcc/persistence 的优化标志 gcc/C 的变化
只是好奇。在 Ubuntu 9.10 下使用 gcc/gdb。
读一本 C 书,也经常给出目标文件的反汇编。一月份看的时候,我的拆解看起来很像书的;现在,它完全不同了——可能更优化了(我注意到现在汇编代码中有一些重新排列,至少在我检查的文件中,看起来优化了)。我在第一次和第二次读取之间使用了优化选项 -O1 - -O3 用于 gcc,但不是在第一次读取之前。
(1) 优化选项的使用是否持久,也就是说,如果你使用它们一次,你会一直使用它们直到关闭它们?那会很奇怪(浏览了 man 文件,至少没有看到任何类似的东西)。在不太可能的情况下,它是真的,你如何关闭它们?
(2) gcc 的程序集是否因最近的升级而改变?
(3) 尽管选择了相同的编译选项,gcc 是否有时会产生(显着)不同的汇编代码?
非常感谢。
gdb - GDB 问题 - 我如何逐行浏览反汇编代码?
我想逐行查看老师给我的二进制文件,以检查堆栈上的地址和不同寄存器的内容,但是我对使用gdb不是很熟悉。虽然我有 C 代码,但我们应该完全从二进制文件中工作。以下是我到目前为止使用的命令:
这给了我这个信息:
然后我使用:
这给了我所有的程序集。我想设置一个断点并使用“下一个”命令,但我尝试过的命令都不起作用。有人知道我会使用的语法吗?
gdb - GDB disas 关于地址值的问题
我正在使用我在 gdb 中拒绝的二进制文件。现在我只是在检查一个函数的返回值。
显示的地址是函数中存储 ret 的地址吗?还是只是返回 ret 值的指令地址?
c - 反汇编 Microsoft Visual Studio 2003 编译器输出
我从 Microsoft Visual Studio 2003 工具输出的目标文件中看到了我认为奇怪的行为。该file
实用程序告诉我:
对于汇编程序创建的对象,但对于来自 C 文件的对象,我得到的只是:
使用 Microsoft 的dumpbin
实用程序和objdump
我从 cygwin 获得的工具,我可以反汇编程序集构建的文件,但是对于 C 构建的文件,我从这两个实用程序都没有得到有用的结果。
我有几个与此差异相关的问题:
- MSVC2003 编译器生成的目标文件格式是什么?
- 如何反汇编该目标文件?
我对使用 AT&T 语法进行反汇编特别感兴趣 - 我正在移植一个大型源代码库以使其与 GCC 一起工作,我想将此方法用作一些内联汇编例程的快捷方式项目。
编辑:添加更多信息。
当我dumpbin
在其中一个文件上运行时,没有结果:
随着objdump
,它给出:
在从程序集构建的文件上,我得到了合理的结果。
再次编辑:添加命令行信息。
汇编文件是使用类似于以下内容的命令行构建的:
ml
自行执行时说:
C 文件是使用以下命令构建的:
有一些-I
and-D
选项传递给ml
和 to cl
,但为了简洁起见,我在这里省略了它们。此处描述了这些cl
选项。
xcode - Xcode中的反汇编程序?
我正在做一个项目,在没有 Xcode 的机器上,我遇到了崩溃。(当然它适用于我的机器 B-/)我有一个崩溃日志,其中包含崩溃的 PC 偏移量。我希望能够看到代码中的实际位置。我知道 Code Warrior 可以反汇编代码(大概只有可调试的代码)并显示它与 C 代码穿插,然后我只需要寻找那个地址,我就完成了。
在 Xcode 中是否有一种简单的方法可以做到这一点?
谢谢。
windows - Windows反汇编程序:寻找工具
我正在寻找一种(最好是免费的)工具,它可以从(非.NET)Windows PE 文件(*.exe 或 *.dll)生成“正确的”反汇编列表。
重要要求:应该可以通过 Windows 汇编程序(nasm、masm 或其他)运行清单并再次获得工作 exe(不一定与原来的相同,但它应该以相同的方式运行)。
预期用途是在源不可用时将新子例程添加到现有代码中。
理想情况下,工具应该能够检测函数/段边界、API 调用,并为跳转生成适当的标签(不过,我可以在没有循环/跳转标签的情况下生活,但函数边界检测会很好),并保留程序资源/段到位。
我已经知道 IdaPRO(不是免费的),OllyDBG(对就地黑客有用,不生成反汇编列表,AFAIK),ndisasm(输出不适合汇编程序),dumpbin(有用,但 AFAIK,输出不适用于汇编程序)和“代理 dll”技术。
想法?或者也许有一本书/教程解释了某种替代方法?