[iOS Reverse] 앱의 난독화

최첨단

전투로 단련된 iOS 리버스 엔지니어로서 혼란을 겪지 않았다면 경쟁 제품의 핵심 비즈니스에 침투하지 않았다는 의미입니다. 큰 공장의 핵심 사업은 어느 정도 보호를 받으며, 이는 스스로를 보호하는 방법입니다. 오늘 우리는 학습과 사용만을 위한 동맹을 분석합니다.

난처

일반적인 난독화 방법: bcf(거짓 블록), fla(흐름 제어 확장), sub(명령 확장), Split(기본 블록 분할), 이것은 Mr. Zhang ollvm의 기능입니다. 혼자 빅 가이. 그러나 IDA에서 분석한 버그를 사용하여 일부 보호 기능을 수행하는 제조업체도 있습니다. 예를 들어 의도적으로 불균형 스택을 생성하거나 F5를 할 수 없거나 레지스터를 사용하여 함수에서 BR X12로 점프하거나 가비지 명령어를 삽입하여 IDA가 구문 분석에 실패하는 등

만난 적이 있습니까?

스크린샷 2022-05-16 4.36.28 pm.png

스크린샷 2022-05-16 4.53.58 pm.png

스크린샷 2022-05-16 5.09.48 pm.png

그를 잡아

  • 1.MonkeyDev 중단점

위챗IMG481.jpeg

런타임 시 주소인 x12 레지스터의 값을 알 수 있습니다.

  • 2. frida-stalker 사용

저는 주로 frida-stalker를 사용하여 명령어를 수집하고, 작업 중에 실제 실행 명령어를 기록하고, 실제 실행 명령어로 IDAPython으로 IDA에 많은 복구 스크립트를 작성할 수 있습니다.

스크립트 작성, 지침 수집 및 지침 json 파일 생성

위챗IMG482.jpeg

스크린샷 2022-05-16 5.40.25 pm.png

3. 2를 통해 명령어 집합을 수집하고 IDA에서 복구 스크립트를 실행합니다.

exec(open('/Users/xxx/Desktop/Uxx/ida_fix.py').read())
复制代码

결과 보여줘

스크린샷 2022-05-16 5.49.38 pm.png

여기까지 코드 복원이 종료됩니다.

2. 요약

  • 1. 목적 함수의 시작점을 찾고 실행 단계 수를 계산합니다.
  • 2. 목표 함수에 의해 실행된 명령어 세트를 수집하는 스토커 스크립트를 작성하십시오.
  • 3. IDAPython 스크립트를 작성하고 IDA에서 실행하여 대상 함수를 수정합니다.

3. 액세서리

요청하려면 작성자에게 문의하세요.

Supongo que te gusta

Origin juejin.im/post/7098270533170495525
Recomendado
Clasificación