问题标签 [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 回答
15081 浏览

gcc - 在编译过程中如何查看解析树、中间代码、优化代码和汇编代码?

我正在学习编译器课程,程序编译遵循以下步骤

  1. 词法分析
  2. 语法分析
  3. 语义分析
  4. 中间代码生成
  5. 代码优化
  6. 目标代码生成。

如何查看每个步骤的输出,例如我想在语法分析后查看解析树。

我正在使用 GCC 编译器在 Linux 机器上编译程序。

我们可以使用 gcc 中的 -Wa 编译器选项查看程序的汇编代码,同样有查看 Tokens、Parse tree 和 Inetmediate 代码的选项。

0 投票
3 回答
1527 浏览

assembly - 你能帮忙看看这个汇编语言代码吗?

我一直在查看我试图“改进”的一段电脑游戏代码。(好吧,也许我对游戏很烂,但我仍然想玩)。您能否查看以下代码:

此代码每秒调用一次,用于关卡倒计时。我需要在一个特定的水平上停留几分钟。如果我可以修改上面的代码,使推入地址 [ebp+00007B1C] 的值为 0,那么游戏关卡将永远超时,这样我就可以不用玩那些疯狂的“生存”小游戏了。

我将解释我从这段代码中理解的内容。不用担心,您不必深入研究。第一行中,我们得到计时器值。例如,如果还剩 97 秒,则在此处加载此值。
第二行中,从 97 中减去一个值(1 秒)。
第三行中,96 再次移动到内存中。最后我们有一个函数调用,它将根据剩余时间进行其他处理。

现在我需要做的就是以某种方式修补这段代码,以便推送的值为 0(在第三步中)。
你能帮我解决这个问题吗?

0 投票
6 回答
3857 浏览

c# - 最简单的代码破解

我有以下代码:

我需要一个反编译或反汇编工具,它可以通过执行以下列出的步骤来帮助我找到“TheCorrectSerialNumber”。所以步骤是:

  1. 反编译或反汇编我的代码的可执行文件
  2. 运行 exe,输入的不是正确的序列号,而是“AAA”之类的内容</li>
  3. 找到我的“AAA”和正在比较的字符串,最后找出“TheCorrectSerialNumber”。

还请向我提供您建议的工具如何执行上述步骤的说明。

非常感谢!!!

注意:对于那些倾向于认为我想破解某人的密码的人!首先看看我在这个问题之前和之后提出的问题。我是一名程序员,我需要关注我的代码安全性。因此,我决定破解我的代码并对其他代码进行一些练习(在教授破解的网站上有一堆旨在破解的软件)以了解如何提供安全代码。如果您知道人们如何破解,您可能会创建比不知道的人更安全的代码。如果您要研究如何破解,则必须尝试。这就是我的观点!

0 投票
2 回答
479 浏览

disassembly - .Net Reflector 红色和绿色方块

什么是绿色方块和红色方块?这些变量名和字符串是否被故意混淆?有“反混淆器”吗?

0 投票
2 回答
374 浏览

.net - 是否可以使用像 Reflector 这样的反汇编程序来查看成员变量的硬编码值?

鉴于下面的示例源代码,是否有人可以看到_secret使用反汇编程序的价值?我没有看到通过 Reflector 获得价值的方法,但我并没有经常使用它。假设代码没有以任何方式混淆。

谢谢!

0 投票
1 回答
996 浏览

assembly - 其中进行新手拆解查询

我相对(阅读:愚蠢的新手)熟悉反汇编,但这有点难倒我:我有一组用 zlib 压缩的保存文件和一个加载它们的游戏。它们的结构是已知的,一旦加载,内存中的结构与它们对应的保存文件相同。问题是游戏是用一种倒退的、纯脚本语言编写的,不知何故设法不留下静态指针。完全没有。几十个人尝试过,看似静态的指针路径在同一台机器上进行微小更改后会中断。一个简单的解决方案是在进程的内存中搜索文件的内容,但这是一个非常暴力的解决方案,我宁愿避免出于教育目的。

问题:

  • 我正在尝试使用 OllyDBG。我对此很糟糕,但仍然设法制作了一些实际有效的微不足道的codecave。我是在使用正确的工具来完成这项工作还是我是一个愚蠢的新手?现代反向器的工具包中有哪些工具?
  • 在相关的说明中,我不得不求助于使用作弊引擎(或其表亲 MHS)进行内存搜索。这似乎有点违反直觉。OllyDBG 是否真的让您无法搜索值和优化结果,或者我错过了什么?
  • 如何在 WINAPI 上设置断点?见鬼,WINAPI 在汇编级别是什么样子的?这是我没有设法找到任何像样的信息的东西,我很确定谷歌有足够的信息,但我似乎无法输入正确的单词。
  • 扩展上述内容,如何设置动态断点?如果我对特定的、经常调用的函数感兴趣,但前提是此时 EAX 等于特定值,我将如何让 Olly(或其他任何东西)在这种情况下中断?
  • 任何关于反汇编或以破坏事物为导向的低级编程的一般书籍/建议/资源。

免责声明:有问题的游戏是免费软件,单人游戏,作者不反对,该项目旨在扩展功能。也是第一篇文章,希望我没有摸索太严重。:(

0 投票
4 回答
574 浏览

c++ - 在哪种情况下,调试时使用反汇编语言很有用

我有以下基本问题:

  • 当我们应该在调试中涉及反汇编时

  • 如何解释反汇编,例如下面每个段代表什么

语言:C++

平台:视窗

0 投票
3 回答
486 浏览

.net - 部分反汇编 .net 可执行文件

我需要编写一个相对较小的程序来解析 .net 可执行文件并生成对外部方法的调用列表。例如,如果System.Console.WriteLine在文件中调用该工具应该打印在System.Console.WriteLine某处调用的。我不能(有限的大脑和时间)也不需要(我只需要一个调用列表)实现真正的反汇编。我想要一个grep 友好的 perl 友好的相对较短的解决方案,它写入调用的函数的名称和调用发生的偏移量。

我已经尝试过的事情:

  1. 从 MSDN 下载规范。现在我知道静态调用被翻译成0x28字节码。:) 后面是方法描述符,但理解方法描述符的含义可能需要阅读整个规范。

  2. 在 Reflector 中打开简单的 exe。Reflector 精确地复制了我的原始应用程序的代码,但我看不到调用的字节码。

是否可以用有限的时间和知识实现所需的有限功能?

如果是这样,我知道如何实施它?是否有任何“CIL 傻瓜组装”指南?

0 投票
1 回答
8120 浏览

assembly - 使用 gdb 调试反汇编的库

在 Linux 和 Mac OS XI 中可以使用 stepi 和 nexti 来调试应用程序而无需调试信息。

在 Mac OS X 上,gdb 显示了在库中调用的函数,尽管有时会在每个 stepi 指令中推进几条汇编指令。

在 Linux 上,当我踏入动态库时,gdb 会迷路。例如,对于 puts(),puts() 中有三个汇编指令,一旦 gdb 到达 0x080482bf 处的跳转,它就会失败并显示消息“No function contains program counter for selected frame”。

你知道如何用 gdb 调试这些库调用吗?

0 投票
3 回答
1288 浏览

foxpro - 如何避免我的 VisualFoxPro 的 EXE 文件被反汇编

我尝试了 refox,看看我的 EXE 是多么容易被拆卸。refox 提供了一项功能,他们保证没有人可以拆卸。但是,还有其他选择吗?