보통 안드로이드, iOS 모두 메모리 변조를 할때 치팅 툴(게임 해킹 관련해서 검색하면 많이 나오는 것들..)을 대체로 사용합니다.
(솔직히 편하긴해요)

Command line에서 제어할 일이 있어서 찾아본 도구중에 괘찮은게 있어 정리해둡니다.

MH?

https://github.com/sskaje/mh 로 유명한 도구는 아닙니다. (그냥 저처럼 개인이 만들어두고 쓰시는 것 같아요)
기본적인 메모리 뷰/변조, Convering 등을 지원하고 Js 코드를 지원한다고 합니다.(잘 쓰면 프리다라 붙임성이 있을지도!?)

# Clone 
git clone https://github.com/sskaje/mh.git
cd mh

# Submodule 설치
git submodule update --init --recursive


# SDK, duktape 설치
bash tools/download_sdks.sh
bash tools/duktape_prepare.sh

빌드 환경 구성은 위에 정도면 충분하고, OS 아키텍쳐 별로 빌드하셔서 사용하시면 됩니다.

# Build for macOS
bash build/build-osx.sh

# Build for ARMv7 iDevices
bash build/build-ios-armv7.sh

# Build for ARMv7s iDevices
bash build/build-ios-armv7s.sh

# Build for ARM64 iDevices, iOS 10.2
bash build/build-ios-armv64.sh

# Build for deb package for all iOS device
bash build/build-ios-deb.sh

빌드하게 되면 아래 경로(./build)에 빌드된 내용이 담기는 디렉토리가 생기고 이 안에서 바이너리 파일을 확인할 수 있습니다. 

> ls build/
build-ios-arm64.sh    build-ios-armv7s.sh    build-mac.sh        ios-armv7        layout
build-ios-armv7.sh    build-ios-deb.sh    ios-arm64        ios-armv7s

> ls build/ios-arm64
CMakeCache.txt        Makefile        mh_cli            tests
CMakeFiles        cmake_install.cmake    mh_script

macos의 경우 바로 사용하시면 되고 다른 iOS 기기의 경우 scp로 넣어주고 사용하시면 될듯합니다.

#> scp build/ios-arm64/mh_* root@192.168.0.13:///bin/
기본적인 명령어 리스트는 help 옵션 주면 확인이 가능하고 별도 옵션이 없으면 대화형 프롬프트로 넘어갑니다. (여기서도 help 되요)

#> mh_cli
MH[nil] >

How to find? How to Edit?

우선은 메모리 변조를 할 앱을 찾아야합니다. "process-list" 명령으로 프로세스 확인해주시고, pid로 해당 프로세스를 열어줍니다.

MH[nil] > process-list
PID    UID    bits    Name
0        0        64bit    kernel_task
1        0        64bit    launchd
188      0        64bit    amfid
318      0        64bit    jailbreakd

MH[nil] > open 1717
Current PID=1717
MH[1717] >

아래는 뭐 help 보시면 금방 따라할 내용입니다.. 그냥 search-string 찾고자 하는 데이터를 찾고, result로 그 결과를 볼 수 있습니다.

MH[1717] > search-string hhhhhh
Found 9 result(s).

MH[1717] > result
update search @address:0000000108abaaf1

[5] 0x000000016f030000-0x000000016f0b8000 size=0x100000010 offset=0000000000000000, rw-/rwx, STACK
  000000016f0b1ee8  68 68 68 68 68 68 68 00 00 00 00 00 00 00 00 00  hhhhhhh.........
update search @address:000000016f0b1ee9
[6] 0x000000016f030000-0x000000016f0b8000 size=0x100000010 offset=0000000000000000, rw-/rwx, STACK
  000000016f0b1ee9  68 68 68 68 68 68 00 00 00 00 00 00 00 00 00 3f  hhhhhh.........?

메모리 내용이랑 주소값을 같이 주는데, memory-write 명령으로 메모리 내 데이터 수정이 가능합니다. 다른 메모리 변조와 동일하게 오버되는 길이는 프로그램 동작에 영향을 줄 수 있으니 크기 잘 계산하셔서 넣어주시면서 테스트하시는게 좋습니다.
(지지난주인가.. 장난치다가 아이패드 리붓됬고, 결국 재탈옥의 단계를 접어섰었네요..)

MH[1717] > memory-write 000000016f0b1ee8 "HAHWUL"
  0000000000000000  48 41 48 57 55 4c                                HAHWUL

Js 지원 관련해선 테스트해본건 없는데, 아마 자바스크립트로 mh 기능 자체를 불러와서 쓰는걸 의미하는 것 같습니다. (그냥 이 기능을 api 부르듯이 쓸 수 있다? 느낌, Js로 로직을 만들 수 있다 정도?)

혹여나 Js 쓰게되면 댓글로 남겨놓겠습니다 :)

댓글 없음:

댓글 쓰기