전체 글 195

IDA Python Search Flags 정리

IDA Python Search Flags 정리 ida_search 모듈의 variables 임. 변수 Bit 의미 SEARCH_UP 0 search towards lower addresses 위로 서치 SEARCH_DOWN 1 search towards higher addresses 아래로 서치 SEARCH_NEXT 2 for other find_.. 반복문 돌릴 때 NEXT 옵션 안주면 처음 것만 반복됨. SEARCH_CASE 4 case-sensitive search (case-insensitive otherwise) 대소문자 구분 여부 SEARCH_REGEX 8 regular expressions in search string (only supported for txt search) 정규 표현식 ..

IDA 2019.02.21

IDA Python 찾기(immediate, text, code 등)

IDA Python 찾기(immediate, text, code 등) ida_search 모듈 도큐먼트를 보면 find 관련 함수들이 많이 있다.인자들만 봐도 사용법이 감이 올 것이다.몇가지만 사용해 보자. 1) Immediate 값 검색ida_search 모듈의 find_imm()함수를 이용.ex)print find_imm(MinEA(), SEARCH_DOWN, 0xff) 해석)MinEA() : base주소부터SEARCH_DOWN : 아래 방향으로 서치 하면서0xff : 0xff 값을 찾겠다. 2) Text 검색 ida_search 모듈의 find_text()함수를 이용. ex) string = "error"start = MinEA() #base addrend = MaxEA() #end addr whi..

IDA 2019.02.21

IDA Python 바이너리 패턴 검색

IDA Python 바이너리 패턴 검색idc모듈의 FindBinary() 함수를 이용. FindBinary(ea, flag, searchstr, radix=16)ea : 검색 시작 주소flag : 검색 방향, 대소문자 구분, 검색 과정 생략 등의 flag (여러개 중첩 가능)searchstr : 찾고자 하는 문자열radix : 이건 뭐 무시해도됨. 16이 기본 값. Flags0 : SEARCH_UP1 : SEARCH_DOWN2 : SEARCH_NEXT4 : SEARCH_CASE #대소문자 구분해서 검색8 : SEARCH_REGEX16 : SEARCH_NOBRK32 : SEARCH_NOSHOW #검색 과정 생략64 : SEARCH_UNICODE #유니코드로128 : SEARCH_IDENT256 : SEAR..

IDA 2019.02.21

IDA Python 상호참조

IDA Python 상호참조: 데이터/함수가 어디에서 쓰이는지 파악하여 활용. IDA Script는 자동화 분석이 목적이다.취약점을 유발시킬 수 있는 함수를 알고 있을 때1) 그 함수를 호출하는 부분의 주소를 쭉 출력2) 그 함수를 호출하는 부분에 색칠로 표시. --> SetColor() 함수 사용.등의 작업을 미리 해두면 분석 시 좀 더 편하다. idautils 모듈의 CodeRefsTo(ea, flow) 함수를 통해 코드 상호참조를 얻을 수 있다.(CodeRefsTo()는 object generator) 예시)취약점을 많이 유발시키는 memcpy 함수를 call 하는 부분을 다 찾아보자.memcpy_addr = idc.LocByName("memcpy")for addr in CodeRefsTo(memc..

IDA 2019.02.21

IDA Python 함수 타입

IDA Python 함수 타입 함수 타입 ( Function Type )(하나의 함수가 여러 속성을 가지는 것도 가능) FUNC_NORET 리턴 명령어를 사용하지 않는 함수 FUNC_LIB 라이브러리 코드 식별 FUNC_STATIC 정적 함수로 컴파일된 함수 FUNC_FRAME 프레임 포인터(ebp)를 사용하는 함수 FUNC_BOTTOMBP ebp가 스택 포인터와 일치하는 함수 FUNC_HIDDEN 숨김 상태에 있는 함수 FUNC_THUNK thunk 함수들을 찾아내는 식별자 다시말해, (단순히 다른 함수로 점프하는 함수)

IDA 2019.02.21

IDA Python 특정 함수 디스어셈블링

IDA Python 특정 함수 디스어셈블링 주소를 받아 주소에 해당하는 어셈블리 명령어를 반환받는 함수는 idc.GetDisasm() 함수이다.( idc 모듈의 GetDisasm 함수 검색 ) 간단하게 확인해보자. 현재 커서의 위치를 반환하는 here() 함수를 호출하여 그 위치의 어셈블리 명령어를 확인해 보자. 스크립트 작성. 실행 결과ida에서 본 어셈블리 명령어와 동일하게 잘 나온다. ==> 잘 됨 ! 그렇다면 자동화를 한다고 생각해보자. 코드를 훑다가 내가 원하는 구문, 상황이 나왔을 때 명령어가 속한 함수 전체를 디스어셈블링 해서 출력하도록 할 수도 있다. //쭉 훑으며 원하는 상황, 구문 검사 루틴 대신 지금은 here()로 대체하고//특정 함수 디스어셈블링이 잘 되는지 확인. ea = her..

IDA 2019.02.21

IDA Script Python 세그먼트, 함수 목록 출력

IDA Script Python 세그먼트, 함수 목록 출력 [IDA Script 작성하기]1) IDA 아래쪽 커맨드창을 이용 : 한줄 한줄 바로바로 작성&실행2) [ File - ScriptCommand ] : 스크립트 작성하여 바로 적용3) [ File - ScriptFile ] : 만들어둔 스크립트 파일을 가져와 실행 1) 세그먼트 목록 출력커맨드 창에 Segments() 입력해 보자.Segment()는 Segments object의 generator이다.객체를 생성해준다면 받아서 사용해야지. 생성자를 통해 각각의 세그먼트 객체를 받아서 각 세그먼트의 영역을 출력하는 스크립트를 작성해 보자.커맨드 라인에서 한줄한줄 쳐도 되지만, 스크립트를 작성하여 사용하고 싶다면 Script command 창을 열어..

IDA 2019.02.21