小猫源码分享
رفتن به کانال در Telegram
879
مشترکین
+1124 ساعت
+337 روز
+8030 روز
آرشیو پست ها
882
EGLBoolean (*orig_eglSwapBuffersWithDamageKHR)(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
EGLBoolean _eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects) {
eglQuerySurface(dpy, surface, EGL_WIDTH, &glWidth);
eglQuerySurface(dpy, surface, EGL_HEIGHT, &glHeight);
if (glWidth <= 0 || glHeight <= 0) {
return orig_eglSwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
}
if (!g_App || !g_App->config) {
return orig_eglSwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
}
return orig_eglSwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
}
void EGL() {
void* target_sym_egl = dlsym(dlopen(OBFUSCATE("libEGL.so"), 4), OBFUSCATE("eglSwapBuffersWithDamageKHR"));
uintptr_t target_addr_egl = reinterpret_cast<uintptr_t>(target_sym_egl);
DobbyHook((void*)target_addr_egl, (void*)_eglSwapBuffersWithDamageKHR, (void**)&orig_eglSwapBuffersWithDamageKHR);
}
882
虚地址转实地址↓
uintptr_t vtable_entry_addr = UE4 + 这里放入你的虚地址;
uintptr_t real_func = 0;
KittyMemory::memRead(&real_func, (void*)vtable_entry_addr, sizeof(uintptr_t));
real_func输出出来的就是实地址