首页 > 其他分享 >frida hook md5加密类

frida hook md5加密类

时间:2023-08-08 12:00:33浏览次数:33  
标签:Java String bytesarray update send hook var frida md5

import frida,sys

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


jscode = """
//打印调用堆栈
function printstack(){
  send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));
}

//array 转成 string
function array2string(array){
  var buffer = Java.array('byte',array);
  var result = "";
  for(var i = 0; i< buffer.length; ++i){
      result += (String.fromCharCode(buffer[i]));
  }
  return result;
}

Java.perform(
  function(){
      var MessageDigest = Java.use('java.security.MessageDigest');

      MessageDigest.update.overload('[B').implementation = function(bytesarray){
          send('I am here 0:');
          //var String = Java.use('java.lang.String').$new(bytesarray);
          send("ori:"+array2string(bytesarray));
          printstack();
          this.update(bytesarray);
      },
      MessageDigest.update.overload('java.nio.ByteBuffer').implementation = function(bytesarray){
          send('I am here 1:');
          //var String = Java.use('java.lang.String').$new(bytesarray);
          //send("ori:"+array2string(bytesarray));
          //printstack();
          this.update(bytesarray);
      },
      MessageDigest.update.overload('byte').implementation = function(bytesarray){
          send('I am here 2:');
          //var String = Java.use('java.lang.String').$new(bytesarray);
          //send("ori:"+array2string(bytesarray));
          //printstack();
          this.update(bytesarray);
      },
      MessageDigest.update.overload('[B', 'int', 'int').implementation = function(bytesarray){
          send('I am here 3:');
          //var String = Java.use('java.lang.String').$new(bytesarray);
          //send("ori:"+array2string(bytesarray));
          //printstack();
          this.update(bytesarray);
      },
      //hook什么加密方法
      MessageDigest.getInstance.overloads[0].implementation = function(algorithm){
          send("call ->fetInstance for " + algorithm);
          return this.getInstance.overloads[0].apply(this,arguments);
      };
})
"""

process = frida.get_usb_device(timeout=1000).attach('包名')
script = process.create_script(jscode)
script.on('message',on_message)
print('[*] Running CTF')
script.load()
sys.stdin.read()
 

标签:Java,String,bytesarray,update,send,hook,var,frida,md5
From: https://www.cnblogs.com/CJTARRR/p/17613811.html

相关文章

  • React Hook 的闭包陷阱
    参考文章1.从reacthooks“闭包陷阱”切入,浅谈reacthooks2.一文讲透ReactHooks闭包陷阱 HooksHooks是react自16.8引入的新特性,使得开发者在摆脱class定义组件的同时,也能够进行状态管理。这样,react组件完全进入函数式(FP)编程范式。既然进入了函数式编程的......
  • 基于md5加密的模拟管理员登录系统
    importosimportpandasaspddefmd5(string:str=''):  importhashlib  md5=hashlib.md5()  md5.update(string.encode('utf-8'))  returnmd5.hexdigest()#In[1]:defmd5(string:str=''):^M#  ...:  importhash......
  • 前端获取 文件md5值
    //md5值计算exportfunctionfileToMd5(file:Blob){returnnewPromise((resolve)=>{constfileReader=newFileReader();fileReader.onloadend=(ev)=>{resolve(CryptoJs.MD5(CryptoJs.enc.Latin1.parse(ev.target.result)).toString(CryptoJs......
  • MD5加密
    AandroidMD5加密/***MD5加密**@paramstr*@return*/publicstaticStringgetMD5Str(Stringstr){MessageDigestmessageDigest=null;try{messageDigest=MessageDigest.getInstance("MD5"......
  • 查看证书/apk指纹md5/sha1/sha256
    Android证书在线一键生成工具查看apk指纹keytool-printcert-jarfileandroid_debug.apk查看证书职位keytool-list-v-keystoreandroid.keystore......
  • 直播app hook解密
    文章备份,写于2022-8-5通过Bytecode-Viewer反编译APP,搜索X-arg字段得到加密方法查看代码得知加密类为AesUtil,在其中找到了加密解密方法Mumu模拟器安装app。使用adb连接运行fdserverD:\NOX\Nox\bin>adbconnect127.0.0.1:7555alreadyconnectedto127.0.0.1:7555 D:\N......
  • Windows校验文件MD5和SHA值的方法
    1、需求背景下载或传输文件后,需要计算文件的MD5、SHA256等校验值,以确保下载或传输后的文件和源文件一致2、校验方法如上图所示,可以使用Windows自带的certutil命令来计算一个文件的校验值命令格式为:certutil-hashfile文件名校验值类型certutil命令支持的校验值类型......
  • React Hooks 中的属性详解
    ReactHooks是React16.8版本中新增的特性,允许我们在不编写class的情况下使用state和其他的React特性。Hooks是一种可以让你在函数组件中“钩入”React特性的函数。以下是一些常用的ReactHooks,并附有详细的用法和代码示例。1.useStateuseState是一个Hook函数,让......
  • C#调用Java MD5加密 转换成base64编码
    publicbyte[]GetUTF8(stringcontent){byte[]bytes=Encoding.UTF8.GetBytes(content);returnbytes;}publicbyte[]GetHash(byte[]sources){MD5CryptoServiceProviderMD5CSP=newMD5CryptoS......
  • PHPHook框架详解 实现代码注入和拦截的利器
    PHPHook框架详解实现代码注入和拦截的利器PHPHook框架是一种具有强大功能的代码注入和拦截工具,它被广泛应用于各种Web开发中。本文将为大家详细介绍PHPHook框架的实现原理,以及如何利用该框架实现代码注入和拦截。PHPHook框架详解实现代码注入和拦截的利器一、PHPHook框架简介......