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

Function generateFridaMethodOverload

js/rpc.js:54–109  ·  view source on GitHub ↗
(clzVarName, radarMethod)

Source from the content-addressed store, hash-verified

52};
53
54function generateFridaMethodOverload(clzVarName, radarMethod) {
55 var overloadJs = "";
56 if (!radarMethod.isLocal.value || radarMethod.methodName.value.indexOf("-") > -1) {
57 return overloadJs;
58 }
59 var methodVarName = clzVarName + "_method_" + radarMethod.methodName.value + "_" + Math.random().toString(36).slice( - 4);
60 overloadJs += "var " + methodVarName + "=" + clzVarName + "." + radarMethod.methodName.value + ".overload(";
61 if (radarMethod.paramsNum.value > 0) {
62 for (var j = 0; j < radarMethod.paramsNum.value; j++) {
63 overloadJs += "'";
64 overloadJs += radarMethod.paramsClasses.value[j];
65 overloadJs += "'";
66 if (j < (radarMethod.paramsNum.value - 1)) {
67 overloadJs += ",";
68 }
69 }
70 }
71 overloadJs += ");";
72 overloadJs += methodVarName;
73 overloadJs += ".implementation = function(";
74 var paramsJs = "";
75 for (var j = 0; j < radarMethod.paramsNum.value; j++) {
76 paramsJs += radarMethod.parameterNames.value[j];
77 if (j < (radarMethod.paramsNum.value - 1)) {
78 paramsJs += ",";
79 }
80 }
81 overloadJs += paramsJs;
82 overloadJs += ") {";
83 var handle = "this";
84 if (radarMethod.isStatic.value) {
85 handle = clzVarName;
86 }
87 if (handle == "this") {
88 overloadJs += "var executor = this.hashCode();";
89 } else {
90 overloadJs += "var executor = 'Class';";
91 }
92 overloadJs += "var beatText = '" + radarMethod.describe.value + "';";
93 overloadJs += "var beat = newMethodBeat(beatText, executor);";
94 if (radarMethod.returnClass.value != "void") {
95 overloadJs += "var ret = ";
96 }
97 overloadJs += methodVarName + ".call(" + handle;
98 if (radarMethod.paramsNum.value > 0) {
99 overloadJs += "," + paramsJs + ");";
100 } else {
101 overloadJs += ");";
102 }
103 overloadJs += "printBeat(beat);";
104 if (radarMethod.returnClass.value != "void") {
105 overloadJs += "return ret;";
106 }
107 overloadJs += "};";
108 return overloadJs;
109}
110
111//生成构造方法的overload

Callers 1

generateMethodHookJsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected