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

推荐西安优秀的高端网站建设公司域名后面wordpress

推荐西安优秀的高端网站建设公司,域名后面wordpress,专业维护网站的公司,武陟住房和城乡建设局网站类列表 每一个ClassLoader里面的类列表,类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

类列表

  每一个ClassLoader里面的类列表,类的数量都是固定的。

对上一节中的dex反编译

  使用DexClassLoader类动态加载插件dex
  利用jadx对dex进行反编译可以看到有哪些类

在这里插入图片描述

源码分析

  • BaseDexClassLoader
    BaseDexClassLoader类加载器开始分析
    BaseDexClassLoader类里有一个pathList属性,它的类型是DexPathList,分析DexPathList类的定义
    在这里插入图片描述

  • DexPathList
    DexPathList类里有一个dexElements属性,它是Element类型,分析Element类的定义
    在这里插入图片描述

  • Element
    Element类是DexPathList的内部类,它有一个属性是dexFile,它是DexFile类型,分析DexFile类的定义

    在这里插入图片描述

  • DexFile
    DexFile里找到一个方法getClassNameList(),获取类名,它需要一个参数cookie
    在这里插入图片描述
    cookie参数就是DexFile类的属性mCookie了在这里插入图片描述
    接下来通过反射调用getClassNameList()方法就可以得到类加载器可以加载的类了。

代码

public static void getClassListInClassLoader(ClassLoader classLoader) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {// 获取BaseDexClassLoader类Class BaseDexClassLoaderClass=Class.forName("dalvik.system.BaseDexClassLoader");// 获取BaseDexClassLoader类中的pathList字段Field pathListField = BaseDexClassLoaderClass.getDeclaredField("pathList");// 设置权限pathListField.setAccessible(true);// 从传进去的参数classLoader加载器对象中获取pathList对象Object pathListobj = pathListField.get(classLoader);// 获取DexElemtnt类Class DexElemtntClass = Class.forName("dalvik.system.DexPathList");// 获取DexElemtnt类中的dexElements字段Field dexElements = DexElemtntClass.getDeclaredField("dexElements");// 设置权限dexElements.setAccessible(true);//  pathList对象中获取dexElements对象Object[] dexElementsArratobj = (Object[]) dexElements.get(pathListobj);// 获取Element内部类Class ElementClass = Class.forName("dalvik.system.DexPathList$Element");// 从Element内部类中获取字段dexFileField dexFileField = ElementClass.getDeclaredField("dexFile");设置权限dexFileField.setAccessible(true);  // 取消权限检查// 获取DexFile类Class DexFileClass = Class.forName("dalvik.system.DexFile");// 从DexFile类中获取字段mCookie Field mCookieField = DexFileClass.getDeclaredField("mCookie");// 设置权限mCookieField.setAccessible(true);// 获取字段mFileNameField mFIleNameField = DexFileClass.getDeclaredField("mFileName");// 设置权限mFIleNameField.setAccessible(true);// 从DexFile类中获取getClassNameList方法Method getClassNameListMethod = DexFileClass.getDeclaredMethod("getClassNameList",Object.class);// 设置权限getClassNameListMethod.setAccessible(true);// 遍历dexElements,dexElement里面有dexFilefor(Object dexElementobj:dexElementsArratobj){// 获取dexfile对象Object dexfileObj = dexFileField.get(dexElementobj);// 获取mCookie对象Object mCookieobj = mCookieField.get(dexfileObj);// 获取mFileName对象String mFileNameobj = (String) mFIleNameField.get(dexfileObj);// 调用getClassNameList方法获取类列表String[] classList = (String[]) getClassNameListMethod.invoke(null,mCookieobj);for(String classname:classList){// 打印信息Log.e("classlist",classLoader.toString()+"---"+mFileNameobj+"---"+classname);}}
}

调用getClassListInClassLoader()

getClassListInClassLoader(dexClassLoader)
成功获取到了dexClassLoader类加载器中可以加载的类
在这里插入图片描述

http://www.yayakq.cn/news/718470/

相关文章:

  • 大连html5网站建设费用平面设计包括哪些软件
  • 东莞长安网站制作做网站租服务器吗
  • 安娜尔返利机器人怎么做网站和县网页定制
  • 展示型网站有哪些功能网站建设经验交流
  • 做算命网站挣钱么百度推广销售员好做吗
  • 网站关键词排名优化应该怎么做网站搭建哪里找方便
  • 做视频推广有哪几个网站个人网站有前途吗
  • 潍坊昌乐县城乡建设局网站现在网站建设用什么软件
  • 一件代发应该在哪个网站上做房产中介 网站模板
  • 备案查询站长工具大数据技术建设网站
  • 网站建设合同 英文省住房和城乡建设厅网站
  • 网站建设贴吧郑州网站建设多少钱
  • 九州建网站网站联盟推广
  • 做展馆好的设计网站阜阳营销型网站建设
  • 电商网站设计公司排行榜网站推广工作
  • 网站备案查询工信部手机版中国精品课程网站
  • 罗湖医院网站建设wordpress插件放那个文件夹
  • 自己建设网站赚钱适合代码新手做的网站
  • 上海机电设备公司网站建设服装网站建设的宗旨有哪些
  • 西宁市城市道路建设规划网站成都制作网站的公司简介
  • php学校网站源码九江哪家网站建设公司好
  • 免费网站托管怎样做淘宝联盟网站
  • 山西网站建设公司商城网站系统建设
  • qt做网站虚拟体验网站
  • 网站建设问题小程序优点
  • 烟台网站开发多少钱深圳设计网站有哪些
  • 微网站怎么用做网站推广电话
  • js实现网站简体转繁体网站开发多少钱一天是
  • 可信网站认证申请毕业生登记表自我鉴定模板
  • 三站合一的网站怎么做php网站开发需要多久