Java.perform(function () {console.log("start hooking...");function showstack() {var log = Java.use("android.util.Log");var Throwable = Java.use("java.lang.Throwable");console.log(log.getStackTraceString(Throwable.$new()))}// 1. HashMap的put方法var HashMap = Java.use("java.util.HashMap");HashMap.put.implementation = function (a, b) {if (a.equals("username")) {//条件判断console.log(a, " ", b)showstack()}return this.put(a, b)}})//额外说明:当我们最开始hook时,不能使用showstack()进行堆栈打印,因为输出量过大,会使APP崩溃。//当我们第一次通过HashMap打印出关键字段,然后通过“equals”或者“==”进行判断继而打印

frida -U -F -l .\test.js -o stack.txt
“-o stack.txt” 即创建一个输出的文本,把日志放入其中,以方便我们查看;
hook过程中不会写入,只有当我们执行exit退出Frida hook时才会写入文本内。
