From cd32151083e895f0e6f665e43886c8db8104e5bc Mon Sep 17 00:00:00 2001 From: Areizen Date: Sat, 6 Aug 2022 21:16:37 +0200 Subject: [PATCH] fix(gui): correct Frida snippet for constructor (PR #1605) When hooking a constructor with Frida, call `$new` instead of `$init`. `$init` cannot be used to instantiate an object and is reserved for hooking. Co-authored-by: Your Name --- jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java index 6668ac95..6bfd6705 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java @@ -79,8 +79,11 @@ public final class FridaAction extends JNodeAction { JavaMethod javaMethod = jMth.getJavaMethod(); MethodInfo methodInfo = javaMethod.getMethodNode().getMethodInfo(); String methodName = StringEscapeUtils.escapeEcmaScript(methodInfo.getName()); + String callMethodName = methodName; + if (methodInfo.isConstructor()) { methodName = "$init"; + callMethodName = "$new"; } String shortClassName = javaMethod.getDeclaringClass().getName(); @@ -108,7 +111,7 @@ public final class FridaAction extends JNodeAction { + " console.log('%s ret value is ' + ret);\n" + " return ret;\n" + "};", - functionUntilImplementation, functionParametersString, methodName, logParametersString, methodName, + functionUntilImplementation, functionParametersString, methodName, logParametersString, callMethodName, functionParametersString, methodName); return generateClassSnippet(jMth.getJParent()) + "\n" + functionParameterAndBody; -- GitLab