问题标签 [frida]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9430 浏览

android - Frida 生成过程在 Android 上失败

运行命令 "frida-trace -U -i open -f com.example.hellojni" 后,应用程序 HelloJni 将正常设置。但是在我执行了同伴 python 脚本之后,我遇到了崩溃。

控制台中显示日志“hello”。但是应用程序崩溃了,甚至 UI 都没有出现。logcat 打印了如下内容:

我的脚本错了吗?我正在使用 android4.4.4(dalvik 模式)、windows7、frida7.0.11 .. 任何帮助将不胜感激。

0 投票
1 回答
1795 浏览

ios - 在 frida-trace onEnter 中停止函数调用

我正在玩frida,特别frida-trace是在 iOS 上。

当一个方法被钩住并且我可以记录参数时onEnter,有没有办法让这个函数调用提前结束而不调用原始方法?

我已经尝试添加return;到该onEnter方法,但是onLeave仍然被调用并且中间的方法被调用。

0 投票
2 回答
8354 浏览

android - Android使用Frida挂钩抽象类方法调用

我正在尝试学习Frida并且到目前为止已经进行了一些实验。幸运的是,我可以找到足够的示例和教程来帮助我完成任务。然而,此时此刻,我手头有一项非常具体的任务。

所以让我们说下面是我指的Frida钩子:

现在根据我到目前为止的理解,对于上面的 Java.use,我是说每当创建 myPackage.myClass 的 Object 并且如果该对象调用方法methodM1时,请改为控制我的javascript函数并执行所提到的任何操作在那里。

哪个按预期完成工作。然而,重点(为了这个讨论而感兴趣)是:如果对象被制造出来,那么这就会发生。

同样,如果我们也讨论 Java.choose() 而不是 Java.use,情况也会一样。所以即使在这种情况下,我们说如果对象被制作,然后调用我的回调。

现在,如果我试图挂钩到抽象类的方法会发生什么所以假设我正在尝试挂钩该方法

java.security.KeyPairGenerator 的“静态 getInstance(String)”(这是一个抽象类)。

这个类是抽象的,它的对象永远不会真正被制造出来。并且该方法是静态的,它直接使用类名本身调用。所以在这种情况下,Java.use() 和 Java.choose()都无法提供帮助(如果我上面的理解是正确的)。

那么,在这种情况下,我该如何连接到 getInstance() 呢?

这是我已经尝试过的东西:

但这不起作用。同样,我在这里的假设是,每当创建 Object 并调用 getInstance() 时,就挂钩它。但是在这里,KeyPairGenerator是一个抽象类,它本身从来没有真正被实例化过。我也试过:

类名.getInstance()

代替

item.getInstance()

这也不起作用。

0 投票
0 回答
9191 浏览

android - Android 使用 Frida 挂钩 HTTPS 流量

我正在尝试学习 Frida 以连接到各种应用程序。具体来说,我正在尝试连接到 Android 应用程序,我正在使用Appmon 项目。该项目有一个 HTTPS.js 脚本,它从 HttpUrlConnection 类挂钩到 getInputStream 和 getOutputStream。HTTPS.js 脚本成功地挂钩了这些方法,但是当发送 HTTPS 流量时,我看到的数据是加密的。

根据有关HTTPUrlConnection的 Android 文档,如果 URL.openconnection() 方法接收到 HTTPS url,它将返回一个 HTTPSUrlConnection 对象。

HttpsURLConnection的Android 文档指出它是一个扩展 HttpURLConnection 的抽象类。

公共抽象类 HttpURLConnection 扩展了 HttpURLConnection

我搜索了android源代码,发现 HttpsURLConnection 是抽象的,并且由 DelegatingHttpsURLConnection 扩展,这也是抽象的。DelegatingHttpsURLConnection 由HttpsURLConnectionImpl扩展

我已经迷上了

com.android.okhttp.internal.huc.HttpsURLConnectionImpl

这是成功的,但数据仍然是加密的。这是代码

顺便说一句,一旦我开始工作,我计划提交一个拉取请求。

Android 文档有一个关于如何创建 HTTP 请求的示例:

读到这里告诉我只调用 getInputStream() 方法应该返回明文流,但它似乎没有这样做。

问题:如何从 HTTPS 流量中获取明文数据?我可以看到标题,只是看不到实际数据

更新 10/13

我想知道我看到的数据是否没有加密,只是编码。这是我收到的数据的截图:

响应头表明它的 gzip 编码

我想知道它是否与此stackoverflow答案有关,尽管传出请求确实具有“Accept-Encoding: gzip”标头。我尝试添加对 GZIPInputStream 的调用,但应用程序不喜欢响应

更新 2 所以我能够让它捕获数据,这是 gzip 的问题。我现在遇到的问题是 Android 设备上的应用程序需要一个 GZIPed 输入流。要在 Frida 中显示数据,我必须通过 GZIPInputStream 运行它,但还不确定如何再次压缩它以发送到应用程序。我尝试使用 GZIPOutputStream 进行简短的尝试,但没有奏效。这是我更新的代码。

0 投票
1 回答
10797 浏览

frida - 使用 Frida 打印堆栈跟踪

我能够使用 Frida 成功连接到 Android 方法,但我试图找出谁在调用该方法。我可以发现我是否可以用 Frida 重写该方法以在调用该方法时打印堆栈跟踪。我已经尝试了一些事情,但他们都有某种错误。这是我尝试过的最新方法。

这导致以下错误

知道如何实现这一目标吗?

0 投票
3 回答
5225 浏览

android - 如何在android中更改frida服务器端口?

默认情况下,android中的frida-server在安装后运行在端口27042(127.0.0.1:27042)上。如何将此端口号更改为 567 (127.0.0.1:567) 之类的其他端口号?有什么办法吗?

0 投票
1 回答
4059 浏览

javascript - 如何将多个 Frida JS 文件/函数导入运行时 CLI?

我正在为同事准备一个 Frida 测试平台,但我不熟悉 JavaScript 和 Node.JS。我想创建一个单独的 JS 文件来导入其他几个 JS 文件,每个文件都有几个功能。但是当我对一些导入其他函数的 Node.JS 代码使用 frida-compile 时,REPL 解释器不会将函数/变量拉入范围。因此,例如:

我有一个包含 3 个 JavaScript 文件的平面目录:

in1.js:

in2.js:

in3.js:

然后我在 Windows 10 + Python 3.6 + Node.JS 9.5 上运行 frida-compile:

这导致以下输出:

最后,当我尝试将其导入 Frida CLI 时,以 OWASP iGoat 项目为例,我无法访问这些函数中的任何一个:

我错过了什么...如何在 Frida CLI 中访问 a、b、c 和 d?

0 投票
2 回答
8237 浏览

frida - 使用 Frida 打印类数据成员

我可以成功挂钩这个 getAuthToken 方法

这是我的 Frida JS 脚本

但我无法打印 mAuthToken。不确定我需要使用哪种语法。

我试过了

this.mAuthToken 也是,并打印以下内容

“[对象对象]”

0 投票
1 回答
356 浏览

javascript - Frida 不在控制台时崩溃

尝试打印所有类或我尝试加载的任何js时出现此错误。

该脚本取自这里,它有一些非常有用的钩子。

js部分是——

我对弗里达很陌生。

Frida版本——frida-server-10.6.54-android-arm64 最新版本

更新

我意识到只有在加载 js 文件时才会发生这种情况,但如果将相同的 js 粘贴到控制台上则不会发生这种情况。

在任何应用程序上都是一样的。

0 投票
1 回答
878 浏览

java - 弗里达 Java 窗口

是否可以在 Windows 上使用 Frida 来跟踪 Java 应用程序中的方法?

我已经使用它在 Android 上使用 Javascript 调试 APK,但我不能在 Windows 上的 Java 应用程序中做同样的事情。

更具体的问题:我需要挂钩一些混淆函数并获取参数值和返回值。