GitKittys / AndroidPrybar
Android 네이티브 추적 및 리버스 엔지니어링 도구로, 함수 래핑 실행, 명령어 추적, JNI 호출 관찰 및 외부 점프 제어에 사용됩니다
이 프로젝트에 대해
GitKittys 님의 AndroidPrybar 프로젝트는 GitHub에서 30개의 별을 받으며 많은 개발자들의 주목을 받고 있습니다. 특히 C++ 환경에서 유용하게 활용될 수 있으며, 최근 오픈소스 커뮤니티에서 활발한 기여와 토론이 이루어지고 있는 트렌딩 레포지토리입니다.
Language Breakdown
🇰🇷 한국어 번역 README
캐시 히트안드로이드프라이바
아래文档是OpenAi写的,作者实在太懒,要么是在忙,要么就是下次一定,总有理由偷懒 다른 코드让ai改崩溃了,一些功能不太稳定,그래서 많은 api都还没放出来, 比如样本故意读取错误内存触发信号这里我还没恢复处理,不太会用git,没有备份,等我这两天修好,再把更多功能放出来
用于模拟执行 Android 中任意指令片段,监控函数运行时的行为。
본工程已包含预编译的 'libtrace.so', 头文件、JNI 示例和调用样例. 克隆后直接编译运行即可查看结果。 先放出去让大家用用,看看大家的反馈如何,后续会考虑开源。
当前 Demo 주체位于 'TraceDemo/' 目录.
'libtrace.so' 在哪里
预编译动态库就在下面这个目录:
'TraceDemo/app/src/main/jniLibs/arm64-v8a/libtrace.so'
如果你是来直接取库、接入现有 Android 工程,先看这个路径就行。
这份工程主要演示什么
본工程围绕 'trace' 最常用的几类能力展开:
- 将普通 ARM64 函数包装为 VM 托管版本
- 一键开启목표함수의 내장 trace
- 在回调中接收执行事件,并按自定义策略处理
- 读写寄存器,观察或修改运行时状态
- 在 Android / JNI 场景中验证 Native 函数的执行与跟踪
最常用的几组 API
1. 'vc_make_handle'
这是最核心的入口函数。
它不仅用于"做 trace",更将原始函数包装为一个新的可调用句柄。 新句柄的调用方式与原函数基本一致,但实际执行时会进入 VM,而非直接运行于 CPU.
适合场景:
- 검증 특정 목표函数能否在 VM 中稳定运行
- 对比 host 与 VM 的执行 결과
- 获取 'vm_context',为后续回调、寄存器读写、事件控制做准备
一句话理解:
'vc_make_handle' 将"一个普通函数"变成"一个由 VM 托管、하지만 여전히 可以像普通函数一样调用的包装函数".
2. 自定义回调 'vc_cpu_event_callback'
만약 말 'vc_make_handle' 해결은 "怎么把函数放进 VM 里跑",那么回调解决的就是"跑的过程中我怎么参与决策"。
이 类回调通常与 'vc_make_handle(..., callback, user_data)' 搭配使用.
适合场景:
- 관찰逐条指令、基本块、외부 跳转、SVC, 중단, 内存访问
- 拦截某个外部函数并直接跳过
- 伪造某次外部调用的返回值
- 统计执行过程中的关键事件
一句话理解:
自定义回调不仅能监视每条指令的执行,还能让你在执行过程中真正获得控制权,例如修改 PC。
3. '추적'
如果你暂时不想自己接回调,只想快速拿到一份日志,最适合从 'trace' 시작. 内置了 JNI trace(모든 JNI 信息)和每条汇编指令的执行信息.
适合场景:
- 第一次접入时验证 'trace' 是否能跑通
- 先看日志,再决定是否要做更精细的控制
- 빠르게 관찰 JNI 调用链或函数执行路径
一句话理解:
'trace' 是"一键开启内置跟踪"的最短路径.
4. 'vc_reg_read' / 'vc_reg_write'
이 组接口的作用很直接:在 VM 中读写寄存器。
适合场景:
- 获取当前 'PC', 'X0', 'SP'
🌐 본 텍스트는 빠른 이해를 돕기 위한 요약 번역본입니다. 정확한 기술 정보 및 전체 코드는 GitHub 원문에서 확인하실 수 있습니다.
이 정보는 AI가 자동으로 분석한 결과입니다. 정확한 내용은 원문을 확인하세요.
GitKittys/AndroidPrybar GitHub 원문 바로가기 →