update patches

This commit is contained in:
Ylarod
2023-07-20 10:33:52 +08:00
parent 976a382644
commit 19563e9b48
10 changed files with 35 additions and 392 deletions

View File

@@ -131,9 +131,16 @@ jobs:
export ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}
git clone --recurse-submodules https://github.com/frida/frida
cd frida
cd frida-core
git am ../../patches/frida-core/*.patch
cd ../
for path in ../patches
do
name=$(basename $path)
real=$(realpath $path)
echo "Apply patches in $real to frida/$name"
cd $name
git am ../../patches/$name/*.patch
cd ..
echo $i
done
make core-android-arm
make core-android-arm64
make core-android-x86

View File

@@ -1,43 +0,0 @@
From 0874adb5e0e53d90da56e542053b9f14adccfb1a Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 1/8] strongR-frida: string_frida_rpc
---
lib/base/rpc.vala | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/base/rpc.vala b/lib/base/rpc.vala
index 3695ba8c..02602abf 100644
--- a/lib/base/rpc.vala
+++ b/lib/base/rpc.vala
@@ -17,7 +17,7 @@ namespace Frida {
var request = new Json.Builder ();
request
.begin_array ()
- .add_string_value ("frida:rpc")
+ .add_string_value ((string) GLib.Base64.decode("ZnJpZGE6cnBj="))
.add_string_value (request_id)
.add_string_value ("call")
.add_string_value (method)
@@ -70,7 +70,7 @@ namespace Frida {
}
public bool try_handle_message (string json) {
- if (json.index_of ("\"frida:rpc\"") == -1)
+ if (json.index_of ((string) GLib.Base64.decode("ImZyaWRhOnJwYyI=")) == -1)
return false;
var parser = new Json.Parser ();
@@ -99,7 +99,7 @@ namespace Frida {
return false;
string? type = rpc_message.get_element (0).get_string ();
- if (type == null || type != "frida:rpc")
+ if (type == null || type != (string) GLib.Base64.decode("ZnJpZGE6cnBj="))
return false;
var request_id_value = rpc_message.get_element (1);
--
2.30.2

View File

@@ -1,33 +0,0 @@
From aafd3e9f938e6e94d6b181718b0c2d85192168b4 Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 2/8] strongR-frida: io_re_frida_server
---
server/server.vala | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/server/server.vala b/server/server.vala
index e2d1b66d..42c86739 100644
--- a/server/server.vala
+++ b/server/server.vala
@@ -1,7 +1,7 @@
namespace Frida.Server {
private static Application application;
- private const string DEFAULT_DIRECTORY = "re.frida.server";
+ private static string DEFAULT_DIRECTORY = null;
private static bool output_version = false;
private static string? listen_address = null;
private static string? certpath = null;
@@ -50,6 +50,7 @@ namespace Frida.Server {
};
private static int main (string[] args) {
+ DEFAULT_DIRECTORY = GLib.Uuid.string_random();
Environment.init ();
#if DARWIN
--
2.30.2

View File

@@ -1,25 +0,0 @@
From 7a036bdfb159ad73bb208647555e2c632760e743 Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 3/8] strongR-frida: pipe_linjector
---
src/linux/frida-helper-backend-glue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/linux/frida-helper-backend-glue.c b/src/linux/frida-helper-backend-glue.c
index b99963a1..3a8dbfa2 100644
--- a/src/linux/frida-helper-backend-glue.c
+++ b/src/linux/frida-helper-backend-glue.c
@@ -947,7 +947,7 @@ frida_inject_instance_init_fifo (FridaInjectInstance * self)
{
const int mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
- self->fifo_path = g_strdup_printf ("%s/linjector-%u", self->temp_path, self->id);
+ self->fifo_path = g_strdup_printf ("%s/%p%u", self->temp_path, self ,self->id);
mkfifo (self->fifo_path, mode);
chmod (self->fifo_path, mode);
--
2.30.2

View File

@@ -1,33 +0,0 @@
From 6fdcb5ae0b7f398e0eb2b23f22f9ab01ae2e09bf Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 4/8] strongR-frida: io_frida_agent_so
---
src/linux/linux-host-session.vala | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/linux/linux-host-session.vala b/src/linux/linux-host-session.vala
index 301799ed..059e75a9 100644
--- a/src/linux/linux-host-session.vala
+++ b/src/linux/linux-host-session.vala
@@ -128,12 +128,13 @@ namespace Frida {
var blob64 = Frida.Data.Agent.get_frida_agent_64_so_blob ();
var emulated_arm = Frida.Data.Agent.get_frida_agent_arm_so_blob ();
var emulated_arm64 = Frida.Data.Agent.get_frida_agent_arm64_so_blob ();
- agent = new AgentDescriptor (PathTemplate ("frida-agent-<arch>.so"),
+ var random_prefix = GLib.Uuid.string_random();
+ agent = new AgentDescriptor (PathTemplate (random_prefix + "-<arch>.so"),
new Bytes.static (blob32.data),
new Bytes.static (blob64.data),
new AgentResource[] {
- new AgentResource ("frida-agent-arm.so", new Bytes.static (emulated_arm.data), tempdir),
- new AgentResource ("frida-agent-arm64.so", new Bytes.static (emulated_arm64.data), tempdir),
+ new AgentResource (random_prefix + "-arm.so", new Bytes.static (emulated_arm.data), tempdir),
+ new AgentResource (random_prefix + "-arm64.so", new Bytes.static (emulated_arm64.data), tempdir),
},
AgentMode.INSTANCED,
tempdir);
--
2.30.2

View File

@@ -1,179 +0,0 @@
From 2ca848b58ebcf36fda34c5eaba4fa85d2ad438c6 Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 5/8] strongR-frida: symbol_frida_agent_main
---
src/agent-container.vala | 2 +-
src/anti-anti-frida.py | 27 +++++++++++++++++++++++++++
src/darwin/darwin-host-session.vala | 2 +-
src/embed-agent.sh | 9 +++++++++
src/linux/linux-host-session.vala | 2 +-
src/qnx/qnx-host-session.vala | 2 +-
src/windows/windows-host-session.vala | 2 +-
tests/test-agent.vala | 2 +-
tests/test-injector.vala | 2 +-
9 files changed, 43 insertions(+), 7 deletions(-)
create mode 100644 src/anti-anti-frida.py
diff --git a/src/agent-container.vala b/src/agent-container.vala
index 256e5ed7..83f6a3e8 100644
--- a/src/agent-container.vala
+++ b/src/agent-container.vala
@@ -20,7 +20,7 @@ namespace Frida {
assert (container.module != null);
void * main_func_symbol;
- var main_func_found = container.module.symbol ("frida_agent_main", out main_func_symbol);
+ var main_func_found = container.module.symbol ("main", out main_func_symbol);
assert (main_func_found);
container.main_impl = (AgentMainFunc) main_func_symbol;
diff --git a/src/anti-anti-frida.py b/src/anti-anti-frida.py
new file mode 100644
index 00000000..d30168d6
--- /dev/null
+++ b/src/anti-anti-frida.py
@@ -0,0 +1,27 @@
+import lief
+import sys
+import random
+import os
+
+if __name__ == "__main__":
+ input_file = sys.arantigv[1]
+ print(f"[*] Patch frida-agent: {input_file}")
+ random_name = "".join(random.sample("ABCDEFGHIJKLMNO", 5))
+ print(f"[*] Patch `frida` to `{random_name}``")
+
+ binary = lief.parse(input_file)
+
+ if not binary:
+ exit()
+
+ for symbol in binary.symbols:
+ if symbol.name == "frida_agent_main":
+ symbol.name = "main"
+
+ if "frida" in symbol.name:
+ symbol.name = symbol.name.replace("frida", random_name)
+
+ if "FRIDA" in symbol.name:
+ symbol.name = symbol.name.replace("FRIDA", random_name)
+
+ binary.write(input_file)
diff --git a/src/darwin/darwin-host-session.vala b/src/darwin/darwin-host-session.vala
index 8f1336c5..0f6fae59 100644
--- a/src/darwin/darwin-host-session.vala
+++ b/src/darwin/darwin-host-session.vala
@@ -332,7 +332,7 @@ namespace Frida {
private async uint inject_agent (uint pid, string agent_parameters, Cancellable? cancellable) throws Error, IOError {
uint id;
- unowned string entrypoint = "frida_agent_main";
+ unowned string entrypoint = "main";
#if HAVE_EMBEDDED_ASSETS
id = yield fruitjector.inject_library_resource (pid, agent, entrypoint, agent_parameters, cancellable);
#else
diff --git a/src/embed-agent.sh b/src/embed-agent.sh
index 380e8a32..d07f4588 100755
--- a/src/embed-agent.sh
+++ b/src/embed-agent.sh
@@ -9,6 +9,7 @@ host_os="$6"
resource_compiler="$7"
resource_config="$8"
+custom_script="$output_dir/../../../../frida-core/src/anti-anti-frida.py"
priv_dir="$output_dir/frida-agent@emb"
case $host_os in
@@ -30,6 +31,10 @@ collect_generic_agent ()
else
touch "$embedded_agent"
fi
+ if [ -f "$custom_script" ]; then
+ python3 "$custom_script" "$embedded_agent"
+ fi
+
embedded_agents+=("$embedded_agent")
}
@@ -62,6 +67,10 @@ case $host_os in
exit 1
fi
+ if [ -f "$custom_script" ]; then
+ python3 "$custom_script" "$embedded_agent"
+ fi
+
exec "$resource_compiler" --toolchain=gnu -c "$resource_config" -o "$output_dir/frida-data-agent" "$embedded_agent"
;;
*)
diff --git a/src/linux/linux-host-session.vala b/src/linux/linux-host-session.vala
index 059e75a9..1221de64 100644
--- a/src/linux/linux-host-session.vala
+++ b/src/linux/linux-host-session.vala
@@ -422,7 +422,7 @@ namespace Frida {
var stream_request = Pipe.open (t.local_address, cancellable);
uint id;
- string entrypoint = "frida_agent_main";
+ string entrypoint = "main";
string agent_parameters = make_agent_parameters (t.remote_address, options);
var linjector = injector as Linjector;
#if HAVE_EMBEDDED_ASSETS
diff --git a/src/qnx/qnx-host-session.vala b/src/qnx/qnx-host-session.vala
index a7e5f51d..24b1f518 100644
--- a/src/qnx/qnx-host-session.vala
+++ b/src/qnx/qnx-host-session.vala
@@ -182,7 +182,7 @@ namespace Frida {
var stream_request = Pipe.open (t.local_address, cancellable);
- var id = yield qinjector.inject_library_resource (pid, agent_desc, "frida_agent_main",
+ var id = yield qinjector.inject_library_resource (pid, agent_desc, "main",
make_agent_parameters (t.remote_address, options), cancellable);
injectee_by_pid[pid] = id;
diff --git a/src/windows/windows-host-session.vala b/src/windows/windows-host-session.vala
index bae0f6be..630d0bb0 100644
--- a/src/windows/windows-host-session.vala
+++ b/src/windows/windows-host-session.vala
@@ -274,7 +274,7 @@ namespace Frida {
var stream_request = Pipe.open (t.local_address, cancellable);
var winjector = injector as Winjector;
- var id = yield winjector.inject_library_resource (pid, agent, "frida_agent_main",
+ var id = yield winjector.inject_library_resource (pid, agent, "main",
make_agent_parameters (t.remote_address, options), cancellable);
injectee_by_pid[pid] = id;
diff --git a/tests/test-agent.vala b/tests/test-agent.vala
index cb666dbb..66c407f8 100644
--- a/tests/test-agent.vala
+++ b/tests/test-agent.vala
@@ -444,7 +444,7 @@ Interceptor.attach(Module.getExportByName('libsystem_kernel.dylib', 'open'), ()
assert_nonnull (module);
void * main_func_symbol;
- var main_func_found = module.symbol ("frida_agent_main", out main_func_symbol);
+ var main_func_found = module.symbol ("main", out main_func_symbol);
assert_true (main_func_found);
main_impl = (AgentMainFunc) main_func_symbol;
diff --git a/tests/test-injector.vala b/tests/test-injector.vala
index 81df3e16..e4fb6730 100644
--- a/tests/test-injector.vala
+++ b/tests/test-injector.vala
@@ -250,7 +250,7 @@ namespace Frida.InjectorTest {
var path = Frida.Test.Labrats.path_to_library (name, arch);
assert_true (FileUtils.test (path, FileTest.EXISTS));
- yield injector.inject_library_file (process.id, path, "frida_agent_main", data);
+ yield injector.inject_library_file (process.id, path, "main", data);
} catch (GLib.Error e) {
printerr ("\nFAIL: %s\n\n", e.message);
assert_not_reached ();
--
2.30.2

View File

@@ -1,25 +0,0 @@
From 3f729d795063022a7136139c78fc3788d091c158 Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 6/8] strongR-frida: thread_gum_js_loop
---
src/anti-anti-frida.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/anti-anti-frida.py b/src/anti-anti-frida.py
index d30168d6..b6a8e1aa 100644
--- a/src/anti-anti-frida.py
+++ b/src/anti-anti-frida.py
@@ -25,3 +25,8 @@ if __name__ == "__main__":
symbol.name = symbol.name.replace("FRIDA", random_name)
binary.write(input_file)
+
+ # gum-js-loop thread
+ random_name = "".join(random.sample("abcdefghijklmn", 11))
+ print(f"[*] Patch `gum-js-loop` to `{random_name}`")
+ os.system(f"sed -b -i s/gum-js-loop/{random_name}/g {input_file}")
--
2.30.2

View File

@@ -1,26 +0,0 @@
From 2d63299647f698b0c8d5c165c08edf1edf57b9dc Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 7/8] strongR-frida: thread_gmain
---
src/anti-anti-frida.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/anti-anti-frida.py b/src/anti-anti-frida.py
index b6a8e1aa..bd67c606 100644
--- a/src/anti-anti-frida.py
+++ b/src/anti-anti-frida.py
@@ -30,3 +30,9 @@ if __name__ == "__main__":
random_name = "".join(random.sample("abcdefghijklmn", 11))
print(f"[*] Patch `gum-js-loop` to `{random_name}`")
os.system(f"sed -b -i s/gum-js-loop/{random_name}/g {input_file}")
+
+
+ # gmain thread
+ random_name = "".join(random.sample("abcdefghijklmn", 5))
+ print(f"[*] Patch `gmain` to `{random_name}`")
+ os.system(f"sed -b -i s/gmain/{random_name}/g {input_file}")
--
2.30.2

View File

@@ -1,25 +0,0 @@
From 1c19492c453426c6b9f7af868e9b24b0734d9617 Mon Sep 17 00:00:00 2001
From: hluwa <hluwa888@gmail.com>
Date: Mon, 16 Aug 2021 10:55:11 +0800
Subject: [PATCH 8/8] strongR-frida: protocol_unexpected_command
---
src/droidy/droidy-client.vala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/droidy/droidy-client.vala b/src/droidy/droidy-client.vala
index e784e0d1..95ca0deb 100644
--- a/src/droidy/droidy-client.vala
+++ b/src/droidy/droidy-client.vala
@@ -974,7 +974,7 @@ namespace Frida.Droidy {
case "OPEN":
case "CLSE":
case "WRTE":
- throw new Error.PROTOCOL ("Unexpected command");
+ break; //throw new Error.PROTOCOL ("Unexpected command");
default:
var length = parse_length (command_or_length);
--
2.30.2

View File

@@ -0,0 +1,25 @@
From 649c04e3fb19596621f347d05c45c8c30d1a0fa7 Mon Sep 17 00:00:00 2001
From: Ylarod <me@ylarod.cn>
Date: Thu, 20 Jul 2023 10:26:34 +0800
Subject: [PATCH] Florida: pool-frida
---
gum/gum.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gum/gum.c b/gum/gum.c
index f6e6243f..3305f629 100644
--- a/gum/gum.c
+++ b/gum/gum.c
@@ -304,7 +304,7 @@ gum_init_embedded (void)
g_log_set_default_handler (gum_on_log_message, NULL);
gum_do_init ();
- g_set_prgname ("frida");
+ g_set_prgname ("ggbond");
#if defined (HAVE_LINUX) && defined (HAVE_GLIBC)
gum_libdl_prevent_unload ();
--
2.34.1