逆向杂记1
frida-trace 的例子
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -m
//跟踪应用程序中调用的所有方法并将其输出"*"
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -i "FUNCTION_NAME"
//追踪名为“FUNCTION_NAME”的函数"*"
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -I "CLASS_NAME.*"
//“CLASS_NAME”的类追踪所有方法"*"
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -I "CLASS_NAME.METHOD_NAME"
//仅追踪名为“METHOD_NAME”的特定方法,其中“CLASS_NAME”是该方法所属的类。
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -L "LIBRARY_NAME.*"
//仅追踪名为“LIBRARY_NAME”的库中的所有方法
frida-trace -U -f YOUR_APP_NAME_OR_PACKAGE_NAME -i "FUNCTION_OR_METHOD_NAME" -a "PARAMETER_NAME"
//此命令将仅追踪带有名为“PARAMETER_NAME”的特定参数的函数或方法
$ frida-trace -U -i "*Activity.onCreate" -m '-*myapp*' -f my.package.name
//.跟踪应用程序打开某个 Activity 时创建的类
$ frida-trace -U -i "*:*" -m '-*myapp*' -f my.package.name
//输出应用程序启动时调用的所有函数
$ frida-trace -U -i "*Http*:*" -f my.package.name
//跟踪所有使用 HTTP 进行通信的函数:
$ frida-trace -U -i "*" -m '-*myapp*' -f my.package.name
//输出应用程序启动后调用的所有类和函数
$ frida-trace -U -m "-*com.my.package*" -i "Java.use('com.my.package.SomeClass').*"
//跟踪特定类中所有的函数
$ frida-trace -U -m '-*myapp*' -i "Java.use('my.package.name').myFunction"
//跟踪某一特定函数的调用
$ frida-trace -U -i "*Activity.onCreate" -f my.package.name | grep "\-> Java Class: " | cut -d' ' -f4 | sort -u
//输出应用程序启动时调用的所有类
$ frida-trace -U -i "Java.use('my.package.name.SomeClass').$init"
//追踪某个类的构造函数
$ frida-trace -U -i "Java.use('my.package.name.SomeClass').myFunction" -I "return"
//追踪某个函数并输出其返回值
$ frida-trace -U -i "*" -m "-android.*" -f my.package.name | grep "\-> J " | cut -d' ' -f4 | sort -u
//跟踪应用程序使用的所有类,不包含系统类
$ frida-trace -i "Java.use('my.package.name.SomeClass').*"
//追踪类的所有方法,包括从父类继承的方法
$ frida-trace -i "Java.use('my.package.name.SomeClass').myFunction" -I "args, ret"
//追踪某个函数并打印出其调用时的参数和返回值
$ frida-trace -m "-android.*" -i "exports:*" -f my.package.name
//跟踪应用程序使用的所有 JNI 函数
$ frida-trace -m "-android.*" -i "Java.*" -f my.package.name
//追踪应用程序使用的所有 Java API
$ frida-trace -i "Java.use('my.package.name.SomeClass').myFunction" -m "+-*" -I "syscall"
//追踪某个方法中的所有系统调用
$ frida-trace -m "-android.*" -i "Java.use('java.net.*')" -f my.package.name
//跟踪应用程序使用的所有网络类
$ frida-trace -m "-android.*" -i "Java.use('javax.*').*" -f my.package.name
//跟踪应用程序使用的所有加密类
$ frida-trace -m "-android.*" -i "Java.use('android.*Service').*"
//跟踪应用程序使用的所有 Android 系统服务
$ frida-trace -U -i "Java.use('my.package.name.SomeClass').myFunction" -I "stack"
//追踪某个函数并输出其调用堆栈
$ frida-trace -m "-android.*" -i "exports:*" -f my.package.name
//追踪应用程序使用的所有 native 函数
$ frida-trace -m "-android.*" -i "Java.use('android.content.BroadcastReceiver').onReceive"
//跟踪应用程序中所有广播的接收
$ frida-trace -U -i "Java.use('my.package.name.SomeClass').myFunction" -I "duration"
//追踪某个函数的执行时间
$ frida-trace -U -i "*" -m "-android.*" -f my.package.name > trace.log
//追踪应用程序使用的所有类和函数,并将结果输出到文件中
$ frida-trace -U -i "Java.use('okhttp3.mockwebserver.MockWebServer').*(..)" -I "args, ret" -I "mockWebServer.getHostName, mockWebServer.getPort, request.method, request.url, response.code, response.body.string, response.headers.size()"
//跟踪应用程序的网络请求,输出请求的 URL 和响应
$ frida-trace -U -m "-android.*" -i "exports:*" -f my.package.name > jni-trace.log
//追踪应用程序中的 JNI 函数并将其输出到文件中
$ frida-trace -m "-android.*" -i "Java.vm.*" -f my.package.name
//跟踪应用程序中 JNI 函数的调用:
$ frida-trace -U -i "Java.use('javax.crypto.Cipher').getInstance" -I "args"
//追踪应用程序中使用的所有常见加密算法:
$ frida-trace -U -i "*Activity.onCreate" -f my.package.name
//跟踪应用程序启动时创建的类
$ frida-trace -U -i "*:*" -f my.package.name
//输出应用程序启动时调用的所有函数
$ frida-trace -U -i "Java.use('java.net.Socket').connect"
//所有的网络通信