트렌딩 목록으로
C++

GitKittys / AndroidPrybar

Android 네이티브 추적 및 리버스 엔지니어링 도구로, 함수 래핑 실행, 명령어 추적, JNI 호출 관찰 및 외부 점프 제어에 사용됩니다

30
18
2개월 전
GitHub에서 보기

이 프로젝트에 대해

GitKittys 님의 AndroidPrybar 프로젝트는 GitHub에서 30개의 별을 받으며 많은 개발자들의 주목을 받고 있습니다. 특히 C++ 환경에서 유용하게 활용될 수 있으며, 최근 오픈소스 커뮤니티에서 활발한 기여와 토론이 이루어지고 있는 트렌딩 레포지토리입니다.

Language Breakdown

C++ 52%C 42%Java 4%CMake 2%

🇰🇷 한국어 번역 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 원문 바로가기 →