2012-12-08 2 views
1

컴파일 된 Dalvik 코드를 분석하려고하는데 문제가 발견되었습니다. .dex 형식의 specification입니다.Dalvik 리엔지니어링, .dex 파일 구조

class_defs_off  : 61836 (0x00f18c) 
data_size   : 368612 
data_off   : 72312 (0x011a78) 
Class #0 header: 
class_idx   : 62 
access_flags  : 1536 (0x0600) 

을하지만 내 바이트 코드를 볼 때 다른 무언가가있다 : 나는 dexdump 사용할 때 나는 헤더 바로 옆에 수업을 - 나는 파일의 헤더를 얻을 수 있습니다,하지만 난 다음에 무슨 일이 일어나고 있는지 이해할 수 없었다 . 머리글 옆에 무슨 일이 벌어지는 지 이해할 수 없습니다. 사양에 따르면 그것은 string_idi's이지만 확실하지 않습니다. .dex 파일의 실제 구조는 무엇입니까?

답변

3

실제로 언급 한 스펙은 dex 파일의 구조를 정확하게 묘사합니다. (참고 : 해당 문서를 작성했습니다.)

Dexdump는 dex 파일의 전체 내용을 순서대로 출력하지 않으므로 혼란이 있습니다. dx 도구는 dex 파일을 생성 할 때 dex 파일 내용의 주석 된 목록을 출력 할 수 있습니다. 이 방법이 유용 할 것입니다. 죄송합니다. 옵션을 기억하지 못하지만, --dex --dump-to=file.txt --dump-bytes과 같을 것입니다.

이 정보가 도움이되기를 바랍니다.

5

Baksmali는 dx의 16 진수 덤프와 비슷한 형식으로 기존 dex 파일의 컨텍스트를 덤프 할 수 있습니다. 아 그래, 내가 baksmali가에 대한 옵션을 한 것으로 알고 있었다한다

baksmali classes.dex -D out.dump

+0

(장점은 기존 덱스 파일을 덤프 수 있다는 것입니다). – danfuzz

+0

BTW,'dx'도 요즘 dex 파일을 읽는 법을 모르십니까? 그렇다면 기존의 dex 파일을 덤프 할 수 있습니다 (또는 적어도 거의 그렇게). – danfuzz

+0

흠, 예. 기존 독서 파일 (아직)을 덤프 할 수있는 것처럼 보이지는 않지만 독서 지원이 dex 파일 병합 작업에 추가되었다고 생각합니다. 그것은 가지고 좋은 기능이 될 것입니다, 나는 그것을 조사해야합니다 :) – JesusFreke

관련 문제