栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AppNinja 开发手记7:vr android注入工具inject hook EGL函数eglSwapBuffers,支持arm32,arm64(

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AppNinja 开发手记7:vr android注入工具inject hook EGL函数eglSwapBuffers,支持arm32,arm64(

AppNinja 开发手记7:vr android注入工具inject hook EGL函数eglSwapBuffers,支持arm32,arm64(__aarch64__)

学习心得:VR使用的是安卓系统,hook eglSwapBuffers,支持arm32,arm64(__aarch64__)

学习方向:VR、元宇宙、OpenGL、Hook、Inject、arm64

http://blog.csdn.net/a2831942318

Written by AppNinja 开发手记

注入VR 安卓服务或APK neweglSwapBuffers

用法:

injector com.target.apk /data/local/tmp/libmy.so

injector /system/bin/surfaceflinger /data/local/tmp/libmy64bit.so

static EGLBoolean neweglSwapBuffers(EGLDisplay dpy, EGLSurface surf) {

    LOGE("hookSuccess");

    if (NULL == original) {

        LOGE("failed to get original eglSwapBuffers");

        return EGL_FALSE;

    }

  glClearColor ( 1. , 0. , 0. , 1);  // background color

  return original(dpy, surf);

}

void __attribute__ ((constructor)) hookermain() {



#if defined(__arm__)

  LOGD("enter vr hooker_main() arm32...");

#elif defined(__aarch64__)

 LOGD("enter vr hooker_main() __aarch64__...");

#else

 LOGD("enter vr hooker_main() unknown architecture!!!");

#endif  



    LOGD("vr hooker_main() hook eglSwapBuffers...");

}
static const struct Elf_Program_Type_Map {
    const char* name;
    ElfW(Word) value;
} ELF_PROGRAM_TYPE_MAP[] = {
    {"PT_NULL", PT_NULL},
    {"PT_LOAD", PT_LOAD},
    {"PT_DYNAMIC", PT_DYNAMIC},
    {"PT_INTERP", PT_INTERP},
    {"PT_NOTE", PT_NOTE},
    {"PT_SHLIB", PT_SHLIB},
    {"PT_PHDR", PT_PHDR},
    {"PT_TLS", PT_TLS},
    {"PT_LOOS", PT_LOOS},
    {"PT_HIOS", PT_HIOS},
    {"PT_LOPROC", PT_LOPROC},
    {"PT_HIPROC", PT_HIPROC},
    {"PT_GNU_EH_frame", PT_GNU_EH_frame},
    {"PT_GNU_STACK", PT_GNU_STACK},
    {"PT_GNU_RELRO", PT_GNU_RELRO},
    {"PT_ARM_EXIDX", PT_ARM_EXIDX}
};
long InjectLibrary(pid_t pid, const char* library_path) {
  if (DEBUG) {
    printf("Injection started...n");
  }
  PtraceAttach(pid);
  long so_handle = CallDlopen(pid, library_path);
  if (DEBUG) {
    if (!so_handle) {
      printf("Injection failed...n");
    } else {
      printf("Injection ended succesfully...n");
    }
  }

  printf("Press enter to dlclose and detachn");    
  getchar();   

  PtraceDetach(pid);
  return so_handle;
}

vr android注入工具inject hook EGL函数eglSwapBuffers 支持arm32,arm64 
Injector,Hooker源代码下载地址:

https://download.csdn.net/download/a2831942318/49573640

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号