(radarClassResult, methodName)
| 155 | |
| 156 | //RadarClassResult string |
| 157 | function 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 | |
| 193 | function class_exists(className) { |
| 194 | var exists = false; |
no test coverage detected