티스토리 뷰

IOS/Hacking

[IOS] IPA 파일 Binary Patch.

ch4njun 2020. 7. 9. 22:13
반응형
IPA의 Binary Patch를 통해서 ARM Assembly로 구성된 코드 자체를 수정해 내가 의도한 실행흐름으로 바꾸게 된다. Binary Patch를 하게되면 무결성 검증에 걸리기 때문에 무결성 검증이 기본적으로 우회가 되어있어야 한다.
( 무결성 검증 이전의 동작에 대해서는 Binary Patch를 통해서 수행이 가능하다. )

 

Binary Patch를 수행하는 과정을 살펴보자.

사용한 앱은 DVIA에서 제공하는 앱이며, Runtime Manipulation Login Method1에 대해서 진행했다.

 

1. IPA 추출(Decrypt)후 Binary File을 IDA에 올린다.

   IPA 파일를 CrackerXI를 통해서 Decrypt한 후 추출한다.

 

왼쪽에 정상적으로 복호화된 API를 확인할 수 있다.

 


2. Patch할 곳을 찾고 RVA를 파악한다.

 

isLoginValidated 함수의 반환값을 통해 결과가 달라진다는 것을 확인할 수 있다.

 

기본적으로 무조건 0을 반환하도록 되어있다. Binary Patch를 통해 반환 값을 1로 변경해보자. 우선 이 부분의 RVA를 파악해본다.

 

MOV W0, #0 을 MOV W0, #1로 수정할 것이므로 해당 명령어의 RVA를 찾으면된다.

 

SpaceBar를 눌러서 해당 명령어의 주소를 0x100007774인 것을 확인할 수 있다. Base Address가 0x100000000임으로 0x7774가 RVA가 된다.

 

 


3. Patch할 곳을 바꿀 명령어의 HEX값을 구한다.

 

https://armconverter.com/

 

armconverter

 

armconverter.com

에서 ARM 명령어를 HEX값으로 바꿀 수 있다.

 

 


4. HEX Viewer로 Binary File을 열고 2번에서 봐둔 RVA를 확인한다.

   IDA로 봤을 때랑 동일한 HEX값인지 확인하는 것도 잊지 말자!!

 

어째서 이렇게 다르지.... 마지막 3Byte는 똑같긴하다.. 다른앱에서는 똑같았는데 ㅠ_ㅠ Ctrl + F를 통해서 해당 Binary의 주변 HEX값들을 비교하며 찾았다.

 

 


5. 3번에서 구한 HEX값을 해당 위치에 덮어써서 Patch를 진행한다.

 

수정한 Binary File을 다시 IDA에 올려서 정상적으로 변경됐는지 확인한다.

( Binary File이 커지면 이를 확인하기 어려울 것 같다...? IDA 여는것만 한세월ㅠㅠ )

 

 


6. 3uTools로 원본 Binary File과 수정한 Binary File을 iphone에 넣는다.

 

 

 


7. SSH를 통해 iphone에 접속해 다음 명령어들을 수행한다.

   ldid -e [원본 Binary File] > ch4njun.xml

   chmod +x [수정된 Binary File]

   ldid -Sch4njun.xml [수정된 Binary File]

 

   이 과정을 거치지 않으면 수정한 APP이 켜자마자 꺼진다.

 


8. 3uTools로 수정한 Binary File을 PC로 추출한다.

 


9. 추출한 Binary File을 기존 IPA 폴더에 덮어쓰고 압축후 확장자를 .ipa로 변경한다.

   ( 반드시 최상위에 payload 디렉토리가 와야한다. )

 


10. 생성된 IPA 파일을 3uTools를 사용해 iphone에 설치한다.

 


11. 설치된 APP을 실행하면 return 1에 의해서 Login에 성공하는 것을 확인할 수 있다.

 

SUCCESS !

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함