'ida bp 설정'에 해당되는 글 1건

  1. 2011.06.10 [Tip and Tech] IDA를 이용하여 특정 API에 BP 설정하기

특정 API에 BP(Break Point)를 설정하는 것은 분석 시간을 단축할 수 있는 좋은 방법이며, 실제로 많이 사용되는 방법이기도 하다. IDA를 이용하여 특정 API에 BP를 설정하는 방법을 정리하고자 한다.

   

○ API BP 설정 방법 1

첫 번째 방법은 BP를 설정 하고자하는 API를 포함한 DLL에서 수동으로 해당 API를 선택하여 BP를 설정하는 방법이다. 예를 들어 Kernel32.dll에 있는 WriteFile 함수에 대하여 BP를 설정할 경우 Modules 탭에서 kernel32.dll을 더블클릭한다.

[그림 1]과 같이 kernel32.dll에 대한 Names 탭이 생성된다. WriteFile 함수를 찾은 뒤에 다시 더블클릭하면 Disassembly 탭에 그림과 같이 해당 API가 표시된다.

[ 그림 1 ]

해당 API에서 "Debugger → Breakpoints → Add Breakpoint"를 선택하거나 "F2"를 눌러 BP 설정을 한다. BP 설정시 [그림 2]와 같이 다양한 조건(을 설정하여 BP를 설정할 수 있다.

[ 그림 2 ]

해당 샘플을 실행시 [그림 3]과 같이 WriteFile에서 Break Point가 걸리는 것을 볼 수 있다.

[ 그림 3 ]

○ API BP 설정 방법 2

두번째 방법은 IDC 스크립트를 이용하는 것이다. IDC 스크립트 이용시 BP를 설정 함수의 포멧은 다음과 같다.

// Add a new breakpoint
// ea - any address in the process memory space:
// size - size of the breakpoint (irrelevant for software breakpoints):
// type - type of the breakpoint (one of BPT_... constants)
// Only one breakpoint can exist at a given address.
// Returns: success

success AddBptEx(long ea, long size, long bpttype);

원본 위치 <http://www.hex-rays.com/idapro/idadoc/1076.shtml>

예를 들어 WriteFile 함수에 Software BP를 설정할 경우 아래와 같이 IDC 스크립트를 입력한다.

"AddBptEx(LocByName("kernel32_WriteFile"), 1, BPT_SOFT);"

IDC 스크립트 입력 메뉴는 File → IDC command 를 선택하거나 단축키 shift + f2를 입력한다. [그림 4]와 같이 IDC 스크립트를 이용하여 WriteFile API에 BP가 설정된 것을 확인할 수 있다.

[ 그림 4 ]

   

                                                                                                    +---------------------------------+
                                                                                                    | Infinite Flow..                              |
                                                                                                    | mail : reverseinsight@gmail.com    |
                                                                                                    | Blog : http://sinun.tistory.com       |
                                                                                                    | twitter : @unpacker                      |
                                                                                                    | CISSP                                        |
                                                                                                    +----------------------------------+

   

신고
Posted by By. PHR34K