Security/Reversing

원하는 함수 코드 찾는 법

gukbap 2016. 2. 12. 00:30
반응형

원시적 방법


1. 무작정 F8을 연타

2. 원하는 동작을 할 때까지 연타하다가 원하는 동작이 나오면 그 전의 OP Code에 F7을 이용해 진입

3. 적당히 분석해본다.


장점 : 코드의 구조를 익히는 훈련이 될 수 있다.
단점 : 시간이 오래 걸린다.


디버거가 분석해 놓은 Referenced Strings를 활용하는 방법

1. Code Window에서 마우스 오른쪽 클릭 -> Search For -> All referenced strings를 클릭.
2. 여기에는 odb가 디버깅 전에 미리 분석해 놓은 참조된 문자열들을 표시해줌.
3. All referenced strings Window에서 내가 찾고자 하는 함수가 가질 만한 문자열을 찾고 더블클릭으로 해당 OP Code로 넘어가 분석해 본다.



프로그램이 사용한 API 목록을 활용하는 방법


1. Code Window에서 마우스 오른쪽 클릭 -> Search For -> All intermodular calls를 클릭.

2. 디버거는 PE File Format으로 구조화된 실행파일의 IAT(Import Address Table)에서 프로그램이 사용하는 API 목록을 뽑아와 여기에 출력해 준다.

3. 찾고자 하는 함수가 호출할만한 API가 있는 OP Code를 찾아 더블클릭해 해당 OP Code로 넘어가 분석해 본다.



프로그램이 로드한 라이브러리의 내부에 BP를 걸어서 찾는 방법


1. Packer, Protector(Anti-Debugging, Anti-Emulating 등등)의 기법이 적용되면 세번째 방법 처럼 IAT를 참고하는 방법을 사용할 수 없다.

2. Code Window에서 마우스 오른쪽 클릭 -> Search For -> Names를 클릭하거나 단축키 Ctrl + N을 사용해서 프로그램이 로드한 라이브러리들을 로드한다.

3. 이 창에서 바로 찾고자 하는 API를 입력해서 찾는다. Space 키로 검색완료 가능.

4. 해당 API를 더블클릭하면 해당 OP Code로 이동한다.

5. Ctrl + F9로 RETN명령까지 가고 F7이든 F8이든 사용해서 RETN 명령을 실행시킨다.

6. 그러면 해당 API를 호출한 함수로 이동 가능.

반응형

'Security > Reversing' 카테고리의 다른 글

문자열 Patch  (0) 2016.02.13
OllyDbg 팁  (0) 2016.02.12