`
m635674608
  • 浏览: 4936690 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用JBE修改Java字节码

 
阅读更多
注意:我们在每一章都有一个实战环节,大家在阅读一些基本知识的时候可以同时参考实战,带着实际应用的需要去学习基本知识是一件很愉快的事情。
 
实战前的开发包和工具准备:
□ 从http://java.sun.com/javase/downloads/widget/jdk6.jsp​下载Sun的JDK。具体安装过程比较简单,请自行解决。
□ 弄个文本编辑器来编写Java代码,或者下载Java的IDE,推荐从http://www.eclipse.org/downloads/​下载Eclipse IDE for Java Developers。安装过程简单,请自行解决。
□ 从http://www.cs.ioc.ee/~ando/jbe​下载Java字节码编辑工具JBE。
□ 从http://www.codeblocks.org/downloads/binaries​下载codeblocks-*mingw-setup.exe作为C/C++开发工具,其中自带了Mingw的GCC编译工具。如果你有Visual Studio那就不用下了。
 
用JBE修改Java字节码
 
如下图,我们把左边的Class1代码编译后的.class文件修改成右边源代码的输出结果(用AOP的说法就是拦击方法run,在run运行之前做件事情):
 
《Java平台体系》——第二章 JVM——实战:用JBE修改Java字节码
 
先把源文件编译,用JBE打开编译后的Class1.class文件,找到Methods-run-[0]Code,如下图:
 
《Java平台体系》——第二章 JVM——实战:用JBE修改Java字节码
 
把run方法的字节码修改为下图内容,保存:
 
《Java平台体系》——第二章 JVM——实战:用JBE修改Java字节码
 
OK,我们的任务完成了。
 
-----------------------------------------------------------------------
借题发挥:我们经常会遇到需要搞明白编译后的Java字节码具体干什么但又没有源文件,我们有两种选择:
□ 阅读字节码,阅读懂的前提条件是了解Java字节码类文件格式​和JVM指令集​。
□ 用Java字节码反编译器,即让编译器帮你做了读懂字节码的工作。推荐一个命令行反编译器JAD(http://www.varaneckas.com/jad​)。
 

相关链接:
《Java平台体系》全书大纲:http://qing.weibo.com/2494474521/94aea919330006hz.html
 
转http://qing.blog.sina.com.cn/2494474521/94aea919330007vc.html
分享到:
评论

相关推荐

    华为OD机试D卷 - 用连续自然数之和来表达整数 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg

    Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg

    数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip

    数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip

    2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告.docx

    2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告

    开源工时填报管理系统安装包

    开源工时填报管理系统安装包

    激光雷达深度报告:产业化加速,国产供应链迎来投资机遇.pdf

    电子元件 电子行业 行业分析 数据分析 数据报告 行业报告

    node-v0.12.10-darwin-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    18-17.网站域名DNS被劫持,网站服务器密码被改.mp4

    18-17.网站域名DNS被劫持,网站服务器密码被改.mp4

    QYResearch:2023年前五大2,3,3',4'-联苯四甲酸二酐(α-BPDA)企业占据全球91%的市场份额.docx

    QYResearch:2023年前五大2,3,3',4'-联苯四甲酸二酐(α-BPDA)企业占据全球91%的市场份额.docx

    2024-2030中国仿生智能餐饮机器人市场现状研究分析与发展前景预测报告.docx

    2024-2030中国仿生智能餐饮机器人市场现状研究分析与发展前景预测报告

    82-82.渗透测试-CVE-2017-8464“震网三代 反弹shell演示课件.mp4

    82-82.渗透测试-CVE-2017-8464“震网三代 反弹shell演示课件.mp4

    node-v6.11.5-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    33-33.渗透测试渗透测试之SQL注入基于报错注入(下)

    渗透测试渗透测试之SQL注入基于报错注入(下)

    基于Android的云游四海手机端应用.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。

    node-v4.8.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    46-46.渗透测试-Kali Linux安全渗透.mp4

    46-46.渗透测试-Kali Linux安全渗透.mp4

    电子周跟踪:华为P70系列开售,台积电指引AI需求依旧强劲.pdf

    电子元件 电子行业 行业分析 数据分析 数据报告 行业报告

    node-v6.13.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    【名企实践】华为如何打造高绩效团队glq.pptx

    【名企实践】华为如何打造高绩效团队glq.pptx

    node-v4.9.1-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics