IDA 데이터베이스에서 정보를 추출하는 도구. idbtool i64 및 idb 파일 모두 v2.0 이후 모든 IDA 버전에서 데이터베이스를 처리하는 방법을 알고 있습니다. idbtool 사용하여 탈수되지 않은 데이터베이스에서 정보를 복구 할 수도 있습니다.
idbtool IDA V7.0으로 변경하지 않고 작동합니다.
idbtool을 사용하면 몇 초 안에 수천 개의 .idb 파일을 검색 할 수 있습니다.
더 정확하게 : 내 노트북에서는 다음과 같습니다.
IDA에 약 5 gbyte IDB 파일을로드하는 데 약 45 분이 걸립니다. IDB3.H는 기본적으로 시간이 전혀 없지만 몇 밀리 초를 넘지 않습니다.
이 도구의 두 가지 버전이 있습니다.
하나는 파이썬으로 작성되었습니다
하나는 C ++로 작성되었습니다
두 저장소에는 .idb 또는 .i64 파일을 읽는 데 사용할 수있는 라이브러리가 포함되어 있습니다.
용법:
idbtool [options] [database file(s)]
-n 또는 --names 데이터베이스에 이름이 지정된 모든 값을 나열합니다.-s 또는 --scripts 데이터베이스에 저장된 모든 스크립트가 나열됩니다.-u 또는 --structs 데이터베이스에 저장된 모든 structs를 나열합니다.-e 또는 --enums 데이터베이스에 저장된 모든 열거를 나열합니다.--imports 데이터베이스에서 가져온 모든 기호를 나열합니다.--funcdirs 데이터베이스에 저장된 기능 폴더를 나열합니다.-i 또는 --info 데이터베이스에 대한 일반 정보를 인쇄합니다.-d 또는 --pagedump 덤프 btree 페이지 트리 내용.--inc , --dec 모든 레코드를 오름차순 / 내림차순으로 나열합니다.-q 또는 --query 의 특정 레코드를 검색합니다.-m 또는 --limit 제한 -q 로 반환 된 결과 수입니다.-id0 , -id1 덤프 하나의 특정 섹션 만 덤프합니다.--i64 , --i32 지정된 파일이 64 또는 32 비트 데이터베이스에서 나온 Idbtool을 알려줍니다.--recover 포장되지 않은 데이터베이스의 그룹 파일.--classify 데이터베이스의 노드 사용량을 요약합니다--dump hexdump 원래 바이너리 데이터 쿼리는 CommandLine에 마지막으로 지정되어야합니다.
예:
idbtool [database file(s)] --query "Root Node;V"
CommandLine에 지정된 모든 데이터베이스에 대한 소스 바이너리를 나열합니다.
쿼리는 다음 형식의 문자열입니다.
예제 쿼리 :
Root Node;V > 인쇄 소스 바이너리 이름을 포함하는 인쇄물?Root Node -> 루트를 가리키는 이름 레코드를 인쇄합니다.>Root Node -> 루트 노드 ID로 시작하는 첫 10 개의 레코드를 인쇄합니다.<Root Node -> 10 레코드를 rootnode 이전에 레코드로 시작합니다..0xff000001;N > 루트 노드 이름 항목을 인쇄합니다.#1;N > 루트 노드 이름 항목을 인쇄합니다. 데이터베이스의 가장 높은 노드와 팔로우 레코드를 두 가지 방법으로 나열하십시오. 첫 번째는 ffc00000 아래의 첫 번째 레코드에서 시작하여 다음을 나열합니다. 두 번째 : ffc00000 이후 첫 번째 레코드에서 시작하여 이전을 나열합니다.
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v 이것은 $ MAX NODE 레코드의 nodeid 여야합니다.
마지막 두 기록을 나열하십시오.
--limit 2 --dec -v 첫 두 레코드 인 $ MAX LINK 및 $ MAX NODE 레코드를 나열하십시오.
--limit 2 --inc -v데이터베이스에서 모든 레코드를 인쇄하기위한 몇 가지 방법이 있습니다. IDA의 내부를 더 조사하려는 경우 유용 할 수 있습니다. 손상된 데이터베이스에서 데이터를 복구하는 데 유용 할 수도 있습니다.
--inc , --dec 모든 B- 트리 레코드를 앞으로 또는 뒤로 방향으로 열거하는 데 사용될 수 있습니다.-v 추가하십시오--id0 레코드 트리 대신 페이지 트리를 걷고 각 페이지의 내용을 인쇄합니다.--pagedump 파일을 선형으로 건너 뛰면 삭제 된 페이지의 정보도 표시됩니다. 분해 작업 중에 IDA 또는 컴퓨터가 충돌하고 데이터베이스를 아직 저장하지 않았을 때 .id0 , .id1 , .nam 등과 같은 확장자가있는 몇 개의 파일이 남아 있습니다.
이 파일은 포장되지 않은 데이터베이스이며 naked 파일이라고합니다.
--filetype 및 --i64 또는 --i32 옵션을 사용 하여이 naked 파일을 개별적으로 검사 할 수 있습니다. 또는 --recover 옵션을 사용하여 완전한 데이터베이스로 볼 수 있습니다. idbtool 어떤 파일이 함께 속하는지 자동으로 알아냅니다.
idbtool .id0 파일에서 데이터베이스의 비트 크기를 파악할 수 있지만 다른 사람은 아직 (아직) 파일을 파악할 수 있습니다.
idblib.py 파일에는 라이브러리가 포함되어 있습니다.
Willem Hengeveld [email protected]