`
love19820823
  • 浏览: 935894 次
文章分类
社区版块
存档分类
最新评论

Java与汇编的混合操作类库及示例

 
阅读更多


关于本例:


首先声明一下,这是一个副产品,暂定名叫LocalOS.写它的起因在于放假时去亲戚家串门,脑袋一热答应了下星期帮亲戚孩子做个游戏外挂,谁让国人都喜欢认为[IT人士]就是举凡和计算机有关的都会的人(而且不分软硬|||)。因为没写过外挂,手里没有相关类库,所以用什么写都一样,嫌分析封包麻烦并且也没时间,本想用Java写个汇编类,然后调用游戏本身指令进行挂机.目的有二:一是为了巩固相关的Java和汇编知识,二是强调下在软件世界中,Java能做什么并不是问题,Java不能做什么才是问题。

但事实上看,今天我回家后发觉一边写Java汇编的基础类库一边分析游戏做外挂似乎不赶趟|||,所以暂时放弃Java开发,直接用VB做界面,C++写核心了.

暂时把写了一部分的Java执行汇编指令例子丢出来,等有时间再继续,顺便希望有人能帮我把类库补全.

以下是刚写的这个类库的演示用例,发完了我就准备睡觉了~~~一不留神都这时候了~~~~明天上班还有事呢||||||||

目前提供的系统接口类:

  1. packageorg.loon.framework.os;
  2. /**
  3. *Copyright2008
  4. *
  5. *LicensedundertheApacheLicense,Version2.0(the"License");youmaynot
  6. *usethisfileexceptincompliancewiththeLicense.Youmayobtainacopyof
  7. *theLicenseat
  8. *
  9. *http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. *Unlessrequiredbyapplicablelaworagreedtoinwriting,software
  12. *distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUT
  13. *WARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.Seethe
  14. *Licenseforthespecificlanguagegoverningpermissionsandlimitationsunder
  15. *theLicense.
  16. *
  17. *@projectloonframework
  18. *@authorchenpeng
  19. *@email:ceponline@yahoo.com.cn
  20. *@version0.1
  21. */
  22. classKernel{
  23. static{
  24. System.loadLibrary("localos");
  25. }
  26. /**
  27. *获得内联汇编执行结果
  28. *
  29. *@paramasmBytes
  30. *@return
  31. */
  32. publicnativestaticlongdoResult(finalbyte[]asmBytes);
  33. /**
  34. *将内联汇编动态注入指定进程
  35. *
  36. *@parampid
  37. *@paramasmBytes
  38. *@return
  39. */
  40. publicnativestaticbooleandoInject(finalintpid,byte[]asmBytes);
  41. /**
  42. *写指定线程内存
  43. *
  44. *@parampid
  45. *@paramaddress
  46. *@parambuffer
  47. *@paramsize
  48. *@paramnumberOfBytesWrite
  49. *@return
  50. */
  51. publicnativestaticbooleanwriteProcessMemory(finalintpid,
  52. finalintaddress,finalbyte[]buffer,finalintsize,
  53. finalint[]numberOfBytesWrite);
  54. /**
  55. *读指定线程内存
  56. *
  57. *@parampid
  58. *@paramaddress
  59. *@parambuffer
  60. *@paramsize
  61. *@paramnumberOfBytesWrite
  62. *@return
  63. */
  64. publicnativestaticbooleanreadProcessMemory(finalintpid,
  65. finalintaddress,finalbyte[]buffer,finalintsize,
  66. finalint[]numberOfBytesWrite);
  67. /**
  68. *读指定线程内存
  69. *
  70. *@parampid
  71. *@paramaddress
  72. *@return
  73. */
  74. publicstaticbytereadProcessMemory(finalintpid,finalintaddress){
  75. byte[]buffer=newbyte[1];
  76. int[]numberOfBytesRead=newint[1];
  77. readProcessMemory(pid,address,buffer,1,numberOfBytesRead);
  78. returnbuffer[0];
  79. }
  80. /**
  81. *以指定的访问方法进入一个已存在的进程
  82. *
  83. *@parammode
  84. *@parampid
  85. *@return
  86. */
  87. publicnativestaticintopenProcess(finalintmode,finalintpid);
  88. /**
  89. *强制结束指定进程
  90. *
  91. *@parampid
  92. *@return
  93. */
  94. publicnativestaticbooleankillProcessID(finalintpid);
  95. /**
  96. *检查指定进程是否在运行中
  97. *
  98. *@parampid
  99. *@return
  100. */
  101. publicnativestaticbooleanisProcessRunning(finalintpid);
  102. /**
  103. *返回当前进程中所有程序名
  104. *
  105. *@return
  106. */
  107. publicnativestaticObject[]getProcessNames();
  108. /**
  109. *返回指定程序名的唯一进程id
  110. *
  111. *@paramprocessName
  112. *@return
  113. */
  114. publicnativestaticintgetProcessID(finalStringprocessName);
  115. }


示例代码:
  1. packageorg.loon.test;
  2. importorg.loon.framework.os.ASM;
  3. /**
  4. *Copyright2008
  5. *
  6. *LicensedundertheApacheLicense,Version2.0(the"License");youmaynot
  7. *usethisfileexceptincompliancewiththeLicense.Youmayobtainacopyof
  8. *theLicenseat
  9. *
  10. *http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. *Unlessrequiredbyapplicablelaworagreedtoinwriting,software
  13. *distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUT
  14. *WARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.Seethe
  15. *Licenseforthespecificlanguagegoverningpermissionsandlimitationsunder
  16. *theLicense.
  17. *
  18. *@projectloonframework
  19. *@authorchenpeng
  20. *@email:ceponline@yahoo.com.cn
  21. *@version0.1
  22. */
  23. publicclassTestASM{
  24. /**
  25. *格式化输出信息
  26. *
  27. *@parammes
  28. *@parama
  29. *@paramb
  30. *@return
  31. */
  32. publicstaticStringformatMessage(Stringmes,inta,intb){
  33. Integera1=newInteger(a);
  34. Integerb1=newInteger(b);
  35. returnString.format(mes,newObject[]{a1,b1});
  36. }
  37. /**
  38. *java进行汇编加法
  39. *
  40. *@paramasm
  41. *@parama
  42. *@paramb
  43. *@return
  44. */
  45. publicstaticvoidplus(ASMasm,inta,intb){
  46. asm._MOV_EAX(a);
  47. asm._ADD_EAX(b);
  48. asm._RET();
  49. Stringmes=formatMessage("Java进行汇编加法计算%d+%d=",a,b);
  50. System.out.println(mes+asm.doResult());
  51. }
  52. /**
  53. *java进行汇编减法
  54. *
  55. *@paramasm
  56. *@parama
  57. *@paramb
  58. */
  59. publicstaticvoidminus(ASMasm,inta,intb){
  60. asm._MOV_EAX(a);
  61. asm._SBB_EAX(b);
  62. asm._RET();
  63. Stringmes=formatMessage("Java进行汇编减法计算%d-%d=",a,b);
  64. System.out.println(mes+asm.doResult());
  65. }
  66. /**
  67. *java进行汇编乘法
  68. *
  69. *@paramasm
  70. *@parama
  71. *@paramb
  72. */
  73. publicstaticvoidmultiply(ASMasm,inta,intb){
  74. asm._MOV_EAX(a);
  75. asm._MOV_EBX(b);
  76. asm._IMUL_EAX_EBX();
  77. asm._RET();
  78. Stringmes=formatMessage("Java进行汇编乘法计算%d*%d=",a,b);
  79. System.out.println(mes+asm.doResult());
  80. }
  81. /**
  82. *java进行汇编除法
  83. *
  84. *@paramasm
  85. *@parama
  86. *@paramb
  87. */
  88. publicstaticvoiddivide(ASMasm,inta,intb){
  89. asm._XOR_EDX_EDX();
  90. asm._MOV_EAX(a);
  91. asm._MOV_ECX(b);
  92. asm._IDIV_ECX();
  93. asm._RET();
  94. Stringmes=formatMessage("Java进行汇编除法计算%d/%d=",a,b);
  95. System.out.println(mes+asm.doResult());
  96. }
  97. publicstaticvoidmain(String[]args){
  98. //PS:ASM类中不是所有汇编指令都有,因为太多,有时间再慢慢加.已写的不保证全部正确|||.
  99. //添加ASM类的方法大体有三种:
  100. //1、用汇编指令名和操作码自己一个个对
  101. //2、自己写汇编,然后debug读操作码
  102. //3、开OD之类的反汇编~
  103. //反正所有汇编命令都能实现,关键看有没有恒心,谁有空帮忙写下……
  104. ASMasm=newASM();
  105. //加法测试
  106. plus(asm,65657632,95454157);
  107. //减法测试
  108. minus(asm,996565,12345);
  109. //乘法测试
  110. multiply(asm,1841,2009);
  111. //除法测试
  112. divide(asm,19820901,12);
  113. }
  114. }

运行效果图如下:



大家用脚趾头都能猜出来是JNI实现的,毕竟和系统本地交互不用JNI是不可能的,目前仅支持Windows系统.不过在当今的Java世界中,由于SWT已经提供了良好的本地环境库支持,事实上用它便可以直接写出大多数系统与Java的汇编混合代码,但这与本例无关,自己琢磨吧,我安息了:)

CSDN下载地址http://download.csdn.net/source/940199

下载地址:http://code.google.com/p/greenvm/downloads/list (暂时先丢这上面 源码在Jar内)

OD(ollydbg,传说中的汇编分析调试工具)下载地址:http://download.csdn.net/source/940795


分享到:
评论

相关推荐

    基于深度学习的零样本识别.zip

    基于深度学习的零样本识别.zip

    《大数据原理》LSH算法实现

    用map-reduce的形式实现了LSH算法

    Text-2024-05-09 17-11-33.txt

    Text-2024-05-09 17-11-33.txt

    node-v6.14.4-linux-armv6l.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于springboot的电影院订票管理系统

    开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我v:19306446185 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! https://img-blog.csdnimg.cn/direct/e73dc0ac8d27434b86d886db5a438c71.jpeg

    基于深度学习的舌象诊断系统源码+文档说明.zip

    基于深度学习的舌象诊断系统源码+文档说明.zip

    2023-04-06-项目笔记 - 第一百二十八阶段 - 4.4.2.126全局变量的作用域-126 -2024.05.09

    2023-04-06-项目笔记-第一百二十八阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.126全局变量的作用域_126 - 2024-05-09

    深度学习入门-基于python的理论与实现.zip

    深度学习入门-基于python的理论与实现.zip

    基于python的气象数据处理

    数据处理 |--- 处理气象数据(nc文件) 操作说明: nc 文件命名为:deal_nc.nc,放到data目录下 1、 执行parse_nc.py,解析nc文件,同时在data目录下生成.npy数据文件 2、 执行draw_data.py ,获取.npy数据,并绘制图形

    TPE5608通讯管理机底层

    TPE5608通讯管理机底层

    机器学习,深度学习基础模型实现,基础组件,便于快速复用与集成.zip

    机器学习,深度学习基础模型实现,基础组件,便于快速复用与集成.zip

    node-v6.5.0-linux-ppc64le.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v7.0.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    医院机房建设清单明细及报价.xls

    文章摘要 智慧医院智能化系统建设方案旨在通过智能化手段提升医院的安全性、舒适性、便捷性和效率。该方案规划了四大类子系统:平台、应用、节能和安全,以打造一个高效的医疗环境。 信息设施系统:包括综合布线系统、信息网络系统、多媒体会议系统等,旨在为医院提供稳定、高速的网络服务。综合布线系统采用6类非屏蔽铜缆和光纤,支持多种业务信息的传输。信息网络系统采用以太网交换技术和树型网络结构,确保网络的稳定性和安全性。 信息化应用系统:包括信息查询系统、分诊排队叫号系统、ICU探视系统等,通过信息技术提高医疗服务的质量和效率。信息查询系统便于病员及家属查询医院信息,分诊排队叫号系统优化就诊流程,ICU探视系统通过音视频技术实现远程探视和监护。 安全防范系统:针对医患关系敏感、医疗纠纷、医护人身安全等问题,设计了安防音视频监控系统、电子巡更系统、门禁系统等,以提高医院的安全管理水平。安防音视频监控系统在关键区域设置监控摄像机,电子巡更系统确保巡更人员按时按路线完成任务,门禁系统通过权限管理控制人员出入。 机房建设工程:包括机房配电系统、防雷接地系统、消防系统等,确保机房设备的安全稳定运行。机房供配电系统采用普通电源和不间断电源,消防系统采用无管网七氟丙烷气体灭火系统,防雷系统采用三级防雷措施,机房空调系统保持适宜的温度和湿度。 方案特色:紧扣标准、安全简便、统一融合、可视操作、事前预防、智能管控。通过智能化系统的设计和实施,医院能够更有效地进行安全管理,提高医疗服务质量,同时降低维护成本和提升运营效率。

    da_1715269209522..apk

    da_1715269209522..apk

    node-v6.9.5-linux-s390x.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    typescript-3.7.6.tgz

    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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于上下文特征,使用机器学习以及深度学习的方法对复杂长句进行切分

    深度学习(也称为深度结构化学习或分层学习)是基于人工神经网络的更广泛的机器学习方法族的一部分。学习可以是有监督的、半监督的或无监督的。[1][2][3] 深度学习架构,例如深度神经网络、深度信念网络、循环神经网络和卷积神经网络,已经被应用于包括计算机视觉、语音识别、自然语言处理、音频识别、社交网络过滤、机器翻译、生物信息学、药物设计、医学图像分析、材料检查和棋盘游戏程序在内的领域,在这些领域中,它们的成果可与人类专家媲美,并且在某些情况下胜过人类专家。[4][5][6] 神经网络受到生物系统中信息处理和分布式通信节点的启发。人工神经网络与生物大脑有各种不同。具体而言,神经网络往往是静态和象征性的,而大多数生物的大脑是动态(可塑)和模拟的大多数现代的深度学习模型基于人工神经网络,特别是卷积神经网络(CNN),尽管它们也可以包括命题公式或在深度生成模型中逐层组织的潜变量,例如深度信念网络和深度玻尔兹曼机中的节点。[11] 在深度学习中,每一级学习将其输入数据转换成稍微抽象和复合的表示。在图像识别应用中,原始输入可以是像素矩阵;第一代表层可以提取像素并编码边缘;第二层可以组成和编码边缘

    app.js

    app.js

    node-v18.13.0-headers.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics