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

相关文章

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc