获取已加载的Java类

时间:2019-07-11 10:58:29

标签: java android

我正在尝试获取Android应用程序的已加载类。 在其他stackOverflow帖子中,我找到了在Android上不起作用的解决方案:

  • export enum RegistrationStatuses { initial = "initial", personalDetails = "personalDetails", selectBroker = "selectBroker", appropriatenessQuestionnaire = "appropriatenessQuestionnaire", documentCheck = "documentCheck", completed = "completed" }; export type RegistrationStatus = keyof typeof RegistrationStatuses; export type RegistrationStatus = keyof typeof RegistrationStatuses; @pre<User>("save", function(next: HookNextFunction) { // Update registration timestamps if (this.isModified("registrationStatus")) { if (!this.registrationStatusTimeStamps) { this.registrationStatusTimeStamps[this.registrationStatus] = new Date(); } else { this.registrationStatusTimeStamps[this.registrationStatus] = new Date(); } } return next(); }) export class User extends Typegoose { @prop({ default: {}, _id: false, }) public registrationStatusTimeStamps: { [k in RegistrationStatuses]?: Date }; ,类加载器没有任何声明的字段。
  • 反思
  • 仪器
  • 详细运行Java命令

Android的解决方案使用的是DexFile(自Android API 26起已弃用)。 它似乎也不适用于所有设备。 对我来说,它没有显示自己的类,只列出了几个ClassLoader.class.getDeclaredField('classes')系统类。

应从我要从中查找类的应用程序中执行代码。 不管是Java还是本地(C)代码都没关系,尽管我认为后者要困难得多。

我知道有可能像frida(https://github.com/frida/frida-java/blob/master/index.js#L164)那样做,但是它们使用Javascript和回调函数,而且我似乎无法弄清楚如何将其转移到Java或C。

还有另一种方法来查找当前Android应用程序中加载的所有Java类吗?

0 个答案:

没有答案