es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reemplaza el término “buffer” en Frida utilizando JS.

Con Frida imprimo el SSL_write.

Interceptor.attach(Module.findExportByName("libssl.so", "SSL_write"), {
    onEnter: function (args) {

        console.log(args[1].readByteArray(args[2].toInt32()));

    }
});

Deseo reemplazar el búfer para escribir en SSL, si el búfer contiene ASCII de “AAAAAA”, reemplazarlo con “BBBBBB”.

¿Cómo puedo hacer eso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar el búfer para escribir en SSL en Frida, puedes modificar el búfer args[1] en la función onEnter del método Interceptor.attach. Aquí tienes un ejemplo de implementación para reemplazar el Ascii de AAAAAA por BBBBBB:

    Interceptor.attach(Module.findExportByName("libssl.so", "SSL_write"), {
      onEnter: function(args) {
        var buf = args[1];
        var size = args[2].toInt32();
    
        var pattern = "414141414141"; // Ascii para "AAAAAA"
        var replacement = "424242424242"; // Ascii para "BBBBBB"
    
        var hexBuf = buf.readByteArray(size).toString("hex");
    
        if (hexBuf.indexOf(pattern) != -1) {
          hexBuf = hexBuf.replace(new RegExp(pattern, "g"), replacement);
          buf.writeByteArray(hexBuf.match(/.{2}/g).map(function(hex) { return parseInt(hex, 16); }));
        }
      }
    });
    

    En este ejemplo, primero definimos dos variables pattern y replacement para las cadenas de Ascii que se van a reemplazar. Luego, leemos el búfer args[1] en un ByteArray y lo convertimos en una cadena hexadecimal. También obtenemos el tamaño del búfer utilizando args[2].toInt32(). A continuación, comprobamos si la cadena de patrón existe en el búfer hexadecimal usando indexOf(). Si existe, reemplazamos todas las apariciones del patrón utilizando replace(). Por último, convertimos la cadena hexadecimal modificada de nuevo en un ByteArray y la escribimos en el búfer utilizando writeByteArray(). Esto reemplazará todas las apariciones de AAAAAA en el búfer por BBBBBB.

Comments are closed.