frida api学习(持续更新)
frida api
setTimeout_clearTimeout_Java.perform_log
相关基本知识
setTimeout(func, delay[, …parameters])
:在延迟delay
毫秒后调用函数func
,可选择传递一个或多个参数。返回一个可以传递给clearTimeout
以取消它的ID。clearTimeout(id)
:取消由setTimeout
调用返回的ID。Java.perform(fn)
:确保当前线程已附加到虚拟机并调用fn
。如果应用程序的类加载器尚不可用,将延迟调用fn
。如果不需要访问应用程序的类,请使用Java.performNow()
。console.log(line), console.warn(line), console.error(line)
:将line
写入你的基于Frida的应用程序控制台。
setTimeout(func, delay[, …parameters])
:- 作用:在指定的延迟时间后调用函数
func
。如果需要,还可以传递参数给函数。 - 特点:返回的ID可以用于
clearTimeout
取消未执行的函数。
- 作用:在指定的延迟时间后调用函数
clearTimeout(id)
:- 作用:取消由
setTimeout
返回的ID,防止函数被调用。 - 特点:非常有用,用于条件性的函数调用取消。
- 作用:取消由
Java.perform(fn)
:- 作用:确保当前线程已附加到Java虚拟机并调用传递的函数
fn
。 - 特点:在需要操作应用程序的类时使用,如果类加载器不可用会延迟调用。适用于Android逆向工程和动态分析。
- 特性:如果不需要类访问可以使用
Java.performNow()
立即执行。
- 作用:确保当前线程已附加到Java虚拟机并调用传递的函数
console.log(line), console.warn(line), console.error(line)
:- 作用:将消息写入控制台,适用于调试和记录信息。
- 特点:分别用于普通日志、警告和错误消息。
setTimeout
返回的ID
当你使用setTimeout(func, delay)
时,这个函数会返回一个唯一的标识符(ID)。这个ID是一个整数,表示该特定的定时器。这个定时器将在指定的delay
时间之后调用你指定的函数func
。
clearTimeout(id)
的作用
clearTimeout(id)
用于取消一个未执行的定时器。你需要传入之前由setTimeout
返回的ID。这个函数会告诉浏览器或JavaScript引擎“别再执行这个定时器了”,因此防止了指定的函数func
在预定时间之后被调用。
示例:
javascript
1 | // 设置一个定时器,在5000毫秒后执行函数 |
在这个示例中,我们设置了一个定时器setTimeout
,它会在5秒后执行一个打印函数。但在定时器到期之前,我们通过调用clearTimeout(timerId)
取消了这个定时器。所以,5秒之后什么都不会被打印出来。
为什么需要取消定时器
取消定时器在以下情况中非常有用:
- 条件控制:当某个条件在定时器触发前达成,不再需要执行预定操作时。
- 资源管理:避免无用的操作执行,可以节省系统资源。
- 逻辑控制:在程序中改变执行路径或逻辑时,可以避免原定的操作干扰。
这正是clearTimeout
的价值所在,允许你有条件地控制定时任务的执行。
评论