FRIDA must for Mobile AST
6 марта 2026 г.·259 views

🛠 FRIDA must for Mobile AST

Салют,

Сегодня посмотрим с тобой на тулу, которая становится крайне полезной для тестирования мобильных клиентов с первых шагов. Рекомендую сразу смотреть в ее сторону, потому что она поможет тебе правильно выстраивать понимание анализа защищенности мобильного приложения.

Frida — это динамический инструмент для перехвата вызовов в процессах и последующего инжектирования. Работает в связке клиент (CLI/ Python/ Node.js) и рантайм внутри процесса целевого приложения. Также используют Frida Gadget как встроенную библиотеку.

Помогает

• перехватывать и модифицировать вызовы функций хуками

• изменять аргументы и выводы результатов

• воздействовать на память процесса в рантайме

• обходить клиентские проверки (root/ jailbreak detect, SSL pinning, лицензирование)

• делать живой динамический анализ без исходников и перекомпиляции

Команды

$ frida-ps -U # процессы на USB‑устройстве

$ frida-ps -ai # приложения с иконками (mobile)

$ frida-trace -U -i "com.example.app.auth.LoginManager.validateCredentials" com.example.app # android трассировка без написания JS

$ frida-trace -i "SSL_*" -f /usr/bin/curl # трассировка всех функций SSL_* в нативном бинарнике

&#036; frida-trace -i "fopen" -p <PID> # трассировка всеx вызовов fopen в текущем процессе

Пример

&#036; frida -U -f -n com.example.app -l script.js # загрузить JS‑скрипт attach по имени пакета через USB

Java.perform(function () {

var LoginManager = Java.use("com.example.app.auth.LoginManager");

// Перехватываем метод validateCredentials(String user, String pass)

LoginManager.validateCredentials.implementation = function (user, pass) {

console.log("[*] validateCredentials called");

console.log(" user:", user);

console.log(" pass:", pass);

// Можно менять параметры

// user = "test@example.com";

// pass = "P@ssw0rd&#33;";

var result = this.validateCredentials(user, pass);

console.log(" result:", result);

return result;

};

});

QA auto

import frida, sys

JS_CODE = """

Java.perform(function () {

var Cls = Java.use("com.example.app.auth.LoginManager");

Cls.validateCredentials.implementation = function (user, pass) {

send("validateCredentials: " + user + " / " + pass);

return this.validateCredentials(user, pass);

};

});

"""

def on_message(message, data):

print("[*] Message:", message)

device = frida.get_usb_device()

pid = device.spawn(["com.example.app"])

session = device.attach(pid)

script = session.create_script(JS_CODE)

script.on("message", on_message)

script.load()

device.resume(pid)

sys.stdin.read()

Итого:

• Позволяет динамически наблюдать и изменять поведение приложений без исходников и перекомпиляции

• Идеален для AppSec‑задач на уровне mobile/desktop‑клиентов, крипто‑логики, протоколов, анти‑фрод и анти‑тампер механизмов

• Требует аккуратности и понимания внутренних API и платформенных особенностей

• Практически незаменим в pentest’ах мобильных приложений, когда нужно обходить защиты и «заглядывать внутрь» рантайма

#toolchain #sast #appsec #reco #dast #mast

#toolchain#sast#appsec#reco#dast#mast
Открыть в Telegram