Skip to content

Commit 8710254

Browse files
authored
Merge pull request #12 from mcbegamerxx954/main
Auto shaderfixing
2 parents bb7a741 + feed6cc commit 8710254

File tree

6 files changed

+48
-7
lines changed

6 files changed

+48
-7
lines changed

build.bat

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@echo off
22

3-
set CLANG_OPTS_ARM=--target=armv7a-linux-androideabi21 -shared -s -O2 -fPIC -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -DANDROID -ffunction-sections -fdata-sections -mthumb -I./frida/arm/include -L./frida/arm/lib -lfrida-gum -llog -ldl -lm -pthread -Wl,--fix-cortex-a8,-z,relro,-z,noexecstack,--gc-sections
4-
set CLANG_OPTS_ARM64=--target=aarch64-linux-android21 -shared -s -O2 -fPIC -DANDROID -ffunction-sections -fdata-sections -I./frida/arm64/include -L./frida/arm64/lib -lfrida-gum -llog -ldl -lm -pthread -Wl,--gc-sections,-z,noexecstack,-z,relro,-z,now
3+
set CLANG_OPTS_ARM=--target=armv7a-linux-androideabi21 -shared -s -O2 -fPIC -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -DANDROID -ffunction-sections -fdata-sections -mthumb -I./frida/arm/include -I./libmaterial/include -L./frida/arm/lib -lfrida-gum -llog -ldl -lm -pthread ./libmaterial/armv7/lib/libmaterialbin.a -Wl,--fix-cortex-a8,-z,relro,-z,noexecstack,--gc-sections
4+
set CLANG_OPTS_ARM64=--target=aarch64-linux-android21 -shared -s -O2 -fPIC -DANDROID -ffunction-sections -fdata-sections -I./libmaterial/include -I./frida/arm64/include -L./frida/arm64/lib -lfrida-gum -llog -ldl -lm -pthread ./libmaterial/arm64/lib/libmaterialbin.a -Wall -Wl,--gc-sections,-z,noexecstack,-z,relro,-z,now
55

66
if not exist "build" md "build"
77

@@ -13,4 +13,4 @@ clang++.exe %CLANG_OPTS_ARM% ./src/*.cpp -o ./build/libmaterialbinloader-arm.so
1313
echo libmaterialbinloader-arm64.so
1414
clang++.exe %CLANG_OPTS_ARM64% ./src/*.cpp -o ./build/libmaterialbinloader-arm64.so
1515

16-
pause
16+
pause

build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22

3-
CLANG_OPTS_ARM="--target=armv7a-linux-androideabi21 -shared -s -O2 -fPIC -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -DANDROID -ffunction-sections -fdata-sections -mthumb -I./frida/arm/include -L./frida/arm/lib -lfrida-gum -llog -ldl -lm -pthread -Wl,--fix-cortex-a8,-z,relro,-z,noexecstack,--gc-sections"
4-
CLANG_OPTS_ARM64="--target=aarch64-linux-android21 -shared -s -O2 -fPIC -DANDROID -ffunction-sections -fdata-sections -I./frida/arm64/include -L./frida/arm64/lib -lfrida-gum -llog -ldl -lm -pthread -Wl,--gc-sections,-z,noexecstack,-z,relro,-z,now"
3+
CLANG_OPTS_ARM="--target=armv7a-linux-androideabi21 -shared -s -O2 -fPIC -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -DANDROID -ffunction-sections -fdata-sections -mthumb -I./frida/arm/include -I./libmaterial/include -L./frida/arm/lib -lfrida-gum -llog -ldl -lm -pthread ./libmaterial/armv7/lib/libmaterialbin.a -Wl,--fix-cortex-a8,-z,relro,-z,noexecstack,--gc-sections"
4+
CLANG_OPTS_ARM64="--target=aarch64-linux-android21 -shared -s -O2 -fPIC -DANDROID -ffunction-sections -fdata-sections -I./libmaterial/include -I./frida/arm64/include -L./frida/arm64/lib -lfrida-gum -llog -ldl -lm -pthread ./libmaterial/arm64/lib/libmaterialbin.a -Wall -Wl,--gc-sections,-z,noexecstack,-z,relro,-z,now"
55

66
mkdir -p build
77

15.9 MB
Binary file not shown.
12.9 MB
Binary file not shown.

libmaterial/include/material.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <cstdarg>
2+
#include <cstdint>
3+
#include <cstdlib>
4+
#include <ostream>
5+
#include <new>
6+
7+
// A raw buffer of bytes from rust
8+
struct Buffer {
9+
uint8_t *data;
10+
uintptr_t len;
11+
};
12+
13+
extern "C" {
14+
15+
/// Update a material file
16+
/// # Safety
17+
/// - Input pointer and length are valid
18+
/// - You free the output later
19+
int update_file(uintptr_t input_len, const uint8_t *input_data, Buffer *out_buffer);
20+
21+
/// Free the output
22+
void free_buf(Buffer buf);
23+
24+
} // extern "C"

src/Loader.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <cassert>
12
#include <cstdio>
23
#include <cstring>
34
#include <cstdint>
@@ -7,6 +8,8 @@
78

89
#include "frida-gum.h"
910
#include "Util.h"
11+
#include "material.h"
12+
1013

1114
//==========================================================================================================================================
1215

@@ -210,6 +213,7 @@ static void loader_invocation_listener_on_enter(GumInvocationListener* listener,
210213
#ifdef DEBUG
211214
printf("filename=%s\n", data);
212215
#endif
216+
213217
state->redirect = true;
214218
state->filename = filename;
215219
#if __arm__
@@ -219,6 +223,7 @@ static void loader_invocation_listener_on_enter(GumInvocationListener* listener,
219223
#else
220224
#error unsupported architecture
221225
#endif
226+
222227
}
223228

224229
break;
@@ -260,12 +265,24 @@ static void loader_invocation_listener_on_leave(GumInvocationListener* listener,
260265
std::string resourceStream;
261266
bool result = load(resourcePackManager, &location, &resourceStream);
262267

263-
if (result) {
268+
if (result && !resourceStream.empty()) {
269+
bool successful_update = true;
270+
271+
struct Buffer outbufdata = {0,0};
272+
if (update_file(resourceStream.length(), (const uint8_t*)resourceStream.c_str(), &outbufdata) != 0) {
273+
puts("Updating failed!");
274+
successful_update = false;
275+
free_buf(outbufdata);
276+
}
277+
264278
#ifdef DEBUG
265279
printf("ResourcePackManager::load returned true\n");
266280
#endif
267-
if (!resourceStream.empty()) {
281+
if (!successful_update) {
268282
state->retstr->assign(resourceStream);
283+
} else {
284+
state->retstr->assign((const char*)outbufdata.data, outbufdata.len);
285+
free_buf(outbufdata);
269286
}
270287
} else {
271288
#ifdef DEBUG

0 commit comments

Comments
 (0)