GVKun编程网logo

是否有用于Java的反汇编程序+调试器(用于汇编程序的ala OllyDbg / SoftICE)?

20

如果您对是否有用于Java的反汇编程序+调试器感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于是否有用于Java的反汇编程序+调试器的详细内容,我们还将为您解答用于汇编程序的

如果您对是否有用于Java的反汇编程序+调试器感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于是否有用于Java的反汇编程序+调试器的详细内容,我们还将为您解答用于汇编程序的ala OllyDbg / SoftICE?的相关问题,并且为您提供关于assembly – Windows汇编程序和汇编程序编译器的指南、c# – 为什么我调试asp.net网站时会弹出反汇编/反汇编窗口?、C++中的反汇编技术与调试、flash – 是否有用于构建AIR应用程序的免费工具?的有价值信息。

本文目录一览:

是否有用于Java的反汇编程序+调试器(用于汇编程序的ala OllyDbg / SoftICE)?

是否有用于Java的反汇编程序+调试器(用于汇编程序的ala OllyDbg / SoftICE)?

是否有类似于Java的OllyDbg / SoftICE的实用程序?即执行类(从jar
/具有类路径),并且没有源代码,显示了中间代码的反汇编,能够逐步执行/遍历/搜索引用/在内存中编辑特定的中间代码/将编辑应用于文件。 。

如果不是,甚至有可能编写类似这样的内容(假设我们愿意在调试期间没有热点的情况下生存)?

编辑:我不是在谈论JAD或JD或Cavaj。这些是很好的反编译器,但是由于几个原因,我不希望反编译器,最值得注意的是它们的输出不正确(充其量有时是完全错误的)。我不是在寻找神奇的“将字节编译为Java代码”-我想查看将要执行的实际字节。另外,我希望能够更改这些字节(就像在程序集调试器中一样),并希望将更改后的部分写回到类文件中。

Edit2:我知道javap存在-但是它只是一种方式(并且没有任何种类的分析)。示例(代码摘自vmspec文档):从Java代码中,我们使用“
javac”进行编译:

void setIt(int value) {    i = value;}int getIt() {    return i;}

到一个Java .class文件。使用javap -c可以得到以下输出:

    Method void setIt(int)   0    aload_0   1    iload_1   2    putfield #4   5    return    Method int getIt()   0    aload_0   1    getfield #4   4    ireturn

这对于反汇编部分是可以的(如果没有分析,效果不是很好-“字段#4是Example.i”),但是我找不到其他两个“工具”:

  1. 调试器自己遍历指令本身(包括堆栈,内存转储等),使我可以检查实际的代码和环境。
  2. 反向过程的一种方法-编辑反汇编的代码,然后重新创建.class文件(带有已编辑的代码)。

答案1

小编典典

我认为这并不是一个完整的答案,但是有些指针可能提供了一些可行的方法:

(1)就查看和直接使用字节码而言,旧的BCEL类构造工具包可能很有用(它是我所知道的唯一的字节码GUI编辑器)。

(2)就调试和逐步执行字节码而言,与Eclipse的调试器集成在一起的Eclipse
插件可能会满足您的需求。

我不知道有任何实用程序可以组合这些功能,并允许您在执行代码时操作字节码(至少以与OllyDbg等相同的方式)。但是,Java
调试器API应该能够支持在运行时对代码进行操作(尽管从总体上讲,由于HotSpot和JIT的本质,我不知道是否有可能在调用指令之前重写一条指令-
-当前执行的字节码操作码实际上是解释器如何选择实现操作的一种抽象,与本机代码不同,在本机代码中,反汇编的操作码实际上是发送给CPU的指令。另外,您可以研究Java
Instrumentation
API,该API提供了一种在运行时重新定义字节码的方法。而且当然,各种开源字节码操作库中的任何一个都可以帮助或提供启发。

而且,当然,总是可以选择绕过整个JVM基础结构,而只是将调试器附加到JVM进程。此问题以及与此问题相关的链接在此页面上都有一些讨论。

然而,最重要的是,尽管您试图实现的目标虽然在本地代码世界中很普遍,但在Java世界中并不是一种普遍的做法(使用Java的部分原因是抽象性)从所有血腥细节)。这种情况以及字节码反编译的相对琐碎的本质(与C
++相比)导致了这种需求稀缺的情况,这种工具也是如此。

assembly – Windows汇编程序和汇编程序编译器的指南

assembly – Windows汇编程序和汇编程序编译器的指南

我想进入汇编程序,特别是Windows的Assembler.我想知道我对编译器有什么选择,也许是对于基本或Win32内容实际工作(在Windows和编译器上)的好指南.
史蒂夫·吉布森(Steve Gibson)是一个只用汇编程序的Windows老手编程(除了许多其他东西,包括TWiT播客“现在安全!”).
对于那些想要开始这条开发路线的人来说,他创建了 a full sample with source code以及多个互联网资源链接.你可能想从那里开始. 在页面上,如果您不想阅读整页,请搜索字符串“The Small Is Beautiful Starter Kit:”.

c# – 为什么我调试asp.net网站时会弹出反汇编/反汇编窗口?

c# – 为什么我调试asp.net网站时会弹出反汇编/反汇编窗口?

当我调试我的asp.net网站时,为什么反汇编/反汇编窗口会弹出一些?

它发生了一些时间,并非总是如此.我在互联网上搜索过但没有找到有用的结果.例如:当我尝试调试查询时发生了这种情况;它出现在/当我到达一个特定的代码段时,我使用了4个文本框中的一个启用,同时使用updatepanel禁用其他人(这里没有任何突破性的).

我的代码工作得很好,我再说一遍,这个反汇编的东西不会造成任何问题,只是以前没有发生这种情况.

这是否意味着我的代码或我编写代码的方式有问题……或者是什么?

解决方法

在工具,选项,调试中尝试禁用“启用地址级调试”.

我会补充一点,你经常可以启用“只启用我的代码”(同一页面),但我认为在我的代码之外出现问题时让它无法理解它是有用的.

如果你有以下窗口,通常会出现这样的窗口:启用地址级调试,启用我的代码禁用,并且已配置调试器以中断抛出的异常.

通常在.NET代码/其他库代码中抛出一些“良性”(非终端)异常,这些代码在那里被捕获,而不会出现在代码中.所有这些选项“启用(意思是按照我告诉你的方式设置)”,调试器将打破这些异常(非常无聊)并且必须向您展示一些东西……但是它没有源代码,因此它会显示反汇编(或者一个空窗口,询问您是否要查看反汇编,如果您有“如果源不可用则显示反汇编”已禁用)

C++中的反汇编技术与调试

C++中的反汇编技术与调试

c++中的反汇编技术与调试

C++是一门广泛应用于系统开发的编程语言,它的广泛性与复杂性使得调试成为了C++开发者必不可少的技能。在C++技术的调试过程中,反汇编技术发挥着重要作用。本文将介绍C++中的反汇编技术与调试,以帮助C++开发者更好地理解和解决问题。

一、反汇编技术

1.什么是反汇编

反汇编是一种将已编译的二进制机器代码文件转换回其原始汇编语言的过程。通过反汇编,开发者可以更好地理解程序的实际执行过程,以便进行调试和性能分析。反汇编工具可以将二进制文件中的操作码和机器指令解析为易于理解的汇编语言指令,从而使开发者更轻松地查看和理解程序逻辑。

立即学习“C++免费学习笔记(深入)”;

2.反汇编的用途

在实施调试时,反汇编技术通常被应用。调试人员可以检查程序指令,保证程序的运行顺利。同时,调试员可以通过反汇编工具获得更多的信息,如函数调用参数,以便编写更好的断点调试。反汇编技术不仅能够帮助调试员诊断bug,还可以帮助开发人员了解代码的性能瓶颈,并优化程序。

3.反汇编工具

在C++开发过程中,各种反汇编工具都可以使用,以帮助开发者调试代码。其中常用工具包括IDA Pro、OllyDbg、WinDbg等。这些工具能够显示反汇编指令,跟踪指令执行过程,列表函数代码,以及显示相关注释和变量值。

二、调试

1.调试简介

调试是一种找出误差或bug并修复它们的过程。当一个程序运行出错时,通常会抛出一些异常或调试信息,为了修复这些错误,开发人员需要检查代码,并对其进行调试。调试有时是非常耗时的过程,但它是解决程序错误的关键。

2.调试工具

在C++开发中,常用的调试工具包括Visual Studio、GDB等。Visual Studio拥有一种名为“集中式调试”的特性,它能够提供多种调试工具,如代码调试、模块调试、线程调试等。GDB则是一种命令行调试工具,它能够跟踪系统中的运行进程,并提供诸如断点调试、单步执行、调用继续、内存监视等功能。

3.调试技巧

C++开发者可以使用多种调试技巧来诊断代码,如设置断点、单步执行、内存监视、查看代码注释等。例如,当程序运行失败时,调试员可以打开反汇编器,以查看发生错误的指令和调用堆栈信息。在调试工具中,调试员还可以查看内存内容,以了解程序中的变量值和其他相关数据。

总结

本文介绍了C++中的反汇编技术与调试,以帮助C++开发者更好地理解和解决问题。反汇编技术能够帮助开发者理解代码的实际执行过程,以便进行调试和性能分析。调试是一种找出误差或bug并修复它们的过程,通过调试工具和技巧,开发者可以更轻松地诊断和解决问题。

以上就是C++中的反汇编技术与调试的详细内容,更多请关注php中文网其它相关文章!

flash – 是否有用于构建AIR应用程序的免费工具?

flash – 是否有用于构建AIR应用程序的免费工具?

目前,网络上一直在争论iPhone OS和Adobe Flash平台的“开放性”. Adobe的论点是,任何人都可以构建Flash应用程序,而不必担心被允许分发它.

这让我很奇怪……是否有可能在不向Adobe提供任何资金的情况下构建和分发AIR应用程序(当然,不违反任何许可证)?这些工具有免费吗?有没有开源?

解决方法

是.如果你在个人电脑上下载 flashdevelop(这是免费的)或者如果你在Mac上你需要购买 flashbuilder(699美元),fdt(129美元至699美元),textmate(我认为60美元),或下载 minibuilder免费…然后转到adobe labs并下载最新的 flex sdk.一旦你完成了这一点,请查看关于如何创建和编译常规as3应用程序,air应用程序的众多互联网教程中的任何一个.等等…

我非常喜欢flashdevelop,因为它附带了纯粹的as3应用程序,空中应用程序等的项目模板.它让生活变得非常简单.我不能和其他IDE说话,因为我没有使用它们,但是我知道一些使用FDT的窥视并且他们对它非常重视(但它不是免费的).祝好运!

关于是否有用于Java的反汇编程序+调试器用于汇编程序的ala OllyDbg / SoftICE?的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于assembly – Windows汇编程序和汇编程序编译器的指南、c# – 为什么我调试asp.net网站时会弹出反汇编/反汇编窗口?、C++中的反汇编技术与调试、flash – 是否有用于构建AIR应用程序的免费工具?的相关信息,请在本站寻找。

本文标签: