유니티 tweak 만들기

홈 > IOS > IOS
IOS

유니티 tweak 만들기

S 붉은상어 1 245 2

저번에는 모 게임의 서명 값 확인하는 함수의 결과 값을 바이너리로 변경을 해보았습니다.

저번 강좌의 링크입니다. http://linforum.kr/bbs/board.php?bo_table=ios&wr_id=15 


아래와 같이 dump 파일에 함수 정보가 있었죠...

private bool CheckSignature(string fileName); // RVA: 0x1024B1F7C Offset: 0x24B1F7C 

자 ~ 이제 이 함수를 후킹하는 방법에 대하여 설명드리겠습니다.

일단 zzanghacker님이 올려주신 theos를 설치합니다.

링크는 >> http://linforum.kr/bbs/board.php?bo_table=ios&wr_id=36


설치가 완료되면 Tweak 프로젝트를 생성하고 tweak.x에 후킹 코드를 작성을 합니다.

작성하는 방법에 대해서 설명하겠습니다.


저번에 바이너리 변조를 하였듯이 무조건 true로 넘겨줘야 합니다


#import <substrate.h>


int (*old_function)(void); // 앱에서 CheckSignature 호출시 제가 만든 my_CheckSignature가 호출됩니다. bool my_CheckSignatrue()

{

return true; // 무조건 true로 넘겨줍니다. } // %ctor 앱 실행시 hook %ctor { @autoreleasepool {

// _dyld_get_image_vmaddr_slide(0) 메모리 주소를 가져옵니다. 인자가 0일 경우 앱의 시작 부분의 메모리 주소를 가져옵니다.

// 위에 CheckSignature 함수의 RVA 값을 더 해줍니다. unsignedlong targetAddress = _dyld_get_image_vmaddr_slide(0) + 0x1024B1F7C; // 변수에 담아주세요 ^^ MSHookFunction((void *)targetAddress, (void *)&my_CheckSignatrue, (void **)&old_function); // 후킹을 합니다. // MSHookFunction 정보는 >> http://www.cydiasubstrate.com/api/c/MSHookFunction/ 이곳에서 확인해주세요~! } }

 

그리고 make packge 후 deb 파일이 생깁니다. 그것을 iFile을 통해 설치를 합니다.

여기서 theos에서 ip를 설정하실 수 있는데요. 설정을 해주면 바로 설치도 가능합니다.

설치 명령어는 make package install 입니다.

1 Comments
3 knock31 10.23 20:25  
좋은정보 감사해요