0x00 frida简介
frida是近几年才推出的一款全平台的逆向神器。功能上主要采用动态hook的方式,加入log,修改逻辑等。可以对java,native等hook。
具体使用情况,谁用谁知道。废话不多说,直接上干货。
这里仅仅讨论安卓上面的情况,其他平台的咱不做研究
0x01 在java中的一些应用
1、延时Hook
安卓有一些多包的问题,另外有一些类是通过动态加载的方式来加载的。可能在hook触发的那个时间点,不会找到未加载的代码。
这个时候,可以通过在class loader上面加hook的方式,在hook的代码下进行二次绑定加载。
这里没有代码,需要各位同学自己尝试一下。
2、打印调用栈
调用栈,这个很有用。在分析的过程中,不一定会一定找到需要分析或者hook的函数。可能根据字符串等蛛丝马迹,仅仅找到一部分信息。
使用java调用栈,就可以找到方法的调用关系。
代码如下Java.perform(function () {
var thread = Java.use('java.lang.Thread');
var instance = thread.$new();
function where(stack){
var at = ""
for (var i = 0; i
at += stack[i].toString() + "\n";
}
return at;
}
var ConnectionErrorMessages = Java.use("com.google.android.gms.common.internal.ConnectionErrorMessages");
ConnectionErrorMessages.getErrorMessage.overload('android.content.Context','int').implementation = function(mContext,mI){
console.log("gms i:"+ mI);
var ret = this.getErrorMessage(mContext,mI);
console.log("return:" + ret);
var stack = instance.currentThread().getStackTrace();
var full_call_stack