本帖最后由 bigbigban21 于 2022-11-10 10:47 编辑
小白一枚,最近正在学习安卓逆向,由于前阵子旁观大佬用frIDA hook目标app的加解密流程后挖到许多高危,所以现在也在照猫画虎学用frida,在hook某方法时遇到问题
app的部分源代码如下:
[Java] 纯文本查看 复制代码 public static String getAppVerifyValue(WWidgetData curWData, long timeStamp) {
String md5 = getMD5Code(curWData.m_appId + ":" + curWData.m_appkey + ":" + timeStamp);
String value = "md5=" + md5 + ";ts=" + timeStamp;
return value;
}
public static String getMD5Code(String value) {
if (value == null) {
value = "";
}
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(value.getBytes());
byte[] md5Bytes = md.digest();
StringBuffer hexValue = new StringBuffer();
for (byte b : md5Bytes) {
int val = b & 255;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
现在想要拿到每次计算得到的md5值,我目前的脚本如下:
[JavaScript] 纯文本查看 复制代码 Java.perform(function () {
var CommClass = Java.use('xxx.xxx.xxx.xxx.xxx.xxx')
CommClass.getAppVerifyValue.implementation = function(curWData, timeStamp){
let md5 = getMD5Code(curWData.m_appId + ":" + curWData.m_appkey + ":" + timeStamp)
console.log("md5=" + md5 + ";ts=" + timeStamp)
return "md5=" + md5 + ";ts=" + timeStamp
}
})
疑问主要有两点:
1、传入的curWData是一个类的实例化对象,能否直接使用curWData.m_appkey获取类属性?
2、hook的方法中调用了另一个方法getMD5Code,脚本中能否直接使用getMD5Code?如果不能该如何调用?再hook一个getMD5Code方法吗? |