Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PS3, 오유 카테고리

Dongmin Kim
November 06, 2014

PS3, 오유 카테고리

Dongmin Kim

November 06, 2014
Tweet

More Decks by Dongmin Kim

Other Decks in Research

Transcript

  1. 하드웨어 플래셔를 이용한 개발용 기기 변환 과정 1. OFW 4.65

    -> OFW 3.55 (Official Firmware) • NOR 플래시에 담긴 정식 펌웨어 4.65를 E3 Flasher를 사용하여 덤프합니다. • 덤프 된 파일을 하위 펌웨어를 설치할 수 있도록 수정합니다. • E3 Flasher를 사용하여 NOR 플래시에 주입합니다. • 정식 펌웨어 3.55를 설치합니다. 2. OFW 3.55 -> CEX 4.65.1 (Custom REBUG Firmware) • EID0 Root key 덤프 후 4.65.1 펌웨어를 설치합니다. 3. CEX 4.65.1 -> DEX 4.65.1 (Debug REBUG Firmware) • EID0 Root key를 이용하여 펌웨어의 Target ID를 Debug Station으로 변경합니다. • REBUG Toolbox를 이용하여 DEX 펌웨어로 변경합니다.
  2. 메모리상 해당 문자열 위치 추적 1. 게임 실행 후 PS3

    SDK가 제공하는 TMAPI를 이용하여 유효한 메모리 주소 범위를 덤프합니다. 2. 게임 내 문자열을 Unicode encode 하여 덤프 파일에서 검색 합니다. 3. 검색 결과 찾은 여러 주소들에서 현재 문자열에 따라 실시갂으로 변하는 주소 특정합니다.
  3. 해당 문자열을 조작하는 instruction 추적 1. IDA 6.5에 DECI3 플러그인을

    이용하여 원격 디버거를 attach 합니다. 2. 해당 문자열이 있는 메모리에 Hardware Breakpoint At Write 을 설정 후 실행합니다. 3. Breakpoint에서 프로그램이 중단되면, 함수 밖으로 빠져 나가면서 문자 열 단위를 조작하는 sub routine을 특정합니다. ex1) BLJS10260 - アイドルマスター ワンフォーオール (아이돌마스터 OFA) 의 경우, 0x0000000000046188에서 실행하는 sub routine에 의해 문자열을 로드합니다. 여기서 이름이 로드되는 장소는 r3 register + 0x50 이고, 대사가 로드되는 장소는 r3 register + 0x90 입니다. ex2) 분석 결과, 이 게임은 한 장면이 로드될 때 메모리에 모든 대사를 올려 놓고, 해당하는 대사가 나올 때 배열의 첫 번째에 현재 대사를 로드합니다.
  4. 보완할 점 1) 완성하지 못함 -> 번역기능의 부재 -> C++을

    사용하여 IDA용 Plugin을 제작 중 입니다. 2) 게임마다 다른 문자열 주소 찾기 한계 -> 커뮤니티 등을 구성하여 각자 찾은 주소 값 공유가 필요합니다. 3) 한글 유니코드 입력시 ‘…’ 등으로 깨짐 -> 게임 내 폰트를 분석하여 한글 폰트 주입이 필요합니다. 4) 개발용 기기에서만 실행 가능 -> TMAPI 가 아닌 CCAPI를 이용하여 CEX 모드에서도 실행 가능하게 만들 필요가 있습니다.
  5. 개요 • 오늘의 유머에서 보기 싫은 카테고리를 숨겨주는 플러그인입니다. •

    JavaScript + JQuery + Bootstrap 을 활용했습니다. • https://github.com/kim135797 531/ou_category 에서 다운 받 을 수 있습니다.