Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
apk-medit — 디버깅 가능한 APK에서 루트 및 NDK 없이 메모리 검색 및 패치 도구 | Kitploit
도구/GitHubGitHub/sterrasec/apk-medit
Android SecurityMemory ForensicsPenetration TestingMobile SecurityBinary Analysis
GitHubsterrasec/apk-medit

apk-medit

디버깅 가능한 APK에서 루트 및 NDK 없이 메모리 검색 및 패치 도구

저장소 보기
431652개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

apk-medit

GitHub release License: MIT typos workflow

Apk-medit은 루트 및 NDK 없이 디버깅 가능한 apk를 위한 메모리 검색 및 패치 도구입니다. 모바일 게임 보안 테스트를 위해 만들어졌습니다. 많은 모바일 게임에 루팅 감지 기능이 있지만, apk-medit은 루트 권한이 필요하지 않으므로 루팅 감지를 우회하지 않고 메모리 수정이 가능합니다.

Motivation

메모리 수정은 게임에서 가장 쉬운 치트 방법이며, 보안 테스트에서 확인해야 할 항목 중 하나입니다. GameGuardian처럼 쉽게 사용할 수 있는 치트 도구도 있습니다. 하지만 루팅되지 않은 기기와 CUI에서 사용할 수 있는 도구가 없었습니다. 그래서 보안 테스트 도구로 만들었습니다. iOS 앱을 대상으로 한 버전은 sterrasec/ipa-medit입니다.

Demo

백만 번의 탭이 필요한 게임을 클리어하는 데 apk-medit을 사용하는 데모입니다.

Installation

GitHub Releases에서 바이너리를 다운로드하고, 안드로이드 기기의 /data/local/tmp/에 바이너리를 푸시하세요.

root@kitploit:~
$ adb push medit /data/local/tmp/medit
medit: 1 file pushed. 29.0 MB/s (3135769 bytes in 0.103s)

How to Build

make 명령어로 빌드할 수 있습니다. Go 컴파일러가 필요합니다. 빌드가 완료되면 adb가 연결되어 있을 경우, 빌드된 바이너리를 안드로이드 기기의 /data/local/tmp/에 푸시합니다.

root@kitploit:~
$ make
GOOS=linux GOARCH=arm64 GOARM=7 go build -o medit
/bin/sh -c "adb push medit /data/local/tmp/medit"
medit: 1 file pushed. 23.7 MB/s (3131205 bytes in 0.126s)

Usage

run-as 명령어를 사용하여 대상 앱이 사용하는 파일을 읽을 수 있으므로, apk-medit은 debuggable 속성이 활성화된 앱에서만 사용할 수 있습니다. debuggable 속성을 활성화하려면 AndroidManifest.xml을 열고 application xml 노드에 다음 xml 속성을 추가하세요:

root@kitploit:~
android:debuggable="true"

sterrasec/apkutil을 사용하면 AndroidManifest.xml을 편집하지 않고도 쉽게 debuggable 속성을 활성화할 수 있어 유용합니다.

root@kitploit:~
$ apkutil debuggable <target-apk-name>.apk

run-as 명령어를 실행하면 디렉토리가 자동으로 변경됩니다. 따라서 /data/local/tmp/에서 medit을 복사하세요. medit을 실행하면 대화형 프롬프트가 시작됩니다.

root@kitploit:~
$ adb shell
$ pm list packages # to check <target-package-name>
$ run-as <target-package-name>
$ cp /data/local/tmp/medit ./medit
$ ./medit

메모리에 쓸 때 ptrace를 사용하지 않도록 선택할 수도 있습니다. 이렇게 하면 ptrace에 의한 디버거 탐지를 피할 수 있지만, SELinux로 인해 Android 10 이상에서는 작동하지 않습니다.

root@kitploit:~
$ ./medit -without-ptrace

Commands

대화형 프롬프트에서 사용할 수 있는 명령어입니다.

find

지정된 정수를 메모리에서 검색합니다.

root@kitploit:~
> find 999982
Search UTF-8 String...
Target Value: 999982([57 57 57 57 56 50])
Found: 0!
------------------------
Search Word...
parsing 999982: value out of range
------------------------
Search Double Word...
Target Value: 999982([46 66 15 0])
Found: 1!
Address: 0xe7021f70

string, word, dword, qword와 같은 데이터 타입을 지정할 수도 있습니다.

root@kitploit:~
> find dword 999996
Search Double Word...
Target Value: 999996([60 66 15 0])
Found: 1!
Address: 0xe7021f70

filter

이전 검색 결과와 일치하는 결과로 필터링합니다.

root@kitploit:~
> filter 993881
Check previous results of searching dword...
Target Value: 993881([89 42 15 0])
Found: 1!
Address: 0xe7021f70

patch

검색으로 찾은 주소에 지정된 값을 씁니다.

root@kitploit:~
> patch 10
...
Successfully patched!

ps

대상 프로세스를 찾고 하나만 있으면 대상으로 지정합니다. ps는 시작 시 자동으로 실행됩니다.

root@kitploit:~
> ps
Package: jp.sterrasec.tap1000000, PID: 4398
Target PID has been set to 4398.

attach

ps로 대상 PID가 설정된 경우, 대상 프로세스에 attach하여 ptrace로 앱의 모든 프로세스를 중지합니다.

root@kitploit:~
> attach
Target PID: 4398
Attached TID: 4398
Attached TID: 4405
Attached TID: 4407
Attached TID: 4408
Attached TID: 4410
Attached TID: 4411
Attached TID: 4412
Attached TID: 4413
Attached TID: 4414
Attached TID: 4415
Attached TID: 4418
Attached TID: 4420
Attached TID: 4424
Attached TID: 4429
Attached TID: 4430
Attached TID: 4436
Attached TID: 4437
Attached TID: 4438
Attached TID: 4439
Attached TID: 4440
Attached TID: 4441
Attached TID: 4442

대상 PID가 설정되지 않은 경우 명령줄에서 지정할 수 있습니다.

root@kitploit:~
> attach <pid>

detach

attach된 프로세스에서 분리합니다.

root@kitploit:~
> detach
Detached TID: 4398
Detached TID: 4405
Detached TID: 4407
Detached TID: 4408
Detached TID: 4410
Detached TID: 4411
Detached TID: 4412
Detached TID: 4413
Detached TID: 4414
Detached TID: 4415
Detached TID: 4418
Detached TID: 4420
Detached TID: 4424
Detached TID: 4429
Detached TID: 4430
Detached TID: 4436
Detached TID: 4437
Detached TID: 4438
Detached TID: 4439
Detached TID: 4440
Detached TID: 4441
Detached TID: 4442

dump

hexdump와 같은 메모리 덤프를 표시합니다.

root@kitploit:~
> dump 0xf0aee000 0xf0aee300
Address range: 0xf0aee000 - 0xf0aee300
----------------------------------------------
00000000  34 32 20 61 6e 73 77 65  72 20 28 74 6f 20 6c 69  |42 answer (to li|
00000010  66 65 20 74 68 65 20 75  6e 69 76 65 72 73 65 20  |fe the universe |
00000020  65 74 63 7c 33 29 0a 33  31 34 20 70 69 0a 31 30  |etc|3).314 pi.10|
00000030  30 33 20 61 75 64 69 74  64 20 28 61 76 63 7c 33  |03 auditd (avc|3|
00000040  29 0a 31 30 30 34 20 63  68 61 74 74 79 20 28 64  |).1004 chatty (d|
00000050  72 6f 70 70 65 64 7c 33  29 0a 31 30 30 35 20 74  |ropped|3).1005 t|
00000060  61 67 5f 64 65 66 20 28  74 61 67 7c 31 29 2c 28  |ag_def (tag|1),(|
00000070  6e 61 6d 65 7c 33 29 2c  28 66 6f 72 6d 61 74 7c  |name|3),(format||
00000080  33 29 0a 31 30 30 36 20  6c 69 62 6c 6f 67 20 28  |3).1006 liblog (|
00000090  64 72 6f 70 70 65 64 7c  31 29 0a 32 37 31 38 20  |dropped|1).2718 |
000000a0  65 0a 32 37 31 39 20 63  6f 6e 66 69 67 75 72 61  |e.2719 configura|
000000b0  74 69 6f 6e 5f 63 68 61  6e 67 65 64 20 28 63 6f  |tion_changed (co|
000000c0  6e 66 69 67 20 6d 61 73  6b 7c 31 7c 35 29 0a 32  |nfig mask|1|5).2|
000000d0  37 32 30 20 73 79 6e 63  20 28 69 64 7c 33 29 2c  |720 sync (id|3),|
000000e0  28 65 76 65 6e 74 7c 31  7c 35 29 2c 28 73 6f 75  |(event|1|5),(sou|
000000f0  72 63 65 7c 31 7c 35 29  2c 28 61 63 63 6f 75 6e  |rce|1|5),(accoun|

exit

medit을 종료하려면 exit 명령어 또는 Ctrl-D를 사용하세요.

root@kitploit:~
> exit
Bye!

Test

make 명령어로 테스트 코드를 실행할 수 있습니다.

root@kitploit:~
$ make test

License

MIT License

도구 다운로드