1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| function hook_java() { Java.perform(function(){ var hello_jni = Java.use("com.example.hellojni.HelloJni"); hello_jni.sign2.implementation = function(str,str2){ var ret = this.sign2(str,str2); console.log("sign2 arg1:",str,"arg2:",str2,"ret:",ret); return ret; } }); }
function call_sign2() { //设置固定值注定调用 Java.perform(function(){ Java.choose("com.example.hellojni.HelloJni",{ onMatch:function(instance){ console.log("instance:",instance.sign2("0123456789","abcdefgh")) }, onComplete:function(ret) { } }); }) }
function hook_native() { var base_libjni = Module.findBaseAddress("libhello-jni.so"); var sub_13558 = base_libjni.add(0x13558); //根据输入及返回结果交叉引用,首要分析sub函数。 // Interceptor.attach(sub_13558,{ // onEnter:function(args){ // this.arg0 = args[0]; // console.log("sub_13558 OnEnter: arg1=",ptr(args[1]).readCString(),"arg2=",args[2]); // }, // onLeave:function(retval){ // console.log("sub_13558 onLeave: arg0=",ptr(this.arg0).add(1).readCString()); // console.log("sub_13558 onLeave: retval=",ptr(retval).readCString()); // } // })
// var sub_12D70 = base_libjni.add(0x12D70); // Interceptor.attach(sub_12D70,{ // onEnter:function(args){ // this.str1 = args[0]; // this.str2 = args[1]; // this.v51 = args[2]; // console.log("sub_12D70 arg0:",ptr(args[0]).add(1).readCString(),"arg1:",ptr(args[1]).add(1).readCString(),"\n"); // }, // onLeave(retval){ // console.log("sub_12D70 ret arg0:",ptr(this.str1).add(1).readCString(),"arg1:",ptr(this.str2).add(1).readCString(),"\n"); // console.log("sub_12D70 ret arg2:\n",hexdump(ptr(this.v51).readPointer())); // } // })
var sub_162b8 = base_libjni.add(0x162b8); // Interceptor.attach(sub_162b8,{ // onEnter:function(args){ // this.arg0 = args[0]; // this.arg1 = args[1]; // this.arg2 = args[2]; // console.log("sub_162b8 arg0:\n",ptr(args[0]).readCString(),"\narg1:\n",args[1],"\n"); // }, // onLeave(retval){ // //console.log("sub_162b8 ret arg0:",hexdump(this.arg0),"arg1:",hexdump(this.arg1),"\n"); // console.log("sub_162b8 ret arg2:\n",ptr(this.arg2).readLong()); // console.log("sub_162b8 retval\n",ptr(retval).readCString()); // } // })
var sub_130F0 = base_libjni.add(0x130F0); // Interceptor.attach(sub_130F0,{ // onEnter:function(args){ // this.arg0 = args[0]; // console.log("sub_130F0 arg0:\n",hexdump(args[0],{ offset: 0, length: 64, header: true, ansi: true }),"\narg1:\n",ptr(args[1]).readCString(),"\narg2:\n",args[2]); // }, // onLeave(retval){ // console.log("sub_130F0 ret arg0:\n",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); // } // })
var sub_154D4 = base_libjni.add(0x154D4); Interceptor.attach(sub_154D4,{ onEnter:function(args){ this.arg0 = args[0]; this.arg1 = args[1]; this.arg2 = args[2]; console.log("sub_154D4 OnEnter: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_154D4 OnEnter: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_154D4 OnEnter: arg2=",args[2]); }, onLeave(retval){ console.log("sub_154D4 OnLeave: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_154D4 OnLeave: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); } })
var sub_14844 = base_libjni.add(0x14844); Interceptor.attach(sub_14844,{ onEnter:function(args){ this.arg0 = args[0]; this.arg1 = args[1]; console.log("sub_14844 OnEnter: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_14844 OnEnter: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); }, onLeave(retval){ console.log("sub_14844 OnLeave: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_14844 OnLeave: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); } })
var sub_158AC = base_libjni.add(0x158AC); Interceptor.attach(sub_158AC,{ onEnter:function(args){ this.arg0 = args[0]; this.arg1 = args[1]; console.log("sub_158AC OnEnter: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_158AC OnEnter: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); }, onLeave(retval){ console.log("sub_158AC OnLeave: arg0=",hexdump(this.arg0,{ offset: 0, length: 64, header: true, ansi: true })); console.log("sub_158AC OnLeave: arg1=",hexdump(this.arg1,{ offset: 0, length: 64, header: true, ansi: true })); } })
var sub_15F1C = base_libjni.add(0x15F1C); // Interceptor.attach(sub_15F1C,{ // onEnter:function(args){ // this.arg0 = args[0]; // this.arg2 = args[2]; // console.log("sub_15F1C OnEnter: arg0=",ptr(args[0]).readCString(),"arg1=",args[1],"arg2=",args[2]); // }, // onLeave(retval){ // console.log("sub_15F1C OnLeave: arg2=\n",hexdump(this.arg2,{ offset: 0, length: 64, header: true, ansi: true })); // } // }) }
function main() { hook_java() hook_native(); }
setImmediate(main);
|