반응형

 

아래 스크립트 사용 시 libc 라이브러리 내 존재하는 함수 주소 값을 불러옴

console.log("\n[*] Frida Get All Function's Address in libc.so with");

			var i;	

            var Exports = Module.enumerateExports('libc.so');		
            for (i in Exports) {
                console.warn('[*]' + Exports[i].name + ' : ' + Exports[i].address);
            }

            var Imports = Module.enumerateImports('libc.so');
            for (i in Imports) {
                console.log('[*]' + Imports[i].name + ' : ' + Imports[i].address);
            }

 

아래는 스크립트 결과

반응형
반응형

AOS-ver 10과 Frida 15.1.4에서 스크립트 load 시

  • [현재 확인 및 테스트 해본 버전은 AOS-ver10]
  • 단말에 따라 해당 오류는 상이할 수 있으며, 오류가 발생 안할 수도 있음.

 

"failed to spawn: unexpectedly timed out while waiting for app to launch" 해당 오류가 발생되며

스크립트를 정상 로드할 수 없습니다.

 

해당 오류는 UASP로 인해 에러가 발생되는 걸로 확인

 

※ 결론 및 해결 방안

  • UASP를 기능 OFF
  • *.js 스크립트 작성 시 ex)
    setTimeout(function () {     
    	setImmediate(function () {         
    		Java.perform(function () {             
            	console.log();          
                })     
          }) 
       },10);
반응형

'200. Mobile > 201. AOS' 카테고리의 다른 글

CTF로 보는 Android Unity 게임 해킹  (0) 2022.01.27
반응형

모바일 진단 수행 시 iOS 앱(App)의 바이너리를 분석하기 위해 *.IPA 추출 해야할 경우가 있습니다.

 

Fridump 또는 CrackerXI 트윅을 사용하여 IPA 추출하는 것이 대중적입니다.

 

개인 경험으로 Fridump 또는 CrackerXI 트윅으로 IPA를 추출 시 바이너리의 복호화 미흡 현상 또는 앱 정지, 내부 전용 앱일 경우 추출이 불가능하여 다른 도구를 모색해 봤는데, "flexdump"라는 것을 찾았습니다.

 

※해당 도구들은 Checkra1n으로 탈옥된 iOS 12.5, 14.2 버전에서 정상 작동되는 것을 확인했습니다.

https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac

 

위 링크에 접속하여 iOS에 설치할 *.deb 파일을 다운로드 후 아래 그림과 같이 단말기 쉘에서 설치합니다.

flexdump 설치

 

./flexdump -help 입력 시 아래 그림과 같이 옵션을 확인할 수 있습니다. 옵션 확인 후 IPA를 추출하시면 됩니다.

flexdump 옵션 확인

 

반응형

'200. Mobile > 202. iOS' 카테고리의 다른 글

iOS-FRIDA Backtrace  (0) 2022.01.27
반응형

iOS FRIDA BackTrace 코드

 

Interceptor.attach(test, {
            onEnter: function (args) {
                console.log('');
                console.log('[+]' +  + 'start_Backtrace');
		console.warn('\tBacktrace:\n\t' + Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\n\t'));
            }
        },
        onLeave: function(retval){
        
        }
     )
}

 

반응형

'200. Mobile > 202. iOS' 카테고리의 다른 글

iOS-IPA 추출 Flexdump  (0) 2022.01.27
반응형

해당 CTF는 모바일 유니티(Unity) 게임의 미션은 보스를 잡은 후 플래그(Flag) 값을 획득하는 문제입니다.

CTF - 미션

 

앱 설치 후 캐릭터가 몬스터에게 다가갈 경우 2~3번 어택 당한 후 게임이 끝납니다. 

Game Over 화면

 

Unity - ILB2CPP의 컴파일 과정을 알아야합니다.

0x1) ILB2CPP의 경우 IL C++ 소스코드로 변환

          > C++ 컴파일러에 전달된 네이티브 라이브러리(*.SO)파일이 생성되는

             구조로 AOT 컴파일 방식을 사용

0x2) IL코드를 읽고 기계어를 수행하는 JIT 컴파일 방식이 아님

          > 미리 기계어를 만들고 수행하는 방식으로 속도 향상

0x3) 코드 크기를 줄일 수 있음(장점)

          > IOS-64BIT Build 지원

          > Interpreter  거치지 않고 Instruction CPU가 바로 처리

0x4) 디버깅이 어려움(단점)

          > Build 시간이 MONO 보다 느림

          > Reflection 사용하는 JSON 라이브러리에서 버그 발생률 높음

 

즉 Unity 컴파일 과정을 보면 il2cpp build 방식을 사용하며, IL Assembly 코드를 il2cpp.exe에 C++ 소스코드로 변환 과정을 거치고, C++ 컴파일러에 전달하여 Native library를 생성합니다.

 

IL2CPP – AOT 컴파일

 

Adventure of Warrior-fixed 앱을 디컴파일 후 "lib > armeabi-v7a" 경로에 "libil2cpp.so"파일을 확인할 수 있습니다.

Adventure of Warrior-fixed > libil2cpp.so

 

디컴파일된 "libil2cpp.so"파일을 IDA or Ghidra로 확인 시 심볼릭이 깨져있어 내부 메소드 정보를 확인할 수 없습니다.

"Il2CppDumper"도구를 사용하여 "libil2cpp.so"의 심볼릭을 복구합니다.

※"Il2CppDumper"도구로 "libil2cpp.so"의 심볼릭을 복구 시 "libil2cpp.so"와 "global-metadata.dat"를 지정합니다.

libil2cpp.so 심볼릭 복구

 

심볼릭 복구 시 아래 그림과 같이 "/Il2CppDumper-v6.6.5/DummyDll" 폴더에 "Assembly-CSharp.dll"파일이 생성됩니다.

Assembly-CSharp.dll 

 

"Assembly-CSharp.dll"을 디컴파일 시 "SetHp" 함수가 확인 됐으며 해당 함수 "Offset 0x590FCC"의 값을 1만으로 리플레이스 되도록 후킹합니다.

Assembly-CSharp.dll - ShtHp Offset

 

FRIDA를 이용하여 SetHp 함수 값을 변조 후킹 시 캐릭터가 몬스터에 의해 죽지 않으며, Flag 값을 획득했습니다.

Flag 획득

 

 

 

※) JIT(Just-In-Time)

          > 바이트코드를 컴퓨터 프로세서(CPU)로 직접 보낼 수 있는 명령어로 바꾸는 프로그램

※) IL(Intermediate Language)

          > 스택 기반 어셈블리 언어

※) AOT컴파일(Ahead-Of-Time Compilation)

          > 소스코드를 미리 컴파일 하는 방식을 의미

※) Reflection

          > 구체적인 클래스 타입을 몰라도 클래스의 메소드들을 접근할 수 있게 하는 JAVA API

반응형

'200. Mobile > 201. AOS' 카테고리의 다른 글

FRDIA 오류?  (0) 2022.01.27

+ Recent posts