- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在经过混淆的 .Net 程序上运行 Visual Studio 调试器。 (这是我自己的程序 - 我不是要破解别人的程序。)
当我使用“System.Diagnostics.Debugger.Break()”编译程序时,或者如果我将调试器附加到正在运行的进程,则调试器显示“无可用源”。我明白这一点 - 没有与程序的混淆版本相对应的源代码。但是当我单击“显示反汇编”时,它会显示一个带有“无反汇编可用”的反汇编窗口。
为什么?关于我可以做些什么来使反汇编工作的任何建议?
在调试选项下,我确实选中了“启用地址级调试”和“如果源不可用则显示反汇编”。
谢谢。
编辑
只是想多解释一下……
有问题的程序是我自己的程序,使用的混淆程序也是我自己的程序。混淆程序运行ILDAsm.exe,修改ILAsm代码,并运行ILAsm.exe。
我的混淆显然引入了问题,因此程序不再正常工作。要了解它如何/为什么不起作用,我想跟踪它。但出于某种原因,Visual Studio 调试器说“没有可用的反汇编”,然后我什么也做不了。 (当非混淆程序在 Visual Studio 下运行时,可以打开反汇编窗口并显示预期信息。只有混淆版本才会在 VS 调试器中产生此问题。)
编辑 2
一直无法找到我的问题的答案,但我现在确实有一种解决方法。
我已经安装了 WinDbg 并确认它可以附加到我的混淆程序,并且至少可以单步执行它并在反汇编窗口中显示当前执行位置。但我以前从未使用过 WinDbg,它看起来有点令人生畏。
我还遵循了在几个地方看到的将 sos.dll 加载到 WinDbg 中的建议。也许这会有所帮助。
但我猜我实际上最终会做的是在我的程序中围绕它不工作的地方抛出大量临时日志语句,并希望通过这种方式获得一些理解。
最佳答案
好吧,我偶然发现了我做错了什么。
正如我在我的问题的第一次编辑中提到的,我的混淆是通过运行 ILDAsm.exe,修改 ILAsm 语句,然后运行 ILAsm.exe 来完成的。事实证明,我在 ILAsm.exe 运行时缺少/Debug 选项。因此,即使我的 Visual Studio 构建是调试构建,运行时的 JIT 转换也是发布/优化转换。
通过在 ILAsm.exe 上指定/Debug 我得到一个 PDB 文件,当 Visual Studio 调试器连接到我的程序时,我得到 IL 源代码显示,如果我请求它,反汇编显示也是!所以现在一切都很好!
关于visual-studio - Visual Studio : No disassembly available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702324/
为什么调试我的 asp.net 网站时有时会弹出 disassembler/disassemly-window? 它有时会发生,但并非总是如此。我在互联网上搜索过,但没有找到有用的结果。例如:它发生在
所以,我一直在尝试编写一个模拟器,或者至少了解它是如何工作的。我对汇编有一定的了解,尤其是 z80 和 x86,但我从来没有真正理解目标文件(或者在我的例子中是 .gb ROM 文件)如何指示指令的开
我克隆了 riscv-tools 存储库(master 分支)并遵循了构建过程。一切顺利。 然后我尝试为 RV32IM 指令集编译 hello world 程序,这样做: riscv64-unknow
如何从内存转储中反汇编一些指令?我只有原始转储,objdump 只理解对象格式。 我的处理器是 PowerPC 440(PowerPC Book E 架构)。 最佳答案 事实上,objdump 可以很
有没有办法在linux下反汇编windows exe文件? 这会涉及 Wine 吗?如果是的话,是否有适用于 Linux 的 Windows 调试/反汇编程序? 这可以用 gdb 来完成吗? 谢谢。
我反汇编了这个基本的 C 代码,试图弄清楚是什么操作 在堆栈上完成。我在 vm,32 位,gcc 4.4.3,基于 ubuntu 上做 发行版。我用这个标志编译了代码。 gcc -ggdb -mpre
在调试其中一个汇编代码示例时,我发现了以下信息: (gdb) x /10i 0x4005c4 0x4005c4: push %rbp 0x4005c5: mov
我目前正在学习如何反汇编 Mach-O 二进制文件,并且我正在尝试弄清楚如何理解“符号表”(在加载命令 LC_SYMTAB 中)。 如何阅读/解释符号表及其条目?我不是 100%,但看起来每个条目都是
所以我正在尝试使用 Windows API (DbgEng.h/.lib)“反汇编”函数来查看模块中某个函数(我知道它已导出)的指令。但是....它返回了一个意外错误。 IDebugClient* c
我尝试了 .NET 反射器但没有运气。这是主要方式吗? 最佳答案 查看 .NET Reflector 的 BAML 查看器插件。 The plug-in. How to use it. 关于WPF/银
我有一个包含 ARM v8 二进制代码的文件。我想反汇编文件并获取其中包含的实际汇编代码。 假设文件名是 tmp.o 我运行: /opt/linaro/A64-tools/bin/aarch64-li
是否有脚本可用于对一些 objdump --disassemble 输出进行后期处理以使用循环计数进行注释?特别是对于 ARM 系列。 大多数情况下,这只是模式匹配与计数表查找。我猜可能需要像 +5M
是否有脚本可用于对一些 objdump --disassemble 输出进行后期处理以使用循环计数进行注释?特别是对于 ARM 系列。 大多数情况下,这只是模式匹配与计数表查找。我猜可能需要像 +5M
我想在经过混淆的 .Net 程序上运行 Visual Studio 调试器。 (这是我自己的程序 - 我不是要破解别人的程序。) 当我使用“System.Diagnostics.Debugger.Br
我对 C 编程很陌生,所以如果我的问题不是很清楚,我很抱歉,但我在 Visual Studio 中遇到了以下问题: 我正在尝试调试项目中的函数,但是当我在其中放置断点时,我收到以下消息 - "The
当我连续“步入”时,它会在不同的线程之间切换。 但是 Visual Studio 中是如何安排的,它如何知道为下一条指令激活哪个线程? 最佳答案 接下来运行哪个线程并不由 Visual Studio
dis 模块可以有效地用于将 Python 方法、函数和类反汇编为低级解释器指令。 我知道dis信息可以用于: 1. 在使用线程的程序中查找竞争条件 2.寻找可能的优化 根据您的经验,您是否知道 Di
[深呼吸。]我们有一个使用 WxMotif 2.6.3 弹出窗口的应用程序(GUI 库过去不是——现在也不是——我的选择)。它在 32 位 ix86 系统上运行良好。我的任务是将它转换为 64 位应用
x86 反汇编器如何知道在哪里分解指令? 我在看 8088指令系统。例如,移动指令有 7 种变化,范围从 2 到 4 个字节。指令本身似乎没有遵循特定的顺序。 Why is x86 ugly?的另一个
我正在开发一个项目,该项目使用汇编器模式将 LinqToEntity 实体组装成服务级别的数据传输对象,然后将其传递到客户端层以供使用。该方法是将实体对象转换为简化的平面对象,提供特定于服务调用的信息
我是一名优秀的程序员,十分优秀!