标签: frida

如何从 iOS 设备上安装的 iOS 应用程序捕获打印报表?

我正在阅读有关开发 iOS 应用程序的一些良好实践,并研究使用 Console.app 监视从 App Store 安装的 iOS 应用程序日志的可能性。所以,我在这里进行测试,但我注意到print语句没有出现在 Console.app 中,而只NSLog出现在其中。我的问题是:有什么方法可以查看print使用设备上安装的 iOS 应用程序中的命令生成的日志吗?使用 Frida、Console.app 或任何其他方式?

如果没有其他方法,是否意味着print命令比命令更安全NSLog?这对我来说似乎非常违反直觉

xcode jailbreak ios swift frida

7
推荐指数
1
解决办法
1745
查看次数

Frida 服务器没有足够的权限

我在 Anbox 设置中运行 Android,我下载了 Anbox 的 frida-server 版本 android-x86_64。

我按照以下步骤操作

adb push frida-server-12.11.18-android-x86_64
 /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server-12.11.18-android-x86_64
"
adb shell "/data/local/tmp/frida-server-12.11.18-android-x86_64
 &"
Run Code Online (Sandbox Code Playgroud)

好吧,如果我尝试的话,现在我的问题来了

# frida-ps -Uai
Failed to enumerate applications: unable to find process with name 'system_server'
Run Code Online (Sandbox Code Playgroud)

但如果没有人工智能的工作,问题是无法看到正在运行的应用程序

frida-ps -U
 PID  Name
----  ------------------------------------
2333  frida-server-12.11.18-android-x86_64
1571  logcat
2335  logcat
  48  sh

Run Code Online (Sandbox Code Playgroud)

我的猜测是,这与 Anbox 内运行的 frida-server 的权限有关,我尝试以 root 身份启动它,但它使整个环境崩溃。

x86_64:/data/local/tmp $ ls -ll                                                                                                                       
total 110648
-rwxr-xr-x 1 u1_root u1_root 56645256 2020-10-15 16:11 frida-server-12.11.18-android-x86_64
drwxr-xr-x 2 root    root        4096 …
Run Code Online (Sandbox Code Playgroud)

android reverse-engineering frida

6
推荐指数
1
解决办法
2万
查看次数

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

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

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

in1.js:

'use strict';
var a = 'test';
function b() { console.log("function b"); };
Run Code Online (Sandbox Code Playgroud)

in2.js:

'use strict';
var c = 'test2';
var d = function () { console.log("function d"); };
Run Code Online (Sandbox Code Playgroud)

in3.js:

'use strict';
require('./in1.js');
require('./in2.js');
Run Code Online (Sandbox Code Playgroud)

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

frida-compile in3.js -o out.js
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find …
Run Code Online (Sandbox Code Playgroud)

javascript node.js frida

5
推荐指数
1
解决办法
6460
查看次数

查找手动注册(混淆)的本机功能地址

我想了解一个Android应用,其中包含一个foo在类中命名的本地方法com.app.Bar

在类内部,Bar有一个静态子句加载一个共享对象System.loadLibrary("libfoo.so"),我认为该共享对象是使用-fvisibility = hidden构建的,因为唯一的导出是JNI_OnLoad,否JNIEXPORT void JNICALL Java_com_app_Bar_foo,这意味着public native int foo不遵循命名约定

  1. 调用时的过程foo是什么?
  2. 如何提取的地址foo?我对Frida很熟悉
  3. 有没有办法输出全部JNINativeMethod[] methods

到目前为止,我尝试了什么?

  1. JNIAnalyzer输出13K行,看起来像JNI_OnLoad@@Base+0x712e

  2. Frida脚本尝试查找foo地址(无效)

function intercept(address) {
    try {
        Interceptor.attach(address, {
            onEnter: function(args) {
                console.log("onEnter", address);
            },
            onLeave: function(ignored) {}
        });
    } catch (e) {
        console.error(e);
    }
}
function Main() {
    var dlopen = new NativeFunction(Module.findExportByName(null, 'dlopen'), …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android reverse-engineering frida

5
推荐指数
2
解决办法
1889
查看次数

我的 Android 应用程序如何扫描自己的内存映射以查找已知的坏关键字,例如“Xposed”或“Frida”?

我正在工作的一个应用程序最近进行了笔测试。报告中提到的风险之一是它没有适当的 Hook 检测。我已经实现了 RootBeer 库,但这很容易避免。

测试人员为 Android 应用程序创建了一个 Frida 脚本,用于在运行时修改根检测逻辑。该脚本连接到 System.exit 方法以返回 false 而不是 true。这阻止了应用程序在检测到设备已被 root 后退出。

渗透测试人员建议我们实施尽可能多的不同检查以阻止逆向工程师。

其中一项检查是让 Android 应用程序扫描位于以下位置的自己的内存映射文件

/proc/<pid>/maps
Run Code Online (Sandbox Code Playgroud)

在哪里

<pid>
Run Code Online (Sandbox Code Playgroud)

是应用程序的进程 ID (PID)。

我检查了 Android 文档,只能找到有关处理内存的信息,但找不到有关扫描内存的信息。例如。https://developer.android.com/topic/performance/memory

我看到您可以“获取设备当前内存状态的 MemoryInfo 对象”。但这仅显示系统上的可用内存。

有没有人有解决这个问题的方法?

memory android detection xposed frida

5
推荐指数
1
解决办法
724
查看次数

当 SSL_get_fd 返回 -1 时,这意味着什么?

我正在使用 frida 分析一个程序,该程序肯定通过 SSL 连接到某个服务器。当我调用 时SSL_get_fd,它返回-1。从文档中我看到这意味着ssl不包装套接字(BIO 明确配置,因为我可以通过访问它SSL_get_rbio)。openssl 如何在没有套接字的情况下连接到服务器?有没有办法在不访问底层套接字的情况下查看对等地址/端口?

ssl openssl frida

5
推荐指数
0
解决办法
219
查看次数

预期返回值与 java.lang.Boolean 兼容

我正在尝试使用 Frida 绕过 Android 应用程序中的 rootDetection。

我找到了检查设备是否已root的类和方法,并尝试更改此方法的返回值,但我收到了一个令人困惑的错误:

错误: isDeviceRooted 的实现预期返回值与 java.lang.Boolean 兼容

我的脚本很简单:

var hook = Java.use("app.name.someClasses.RootUtils");
hook.isDeviceRooted.overload().implementation = function() {
   return false;
}
Run Code Online (Sandbox Code Playgroud)

我尝试谷歌搜索,但我不明白 Boolean(false) 和 false 之间有什么区别,它只是一个包装器,说真的,我应该在这里返回什么才能与 main 方法返回值兼容?

java android frida

5
推荐指数
1
解决办法
3909
查看次数

SSL_get_fd 返回-1

我尝试调试 Android 应用程序以使用该项目打印SSL_writeSSL_read数据,并使用SSL_get_fd 打印文件描述符(以获取 src&dst ip )

但对于某些SSL*函数,函数SSL_get_fd总是返回 -1 而不是返回正确的 fd ,而对于另一些函数,SSL*函数SSL_get_fd返回正确的 fd 。

当我尝试使用函数SSL_is_init_finished来检查那些SSL*返回 fd = -1 的函数时,我得到 1(true)

我看到了同样的问题:What does it Mean, When SSL_get_fd returns -1? 但那里没有答案。

我怎样才能得到正确的 fd SSL *

ssl openssl file-descriptor android-debug frida

5
推荐指数
0
解决办法
198
查看次数

(FRIDA) 无法生成:在准备应用程序启动时无法访问 zygote64;尝试禁用 Magisk Hide 以防它处于活动状态

我在 Android 8 (Oreo) 中以root身份运行 Frida Server (frida-server-12.5.8-android-arm64.xz) :

-rwxrwxrwx 1 根 38152536 2019-05-26 23:34 irwan

./irwan &
Run Code Online (Sandbox Code Playgroud)

然后我尝试在 apk 中取消固定 ssl :

C:\Users\irwan>frida -U -f xxx.xxxxx -l "C:\Users\irwan\OneDrive\pentest\payload\frida\unpinning_universal.js"
Run Code Online (Sandbox Code Playgroud)

输出错误:

生成失败:在准备应用程序启动时无法访问 zygote64;尝试禁用 Magisk Hide 以防它处于活动状态

如下图:

截图在这里

  • 弗里达 12.5.8
  • 蟒蛇 3.7.3
  • 视窗 10 专业版

有人可以帮助我为这个问题实施或创建分步解决方案吗?谢谢。

android frida

4
推荐指数
1
解决办法
7272
查看次数

Frida 将对象转换为字符串列表

当我用 Frida 连接 Android 应用程序时,我一直在尝试打印列表的内容,但没有任何运气。

我想在Java中挂钩的对象看起来像这样

import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.List;

public final class Hello extends HelloParent{

    @JsonIgnore
    public final List sampleList;

}
Run Code Online (Sandbox Code Playgroud)

这个公共对象没有任何吸气剂,所以我必须求助于使用另一个对象(我们称该对象为“Bye”)的方法(byeMethodB)来监视这个值。

这就是我的 frida 脚本的样子:

setTimeout(function() {

    Java.perform(function(){
        
        Java.use("Bye").byeMethodA.implementation = function(){

            try{
                //Returns a Hello object
                var helloObject = Java.cast(this.byeMethodB(),Java.use("Hello"))
                printListContent(Java.cast(helloObject.sampleList,Java.use("java.util.List"))))
            }catch(err){
                console.log(err)
            }
        }

    })
},1000)

function printListContent(list){

    var listIter = list.iterator()
    while(listIter.hasNext()){
        console.log(listIter.next())
    }

}
Run Code Online (Sandbox Code Playgroud)

如果不将“helloObject.sampleList”对象转换为列表,输出将如下所示:

[object Object]
Run Code Online (Sandbox Code Playgroud)

所以我确信它不为空

如果我使用 进行投射Java.cast(helloObject.sampleList,Java.use("java.util.List"))

我收到以下错误:

java.util.List

我也尝试过:

Java.cast(helloObject.sampleList,Java.use("java.util.List<>"))

java.util.List<>

(我很确定它是一个字符串) Java.cast(helloObject.sampleList,Java.use("java.util.List<String>"))

java.util.List

Java.cast(helloObject.sampleList,Java.use("java.util.List<java.lang.String>"))

java.util.List<java.lang.String>

Java.cast(helloObject.sampleList,Java.use("[String"))

[L字符串

Java.cast(helloObject.sampleList,Java.use("[Ljava.lang.String"))

[Ljava.lang.String

进展一点也不顺利。希望得到一些帮助

javascript java android frida

4
推荐指数
1
解决办法
8920
查看次数