我正在尝试获取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 };
,类加载器没有任何声明的字段。 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类吗?