jad反编译class类文件的时候容易出错的几种情况

2024-02-01 02:48

本文主要是介绍jad反编译class类文件的时候容易出错的几种情况,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

断言:
assert false;
反编译成了
if (!$assertionsDisabled) throw new AssertionError();


assert false : "Element with fixed may not be EMPTY or ELEMENT_ONLY";
反编译成了:
if (!$assertionsDisabled) throw new AssertionError("Element with fixed may not be EMPTY or ELEMENT_ONLY");


局部变量重复声明


局部变量声明错位
int i;
for (i = 0; i < types.length; i++) {}
被反编译成:
for (int i = 0; i < types.length; i++) {}
导致后面用到i的地方报错。


switch语句的case选项中变量名重复


多余错误的构造方法。
private SaajData(){}
反编译后多了个
SaajData(DomImpl.1 x0){
this();
}


声明对象的时候多余null参数:
SaajData a = new SaajData();
反编译成了:
SaajData a = new SaajData(null);


构造中的super遗漏参数:
public SaajCdataNode(Locale l){
   super(l);
}
反编译成了:
public SaajCdataNode(Locale l){
   super();

}

赋值并判断语句等号出问题
if ((parts[0]  = getURI(prefix)) == null) 
被反编译成:
if ((parts[0]  == getURI(prefix)) == null) 


内部类对外部类的引用出问题
class A{
 class B{
protect methodB() {
A.this.methodA();
}
 }
 protect methodA() {}
}


classB被反编译成
class B{
private final A this$0;
protected methodB{
this$0.methodA();
}
}
导致报错。

return语句被拆分报错
return "UCS-4";
被反编译成:
str = "UCS-4";
return str;
报错str未声明。
或者
return null;
被反编译成:
Object obj = null;
return obj;
而需要返回的是String,导致类型不匹配。


xxx.class解析错误
ListDocument.class.getClassLoader()反编译成:
(1.class$org$apache$xmlbeans$impl$xb$xsdschema$ListDocument == null ? (1.class$org$apache$xmlbeans$impl$xb$xsdschema$ListDocument = 1.class$(\"org.apache.xmlbeans.impl.xb.xsdschema.ListDocument\")) : 1.class$org$apache$xmlbeans$impl$xb$xsdschema$ListDocument).getClassLoader()


这篇关于jad反编译class类文件的时候容易出错的几种情况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/665854

相关文章

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

Redis中删除策略的几种实现方式

《Redis中删除策略的几种实现方式》本文详细介绍了Redis的过期键删除策略和内存淘汰策略,过期键删除策略包括定时删除、惰性删除和定期删除,具有一定的参考价值,感兴趣的可以了解一下... 目录前言一、设计背景:为什么需要删除策略?二、第一类:过期键的 3 种核心删除策略1. 定时删除(Timed Dele

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装