2009-12-19 5 views
1

현재 IDA Pro에서 Mach-O 실행 파일을 디스 어셈블하고 있습니다. 관심을 갖고있는 문자열을 찾았지만 외부 참조를 찾을 때 아무 것도 찾을 수 없습니다. 문자열이 원래 코드에서 참조되지만 IDA Pro는 참조되는 방식을 찾을 수없는 것 같습니다.IDA Pro에서 외부 참조를 문자열에 "보이게"할 수 있습니까?

IDA Pro에서 외부 참조를 확인하기 위해 수행 할 수있는 트릭이 있습니까?

+1

이 질문은 꽤 오래되었지만 IDA에서 직접 상호 참조가없는 문자열을 보는 것은 매우 일반적입니다. 문자열의 주소가 어떤 식 으로든 런타임에 계산되면 IDA는 종종 상호 참조를 인식하지 못합니다. PE 파일의 경우 리소스 섹션에 문자열이있는 경우이 파일을 자주 볼 수 있습니다. 어쨌든 x86에 있고 실행 파일을 실행할 수 있다면 문자열에 액세스 할 때 디버거가 중단 될 수 있도록 디버거에서 문자열에 대한 중단 액세스를 설정하는 것이 유용 할 수 있습니다. 그런 다음 스택 추적을 생성하고 거기에서 뒤로 작업 할 수 있습니다. – user1354557

답변

2

전체 프로그램을 분석하기에 충분한 시간을 주셨습니까? 참조가있는 경우 큰 프로그램에서 찾기 전에 시간이 걸릴 수 있습니다.

IDA가 흐름 경로를 찾을 수없는 지침에 의해 참조 될 수도 있습니다. 이것은 IDA가 테이블의 크기를 추측 할 수없는 점프 테이블에서 발생할 수 있습니다. IDA에서 I을 사용하는 이유는 IDA가 대부분의 작업을 수행 할 수 있도록 판단과 적절한 해석이 필요한 지침을보고 적절한 유형으로 설정하기 때문입니다.

2

문자열이 문자열 배열에 속하고 문자열의 첫 번째 요소가 IDA Pro에 의해 참조 될 수 있습니다.

예 :

str_table dd offset str1 ; ^xrefs: display_message(int idx) 
dd offset str2 
dd offset 0x1234 (if you press ctrl+o it may resolve to mystr) 

mystr db "Hello world" 

그래서, ..., 등을 가까이 문자열로 문자열에 대한 참조를 발견하고 자신이 속한 경우 테이블에 참조 배열을 만들

1

IDC 스크립트 기능을 시도 add_dref()이 당신이 찾고있는 것입니다.

관련 문제