#include <EGL/egl.h>
#include <GLES2/gl2.h>
#include <android/log.h>
#include <dlfcn.h>
#include <atomic>
#define LOG_TAG "Qwanwin"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
static std::atomic<int> gW{0}, gH{0};
using PFN_eglSwapBuffers = EGLBoolean (*)(EGLDisplay, EGLSurface);
static PFN_eglSwapBuffers orig_eglSwapBuffers = nullptr;
static thread_local bool tls_in_hook = false;
extern "C" EGLBoolean _eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) {
if (tls_in_hook) {
return orig_eglSwapBuffers ? orig_eglSwapBuffers(dpy, surface) : EGL_FALSE;
}
tls_in_hook = true;
if (dpy != EGL_NO_DISPLAY && surface != EGL_NO_SURFACE) {
EGLint w = 0, h = 0;
if (eglQuerySurface(dpy, surface, EGL_WIDTH, &w) == EGL_TRUE &&
eglQuerySurface(dpy, surface, EGL_HEIGHT, &h) == EGL_TRUE &&
w > 0 && h > 0) {
gW.store((int)w, std::memory_order_relaxed);
gH.store((int)h, std::memory_order_relaxed);
} else {
// fallback
GLint vp[4] = {0,0,0,0};
glGetIntegerv(GL_VIEWPORT, vp); // [x,y,w,h]
if (vp[2] > 0 && vp[3] > 0) {
gW.store(vp[2], std::memory_order_relaxed);
gH.store(vp[3], std::memory_order_relaxed);
}
}
}
EGLBoolean ret = orig_eglSwapBuffers ? orig_eglSwapBuffers(dpy, surface) : EGL_FALSE;
tls_in_hook = false;
return ret;
}
static void* Qwanwin_eglSwapBuffers() {
void* sym = dlsym(RTLD_NEXT, "eglSwapBuffers");
if (sym) return sym;
void* h = dlopen("libEGL.so", RTLD_NOW);
if (!h) return nullptr;
sym = dlsym(h, "eglSwapBuffers");
return sym;
}
extern "C" void QwanEglSwapHook_Easy() {
if (orig_eglSwapBuffers) return;
void* target = Qwanwin_eglSwapBuffers();
if (!target) {
LOGE("Failed to eglSwapBuffers");
return;
}
if (Tools::Hook((void*)target, (void*)_eglSwapBuffers, (void**)&orig_eglSwapBuffers)) {
LOGI("Hooked eglSwapBuffers successfully");
} else {
LOGE("Hook failed");
}
}
/*
extern "C" int eglhook_get_w() { return gW.load(std::memory_order_relaxed); }
extern "C" int eglhook_get_h() { return gH.load(std::memory_order_relaxed); }*/
Auto set-up
__attribute__((constructor))
static void on_load() { QwanEglSwapHook_Easy(); }
EGL Hook
Credit @codex4444
1❤4👍2🔥1
Hex-Rays just dropped a brand-new Python API that makes IDA scripting cleaner, shorter, and way more Pythonic.
See the difference in 5 seconds
Key points
• No more verbose IDAPython boilerplate
• Runs inside IDA or headless (batch automation)
Install:
Docs & examples: https://hex-rays.com/blog/introducing-the-ida-domain-api
See the difference in 5 seconds
OLD (IDAPython SDK):
ea = here()
func = get_func(ea)
name = get_func_name(func.start_ea)
NEW (IDA Domain API):
from ida_domain import Database
with Database() as db:
print(db.functions.get_name(func))
Key points
• No more verbose IDAPython boilerplate
• Runs inside IDA or headless (batch automation)
Install:
pip install ida-domain
Docs & examples: https://hex-rays.com/blog/introducing-the-ida-domain-api
❤6👍1
SurfaceBlobKit.zip
471.9 KB
SurfaceBlobKit — a dynamic loader for Android native-surface (.so) directly from memory.
• Loads API-specific blobs (Android 9–13)
• Resolves functions such as createNativeWindow
• Exposes a safe and unified API
multi-platform testing, integration in custom builds (e.g., kernel modules, device-specific surface handling).
file include
-How to use.txt (don't ask me)
Author: @Qwanwin
Telegram: https://t.me/codex4444
• Loads API-specific blobs (Android 9–13)
• Resolves functions such as createNativeWindow
• Exposes a safe and unified API
multi-platform testing, integration in custom builds (e.g., kernel modules, device-specific surface handling).
file include
-How to use.txt (don't ask me)
Author: @Qwanwin
Telegram: https://t.me/codex4444
1🔥9❤2
GameGuardian.zip
13.2 MB
Module GameGuardian !
Version: v1.0
Support :
•Magisk 20->29
•Ksu GKI
•Ksu next (GKI & No GKI)
SS
Use Zygisk Next / ReZygisk
Author: @Qwanwin
https://t.me/codex4444
Release date : Tuesday 23-Sep-2025
Version: v1.0
Support :
•Magisk 20->29
•Ksu GKI
•Ksu next (GKI & No GKI)
SS
Use Zygisk Next / ReZygisk
Author: @Qwanwin
https://t.me/codex4444
Release date : Tuesday 23-Sep-2025
2❤10👍2🔥2
Some of my learning about ELF came from the links below. Thanks to all the article creators.
my regards @Qwanwin
1. 简单介绍一下Linux中ELF格式文件 https://www.cnblogs.com/bxf0011/p/15183422.html
2. ELF文件格式入门 https://blog.csdn.net/u012041204/article/details/126914506
3. Linux ELF格式分析(多篇) https://www.cnblogs.com/sky-heaven/p/15863004.html
4. 搞懂ELF - 从入门到遗忘 https://www.51cto.com/article/720922.html
5. ELF 格式详解 https://blog.csdn.net/kunkliu/article/details/129648744
6. ELF 文件格式原创(xukang95) https://blog.csdn.net/xukang95/article/details/114332714
7. ELF-Header https://segmentfault.com/a/1190000016766079
8. CSDN 教程合集 - 从0开始学 ELF(操作系统/loader 关联) https://blog.csdn.net/charlie114514191/article/details/145703920
my regards @Qwanwin
1. 简单介绍一下Linux中ELF格式文件 https://www.cnblogs.com/bxf0011/p/15183422.html
2. ELF文件格式入门 https://blog.csdn.net/u012041204/article/details/126914506
3. Linux ELF格式分析(多篇) https://www.cnblogs.com/sky-heaven/p/15863004.html
4. 搞懂ELF - 从入门到遗忘 https://www.51cto.com/article/720922.html
5. ELF 格式详解 https://blog.csdn.net/kunkliu/article/details/129648744
6. ELF 文件格式原创(xukang95) https://blog.csdn.net/xukang95/article/details/114332714
7. ELF-Header https://segmentfault.com/a/1190000016766079
8. CSDN 教程合集 - 从0开始学 ELF(操作系统/loader 关联) https://blog.csdn.net/charlie114514191/article/details/145703920
Cnblogs
简单介绍一下Linux中ELF格式文件 - 古锁阳关 - 博客园
摘自:http://www.elecfans.com/emb/20190402898901.html ELF(Executable and Linkable Format)即可执行连接文件格式,是一种比较复杂的文件格式,但其应用广泛。与linux下的其他可执行文件(a.out,cof)相比,它对节的
❤5🔥1
A fun programming language in Indonesian (biarkan, tulis, jika, ulang, fungsi, kembalikan, benar/salah).
Repo: https://github.com/Cynthia-cnn/CynLang
Repo: https://github.com/Cynthia-cnn/CynLang
GitHub
GitHub - Cynthia-cnn/CynLang: Experiment
Experiment. Contribute to Cynthia-cnn/CynLang development by creating an account on GitHub.
👍4❤1
AetherHook.h
27.2 KB
❤9🔥3
minhook.zip
180.4 KB
❤3👍1
AetherHook.zip
43.9 KB
Framework hooking for Android ARM64
- Remove useless code
- Optimization code
Thank you for your suggestion !!
Processing time : 8 hours 30 minutes
Release date : Monday 13-Oct-2025
Author @Qwanwin
- Remove useless code
- Optimization code
Thank you for your suggestion !!
Processing time : 8 hours 30 minutes
Release date : Monday 13-Oct-2025
Author @Qwanwin
❤6🔥1
Forwarded from ️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️️antik
Media is too big
VIEW IN TELEGRAM
❤14🔥3