当前位置: 首页 > wzjs >正文

适合用struts2做的网站徐州seo外包平台

适合用struts2做的网站,徐州seo外包平台,html视频播放器,动漫设计专升本前言 通过frida进行java反射调用String的getBytes方法,得到了[B类型的引用 无论如何尝试都无法打印输出其内容,甚至java.util.Arrays类的相关方法也无法正确输出 之后刷到这篇文章了解到java.lang.reflect.Array类用于反射打印数组 https://www.cnblog…

前言

通过frida进行java反射调用String的getBytes方法,得到了[B类型的引用
无论如何尝试都无法打印输出其内容,甚至java.util.Arrays类的相关方法也无法正确输出

之后刷到这篇文章了解到java.lang.reflect.Array类用于反射打印数组
https://www.cnblogs.com/liwxmyself/p/14758632.html
进而了解到另一篇文章,详细介绍了相关方法
https://www.cnblogs.com/pony1223/p/7470382.html

总之,通过反射获取到的数组,不能直接通过Arrays类操作,应该通过reflect包下的Array类操作

案例

创建Java字符串后,有如下3个字节数组

  • result 直接通过反射调用getBytes方法获取字符串对应的字节数组
  • result2 调用java方法getBytes后转换为字节数组类型
  • result3 调用getBytes后不进行其他操作

分别通过Typeof打印类型以及直接打印结果

                //反射操作Stringvar str=Java.use("java.lang.String").$new("demo")var result=Reflection.invokeMethod("java.lang.String","getBytes",str, [], [])//[B byte[]数组,无法直接打印var result2=Java.cast(str.getBytes(),Java.use("[B"))//转换为byte[]数组,无法直接打印var result3=str.getBytes()//可直接打印//打印类型console.log("Typeof result:", typeof result);//Typeof result: objectconsole.log("Typeof result2:", typeof result2);//Typeof result2: objectconsole.log("Typeof result3:", typeof result3);//Type of result3: object//打印结果console.log("[+] result:", result);//[+] result: [B@7ab81e8console.log("[+] result2:", result2);//[+] result2: [B@70b3001console.log("[+] result3:", result3);//[+] result3: 100,101,109,111

打印结果如下,可以发现均为object类型,但是直接打印结果略有区别
只有result3可以直接显示内容,其他均为引用
在这里插入图片描述
之后利用java.lang.reflect.Array类的静态方法

  • Object get(Object[],int index) 反射获取任意类型数组指定下标的元素
  • byte getByte(Object[],int index) 反射获取byte[]类型数组指定下标的元素
                //反射调用得到的数组类型需要使用java.lang.reflect.Array类进行操作,而非java.util.Arrays类const reflectArray = Java.use("java.lang.reflect.Array");//基本操作console.log(typeof reflectArray.get(result,0))//objectconsole.log(typeof reflectArray.getByte(result,0))//numberconsole.log("length:",reflectArray.getLength(result));//length: 4//遍历for(var i=0;i<reflectArray.getLength(result);i++){console.log("result["+i+"]:",reflectArray.getByte(result,i));}for(var i=0;i<reflectArray.getLength(result2);i++){console.log("result2["+i+"]:",reflectArray.getByte(result2,i));}

打印结果如下
get获取的是object类型
getByte获取到的是number类型
并且成功遍历
在这里插入图片描述

其中invokeMethod封装如下

// 核心:通过 ClassLoader 获取类引用
function getClass(className, classLoader) {try {if (classLoader) return classLoader.loadClass(className);// 使用指定的 ClassLoaderelse return Java.use(className).class;// 默认使用全局 ClassLoader} catch (e) {console.error(`[Reflection] getClass error: ${e}`);return null;}
}/*** 调用实例方法(支持指定 ClassLoader)* @param {string} className      类名* @param {string} methodName     方法名* @param {Object} instance      实例对象* @param {Array<Class>} paramTypes  参数类型* @param {Array<any>} paramValues 参数值* @param {ClassLoader} [classLoader] 类加载器(可选)*/invokeMethod: function (className, methodName, instance, paramTypes, paramValues, classLoader) {try {const clazz = getClass(className, classLoader);if (!clazz) return null;const method = clazz.getDeclaredMethod(methodName,Java.array('java.lang.Class', paramTypes));method.setAccessible(true);const jArgs = Java.array('java.lang.Object', paramValues);return method.invoke(instance, jArgs);} catch (e) {console.error(`[Reflection] invokeMethod error: ${e}`);return null;}},

文章转载自:

http://SZAiU0Wm.nqLkb.cn
http://STSB3x2g.nqLkb.cn
http://eQDW9s3q.nqLkb.cn
http://bPVs152e.nqLkb.cn
http://K0TbZ5wk.nqLkb.cn
http://mr0KulVi.nqLkb.cn
http://g6YVKpJg.nqLkb.cn
http://KL82OBbj.nqLkb.cn
http://eAor48w6.nqLkb.cn
http://skUYUOOe.nqLkb.cn
http://vMubCITL.nqLkb.cn
http://oXHf6lwP.nqLkb.cn
http://4gOGUpnk.nqLkb.cn
http://ibuOL4OK.nqLkb.cn
http://qFAwNKE8.nqLkb.cn
http://9JgqmGD9.nqLkb.cn
http://E7mzTXzX.nqLkb.cn
http://JN2vsXZk.nqLkb.cn
http://1Mtn1gIm.nqLkb.cn
http://fupx23Ur.nqLkb.cn
http://xdxer4En.nqLkb.cn
http://smouiLH8.nqLkb.cn
http://PLCIlyKk.nqLkb.cn
http://EJkRBJjm.nqLkb.cn
http://hvU2hyC4.nqLkb.cn
http://XIujQboG.nqLkb.cn
http://HdEravaP.nqLkb.cn
http://SeSqeV8G.nqLkb.cn
http://RnZ9ayql.nqLkb.cn
http://Q4eqLF5v.nqLkb.cn
http://www.dtcms.com/wzjs/693779.html

相关文章:

  • 介绍一个电影的网站模板广州工业设计公司有哪些
  • 天津网站建设托管余江网站建设
  • 网站页面布局的目的长沙网站制作哪里好
  • 可以在视频网站上做新闻节目吗个人求职网站html
  • 多媒体网站开发实战学校网站的作用和意义
  • 成都企业管理培训网站优化和推广
  • 网站开发新型技术天津seo网络
  • 维港豪宅项目网站建设上地网站建设
  • 旅游网站建设毕业设计影视公司注册流程及费用
  • dede网站单页面怎么做比较好的做简历的网站
  • 网站制作蒙特自我介绍网页模板代码
  • 河北住房和建设厅官方网站做微商如何引流推广怎么找客源
  • 互联网站建设维护有关岗位如何建立网站是什么
  • 咸阳网站建设有哪些昌大建设集团是哪里的
  • 国外教育网站模板做一个网站最低多少钱
  • 哪个网站做课件ppt比较好网站建设预付款
  • 校园网站建设详细的设计方案聊城网站制作价格
  • seo网站规划图片在线编辑网站
  • 腾讯云怎样做网站企业网站建设的报价
  • 网站开发能申请软件著作权吗小猪会飞网站建设
  • 网站优化排名易下拉效率洛阳网红打卡地
  • 台州做网站的电话学建设网站及功能
  • 网站专题页面wordpress4.9.3漏洞
  • 加强单位网站建设短视频引流推广软件
  • 旅游网站建设公司哪家好网站里的轮廓图 怎么做的
  • 网站建设推广特色上海优化排名网站
  • hulu网站在中国做内容吗wordpress描述引用
  • 网站建设公司muyunke网站建设画册设计
  • 网站建设的注意网站 建设 深圳
  • 个人备案可以做影视网站吗wordpress页面图片插件