DVIA 앱의 [MENU] - [Binary Patching]을 풀어보겠습니다.

 

첫 화면이고, 여러 문제를 볼 수 있는데 Login Method 1 / Check For Jailbreak / Show alert / Kill Application이 있지만 Login Method 1만 풀이를 올리도록 하겠습니다. 사실 하나만 풀면 나머지도 다 풀 수 있는거라.. ;)

 

IDA를 통해 login 문자열이 들어간 함수를 확인한 결과 ApplicationPatchingDetailsVC loginMethod1Tapped:를 확인할 수 있었습니다.

 

사실 소스코드를 좀만 살펴보면 소스에 ID/PW가 노출되어 있지만, 목적은 이게 아니니까 넘어가서 비교 후 분기문이나 인증 성공 함수 호출하는 부분을 찾아보겠습니다.

 

해당 함수의 끝 부분에 분기문을 통해 인증 결과값으로 성공 혹은 실패 로직을 실행하고 있습니다.

그럼 분기문(B.EQ loc_100170C58)을 변조하여 인증실패일 경우 SuccessPage를 호출하는 것으로 Binary를 패치하겠습니다.

 

이 페이지에서 opcode의 hex값을 확인 할 수 있는데, BEQ는 000100, BNE는 000101인 것을 확인 할 수 있습니다.

 

다음과 같이 IDA에서 BEQ(000100)을 BNE(000101)로 변경해줍니다. 

 

IDA에서 확인하면 BNE로 변경된 것을 확인 할 수 있습니다.

다만.. IDA에서 Binary Patch가 안되서 Hopper라는 툴을 많이 이용한다고 하시는데요(IDA에서도 되나요?) 저는 그냥 IDA에서 분석하고 헥스에디터로 헥스값을 변경해 줍니다... (Hopper는 유료입니다)

 

IPA파일을 zip파일로 확장자 변경 후, 실제 실행파일을을 헥스에디터 프로그램으로 열어서 원하는 바이너리를 변경하고 Cydia Impactor로 재설치 해주세요

 

재설치 후에 임의의 문자열(aa/aa)를 입력한 결과,

 

인증 우회하여 로그인에 성공한 화면을 확인할 수 있습니다.

 

※ OPCode 출처 : https://opencores.org/projects/plasma/opcodes

'Mobile' 카테고리의 다른 글

ro.debuggable 변경을 통한 동적 디버깅  (2) 2019.09.23
IDA DEX,SO 동적디버깅  (0) 2019.09.23
Cydia Impactor 에러 모음  (1) 2019.09.03
DVIA (Jailbreak Detection 2 ... Frida)  (0) 2019.08.28
DVIA (Jailbreak Detection ... Frida)  (3) 2019.08.27

+ Recent posts