一.原理
安卓開發調用md5加密時候都會調用到系統類java.security.MessageDigest
加密時候會會調用里面2個關鍵方法update
以及digest
根據這個原理我們開始寫代碼吧
二.代碼
hook.js
function Uint8ArrayToString(fileData){ //Uint8Array轉字符串
var dataString = "";
for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
// console.log(dataString)
}
return dataString
}
function byteToHexString(uint8arr) { //byte數組轉16進制字符串
if (!uint8arr) {
return '';
}
var hexStr = '';
for (var i = 0; i < uint8arr.length; i++) {
var hex = (uint8arr[i] & 0xff).toString(16);
hex = (hex.length === 1) ? '0' + hex : hex;
hexStr += hex;
}
return hexStr.toUpperCase();
}
Java.perform(function () {
var BB = Java.use("java.security.MessageDigest");
BB.update.overload('[B').implementation = function (args1, args2, args3, args4, args5, args6) {
console.log(Uint8ArrayToString(args1))
var args = this.update(args1)
console.log("update", args)
return args
}
BB.digest.overload().implementation = function (args1, args2, args3, args4, args5, args6) {
var args = this.digest()
console.log(byteToHexString(args))
return args
}
});
可以直接cmd窗口調用(老手推薦)
frida -U 包名 -l js
#修改js他會熱更新
可以用python調用(新手推薦)
import logging
import frida
import sys
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
with open('hook.js', 'r', encoding='utf-8') as f: # js文件
sta = ''.join(f.readlines())
rdev = frida.get_remote_device()
session = rdev.attach("xxxxxx") #app包名
print(session)
script = session.create_script(sta)
print(script)
def show(message,data):
print(message)
script.on("message",show)
# 加載腳本
script.load()
sys.stdin.read()
三.顯示效果
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話
為什么博客園要限制字數,簡單明確的說明方法他不香嗎,一定要來一堆廢話