-
Notifications
You must be signed in to change notification settings - Fork 297
Open
Description
我参照这ServiceHookTransform写了一个ActivityHookTransform,但是没有hook到,反编译activity发现也没有插入自定义的代码
test
class ActivityHookTransform: BaseHookTransform() {
override fun ignoreClass(context: TransformContext, klass: ClassNode): Boolean {
var ignore = super.ignoreClass(context, klass)
if (klass.isInterface) {
return true
}
if (!ignore) {
ignore = !PrivacyPluginUtil.privacyPluginUtil.isActivity(klass.formatName(), klass.formatSuperName())
}
return ignore
}
override fun transform(
project: Project,
privacyExtension: PrivacyExtension,
context: TransformContext,
klass: ClassNode
): ClassNode {
println("onCreate tranform"+klass.formatName())
HookedDataManger.MANAGER.addHookService(klass.formatName())
val onStartCommandMethod = klass.methods.find { it.name == "onCreate" }
if(onStartCommandMethod!=null){
println("onCreate tranform"+klass.formatName())
}
onStartCommandMethod?.instructions?.iterator()?.asSequence()?.forEach {
if (it is InsnNode) {
if (it.opcode == Opcodes.RETURN || it.opcode == Opcodes.IRETURN) {
val newInstructions = InsnList()
newInstructions.add(LdcInsnNode("xxxxx") )
newInstructions.add(LdcInsnNode("onCreate end======") )
newInstructions.add(MethodInsnNode(Opcodes.INVOKESTATIC, "android/util/Log", "i", "(Ljava/lang/String;Ljava/lang/String;)I", false) )
newInstructions.add(InsnNode(Opcodes.POP))
onStartCommandMethod.instructions.insertBefore(it, newInstructions)
}
}
}
return klass
}
}
Metadata
Metadata
Assignees
Labels
No labels