首先讲下软件,需要下载一个名为:jclasslib的软件,并且需要安装JDK,下载下来的jclasslib一般是个压缩包,解压后目录下会有个名为bin的文件夹,里面的jclasslib.exe就是可执行文件。打开该文件,界面很清楚,选择打开我们需要修改的class文件。
比如我们需要修改的文件有这样一段代码:
public boolean a(String s1, String s2)
{
MessageConnection messageconnection = null;
boolean flag = true;
try
{
String s3 = "sms://" + s1;
messageconnection = (MessageConnection)Connector.open(s3);
TextMessage textmessage = (TextMessage)messageconnection.newMessage("text");
textmessage.setAddress(s3);
textmessage.setPayloadText("LS " + s2);
messageconnection.send(textmessage);
}
catch(Throwable throwable)
{
flag = true;
}
if(messageconnection != null)
{
try
{
messageconnection.close();
}
catch(Exception exception)
{
return true;
}
return flag;
} else
{
return true;
}
}
如果我们想把所有的true改成false。
在打开的class文件中左边会看到一系列菜单:
分别表示常量池,接口,域,方法,我们需要修改的是方法a(String s1, String s2),所以我们双击Methods,可以看见该class中的所有方法,我们找到我们需要修改的方法a,如果有很多a方法,可以对比反编译软件反编译的方法顺序来定位。我们找到a方法:
双击code,查看虚拟机指令:
0 aconst_null
1 astore_3
2 iconst_1
3 istore 4
5 new #105 <java/lang/StringBuffer>
8 dup
9 invokespecial #106 <java/lang/StringBuffer.<init>>
12 ldc_w #676 <file://>
15 invokevirtual #107 <java/lang/StringBuffer.append>
18 aload_1
19 invokevirtual #107 <java/lang/StringBuffer.append>
22 invokevirtual #112 <java/lang/StringBuffer.toString>
25 astore 5
27 aload 5
29 invokestatic #677 <javax/microedition/io/Connector.open>
32 checkcast #678 <javax/wireless/messaging/MessageConnection>
35 astore_3
36 aload_3
37 ldc_w #679 <text>
40 invokeinterface #680 <javax/wireless/messaging/MessageConnection.newMessage> count 2
45 checkcast #681 <javax/wireless/messaging/TextMessage>
48 astore 6
50 aload 6
52 aload 5
54 invokeinterface #682 <javax/wireless/messaging/Message.setAddress> count 2
59 aload 6
61 new #105 <java/lang/StringBuffer>
64 dup
65 invokespecial #106 <java/lang/StringBuffer.<init>>
68 ldc_w #683 <LS >
71 invokevirtual #107 <java/lang/StringBuffer.append>
74 aload_2
75 invokevirtual #107 <java/lang/StringBuffer.append>
78 invokevirtual #112 <java/lang/StringBuffer.toString>
81 invokeinterface #684 <javax/wireless/messaging/TextMessage.setPayloadText> count 2
86 aload_3
87 aload 6
89 invokeinterface #685 <javax/wireless/messaging/MessageConnection.send> count 2
94 goto 102 (+8)
97 astore 5
99 iconst_1
100 istore 4
102 aload_3
103 ifnull 122 (+19)
106 aload_3
107 invokeinterface #687 <javax/microedition/io/Connection.close> count 1
112 goto 119 (+7)
115 astore 5
117 iconst_1
118 ireturn
119 iload 4
121 ireturn
122 iconst_1
123 ireturn
接下来我们对照虚拟机指令表:
(0x01)对应aconst_null
(0x4e)对应astore_3
(0x04)对应iconst_1
(0x36)对应istore
那么我们用Hex Workshops打开该class文件,搜索16进制关键字:014E0436,很快我们就定位到需要修改的地方了。
我们把该位置附近的0336和03AC修改成0436和04AC,保存,然后再看看:
public boolean a(String s1, String s2)
{
MessageConnection messageconnection = null;
boolean flag = false;
try
{
String s3 = "file://" + s1;
messageconnection = (MessageConnection)Connector.open(s3);
TextMessage textmessage = (TextMessage)messageconnection.newMessage("text");
textmessage.setAddress(s3);
textmessage.setPayloadText("LS " + s2);
messageconnection.send(textmessage);
}
catch(Throwable throwable)
{
flag = false;
}
if(messageconnection != null)
{
try
{
messageconnection.close();
}
catch(Exception exception)
{
return false;
}
return flag;
} else
{
return false;
}
}
已经完成了修改了!
分享到:
相关推荐
4. 非侵入性:不会修改原始的.class文件,只用于查看。 5. 快速查找:通过搜索关键字可以快速定位到相关的代码行。 对于开发者来说,掌握如何使用反编译工具,特别是像JD-GUI这样的工具,可以帮助他们分析和理解第...
lookfor**: 搜索MATLAB中函数的帮助文本中的关键词,非常有助于快速定位到某个特定功能的实现方式。 **7. partialpath**: 提供了对路径进行部分匹配的能力,用于搜索包含特定字符串的路径。 **8. path**: 显示...
在Java开发过程中,有时我们需要对已打包的JAR文件进行修改,例如修复错误、更新类或资源等。`jclasslib`是一款强大的反编译器和字节码查看器,它允许开发者查看并修改JAR文件中的`.class`文件。这篇文章将深入探讨...
然而,有时我们需要查看或理解这些已经编译的class文件中的源代码,这时就需要用到Java的反编译工具。本文将深入探讨Java中的class文件反编译,以及如何使用JD-GUI这一工具。 反编译是将已编译的二进制代码转换回...
Java Class文件编辑器,如JD-GUI 0.3.3 绿色版,是一种用于查看和理解Java字节码的工具,对于开发者而言尤其重要,因为它提供了将已编译的`.class`文件反编译回源代码的能力。在深入讨论这个工具之前,我们先来了解...
2. 关闭项目,并从实际的文件夹中删除对应的 *.h 和 *.cpp 文件。 3. 删除.clw文件。 4. 重新打开项目,并执行 **Rebuild All**。 通过以上步骤,可以确保彻底删除一个不再需要的类。 #### 解决VC不正确的连接问题...
- **功能说明**:在当前文件中快速定位到下一个相同的字符串。 - **应用场景**:需要快速找到文件中特定字符串的所有出现位置时。 **21. Ctrl+O:快速outline,查看当前类的方法或某个字段** - **功能说明**:...
3. **加载class文件**:通过点击界面上的“Open File”按钮,选择你想要查看的`.class`文件,`jd-gui`将立即开始反编译并显示源代码。 4. **浏览和分析**:在左侧的文件浏览器中,你可以看到反编译出的类结构。在...
- **应用场景:** 需要快速定位到文件中的某一行时。 **13. F3 (Open Declaration):** - **作用:** 跳转到所选元素的声明处。 - **应用场景:** 探索源码时,快速查看变量或方法的定义。 **14. F4 (Show in ...
总结来说,Java Class文件查看器是Java开发者必备的一款工具,它简化了对`.class`文件的检查过程,尤其在处理JAR文件时,能够直接查看原始的类文件名称,有助于快速定位和修改代码,从而提升开发效率和代码质量。...
### VC++6.0项目文件说明 在学习和使用Visual C++ 6.0进行软件开发...了解这些文件的作用可以帮助开发者更好地管理项目,并在遇到问题时能够快速定位和解决问题。此外,掌握这些文件的操作方法也能有效提升开发效率。
Java开发过程中,我们经常需要对已编译的.class文件进行反编译,以便查看源代码或理解二进制字节码的工作原理。标题中的“class文件反编译工具jd-gui.zip”指的是一个名为JD-GUI的实用工具,它是Java开发者在处理....
"查看class文件工具"就是为了解决这一需求而存在的。 `jd-gui`是一款开源的Java反编译工具,它允许开发者直观地查看并分析`.class`文件的内容。这个工具由JetBrains公司开发,以其高效和易用性著称。通过`jd-gui`,...
- **class/**:漫游接口中需要用到的类文件夹。 - **Manyou.php**:漫游接口文件。 - **my.php**:继承自Manyou.php,用于执行更新用户资料的操作。 - **api/mobile/**:移动设备接口文件夹,包括大量针对手机...
这类工具的主要功能是将`.class`文件转换回可读性强的`.java`源代码,帮助开发者理解或修改已有的Java程序,尤其在没有源代码的情况下。在描述中提到的工具,是一个小巧而实用的Java Class反编译器,用户只需运行`....
- **FindFile.exe**:可能是一个搜索工具,帮助用户在文件系统中快速定位.class文件。 - **Description.ini**:这是一个配置文件,可能包含了软件的相关描述和设置信息。 - **classes.txt**:可能包含了一些示例...
标题中的"方便好用的class反编译小工具--jd-gui"指的就是这个名为`jd-gui`的程序,它是一个图形用户界面(GUI)应用,用于将Java字节码(.class文件)转换回可读的源代码。这使得开发者无需拥有原始的`.java`源文件...
虽然"JAVA CLASS文件查看器"可能不具备一些专业反编译器的复杂功能,但它以其轻便、易用和快速的特点,成为开发者日常工作中不可或缺的辅助工具。无论是初学者还是经验丰富的开发人员,都能从中受益,更深入地理解...
- **应用场景**:输入关键词后,快速定位到包含该关键词的位置。 **11. Ctrl+Z 返回到修改前的状态** - **功能描述**:撤销最近的一次操作。 **12. Ctrl+Y 与上面的操作相反** - **功能描述**:恢复被撤销的...
Ctrl+K:** 快速定位到下一个位置,与Ctrl+Q相反,适用于快速导航至代码中的下一位置。 **9. Ctrl+E:** 显示当前编辑器的下拉列表,用于切换不同的编辑器窗口,提高开发效率。 **10. Ctrl+J:** 正向增量查找,...