frida java层加密自吐,修改str ,dlopen,内存读写,so内存dump

修改int 返回值

retval.replace(1000)

arg[1]=ptr(1000);



操作字符串的返回值1

1, 修改对应内存里的字符串
在事先知道这是个指针的情况:  
js 函数定义str2bytes ,str2hex 
比如md5的update 
var new_str="koohai"
arg[1].writeBytearray(str2bytes(str2hex(new_str)+'00')) // 因为要给个结束 00 结束 
arg[2]是长度     arg[2] = ptr(new_str.length)\
但是md5 有三次updaet  所以加个判断 

var soAddr = Module.findBaseAddress("libxiaojianbang.so");
console.log("soAddr", soAddr);
var MD5Update = soAddr.add(0x1D68);
var newStr = "gdfgdhfgjghjgkhjkh;kl;k;";
var newStrAddr = Memory.allocUtf8String(newStr);
Interceptor.attach(MD5Update, {
    onEnter: function (args) {
        this.args0 = args[0];
        this.args1 = args[1];
        if(args[1].readCString() == "xiaojianbang"){
            args[1] = newStrAddr;
            console.log(hexdump(args[1]));
            args[2] = ptr(newStr.length);

你可能感兴趣的:(爬虫逆向,javascript)