1. Java.perform(function () {
    2. console.log("start hooking...");
    3. function showstack() {
    4. var log = Java.use("android.util.Log");
    5. var Throwable = Java.use("java.lang.Throwable");
    6. console.log(log.getStackTraceString(Throwable.$new()))
    7. }
    8. var ArrayList = Java.use("java.util.ArrayList");
    9. ArrayList.add.overload("java.lang.Object").implementation = function (a) {
    10. var v=a.toString()
    11. if (v.indexOf("username")!=-1){
    12. console.log("toString", v,typeof v)
    13. showstack();
    14. }
    15. return this.add(a);
    16. }
    17. var ArrayList = Java.use("java.util.ArrayList");
    18. ArrayList.add.overload('int', 'java.lang.Object').implementation = function (a, b) {
    19. if (b.toString().indexOf("username")!=-1){
    20. console.log(a," || ",b)
    21. }
    22. return this.add(a, b);
    23. }
    24. })
    1. ArrayList有两个重载:(‘int’, ‘java.lang.Object’)和(“java.lang.Object”)

    image.png

    注意点,在 javaScript或者jQuery中字符串比较没有equals()方法,要比较两个字符串是否相等可以直接用==或者is()进行判断

    image.png

    我们平时在hook代码里面使用的是Frida-tools给我们提供的工具。当我们使用equals报错时候不妨使用==或者is();
    或者吧对象转为字符串,用indexof 是否等于-1进行判断;

    这两个空了遇到了再进行补充:
    Vector
    LinkedList