MCPcopy Create free account
hub / github.com/CreditTone/hooker / generateMethodHookJs

Function generateMethodHookJs

js/rpc.js:157–191  ·  view source on GitHub ↗
(radarClassResult, methodName)

Source from the content-addressed store, hash-verified

155
156//RadarClassResult string
157function generateMethodHookJs(radarClassResult, methodName) {
158 if (radarClassResult.isEnum.value || radarClassResult.isInterface.value) {
159 return "";
160 }
161 var hookJs = "";
162 var hasHook = false;
163 var clzHookJs = "";
164
165 var clzVarName = radarClassResult.className.value.replace(/[\.$;]/g, "_") + "_clz";
166 clzHookJs += "var " + clzVarName + " = Java.use('" + radarClassResult.className.value + "');";
167 var methods = radarClassResult.methods.value;
168 var hookMethod = (methodName == "?" || methodName == "*");
169 var hookConstructorMethod = (methodName == "_" || methodName == "*");
170 for (var i = 0; i < methods.length; i++) {
171 var radarMethod = methods[i];
172 if (hookMethod || radarMethod.matchName(methodName)) {
173 hasHook = true;
174 clzHookJs += generateFridaMethodOverload(clzVarName, radarMethod);
175 }
176 }
177
178 //是否需要hook构造方法
179 if (hookConstructorMethod) {
180 hasHook = true;
181 var constructorMethods = radarClassResult.constructorMethods.value;
182 for (var i = 0; i < constructorMethods.length; i++) {
183 clzHookJs += generateFridaConstructorMethodOverload(clzVarName, constructorMethods[i]);
184 }
185 }
186
187 if (hasHook) {
188 hookJs += clzHookJs;
189 }
190 return hookJs;
191};
192
193function class_exists(className) {
194 var exists = false;

Callers 1

rpc.jsFile · 0.85

Tested by

no test coverage detected