Как получить значение с помощью Frida - PullRequest
0 голосов
/ 08 мая 2019

Как я могу получить значение "ключа", используя frida? (или paramString1 (аналогично ключу) использовал первый аргумент функции EncryptDir)

Я пробовал этот код на Python, но он не работал. Меня не волнует получение значения ключа или регистрация функции шифрования. Я хочу получить значение ключа шифрования AES.

import frida, sys

def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)


PACKAGE_NAME = "com.ins.screensaver"


jscode= """
console.log("[*] Starting script");
    Java.perform(function() {

        console.log("[*] Hooking key");
        var Activity = Java.use("com.ins.screensaver.LockActivity");
        Activity.key.overload().implementation = function(){
            var mm = this.key;
            console.log(mm);
        }



    });
"""
try:
    process = frida.get_usb_device().attach(PACKAGE_NAME)
    script = process.create_script(jscode)
    script.on('message', on_message)
    print('[*] Running Hook')
    script.load()
    sys.stdin.read()
except Exception as e:
    print(e)

package com.ins.screensaver;

public class LockActivity
  extends AppCompatActivity
{
  final String[] ***key*** = new String[1];


[[[[[[[[skip...]]]]]]]]]


# paramString1 == key
private void encryptDir(final String ***paramString1***, String paramString2)
  {
    byte[] arrayOfByte = Utils.hexStringToByteArray(paramString1);
    paramString2 = new File(paramString2).listFiles();
    int i = 0;
    int j = paramString2.length;
    while (i < j)
    {
      final File localFile = paramString2[i];
      try
      {
        if (localFile.isDirectory())
        {
          new Thread(new Runnable()
          {
            public void run()
            {
              LockActivity.this.encryptDir(paramString1, localFile.getAbsolutePath());
            }
          }).start();
        }
...