debugging10 안티 디버깅(Anti-Debugging) 안티 디버깅(Anti-Debugging) : 디버깅을 방지하고 분석을 하지 못하도록 하는 기술. 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법등 다양한 방법을 사용하여 분석을 방해한다. (참고 : 디버깅(Debugging) : 프로그램의 특정 부분에 Break Point를 설정한 후 실행을 하면 그 위치에 프로그램이 멈추게 되며 메모리에 값이 제대로 들어가 있는지, 코딩한 흐름대로 프로그램이 진행되는지 단계적으로 실행할 수 있다) 안티 디버깅 기술에는 수많은 방법들이 존재하며 계속 발전하고 있으며 이에 따라 이를 우회하는 기술도 계속적으로 발전하고 있다. CheckRemoteDebuggerPresent() Windows API Detecting Breakpoints by C.. 2009. 11. 26. 아이다(IDA)의 크로스레퍼런스 기능 - 지뢰찾기 맵핵 크로스레퍼런스 : 함수가 사용된 곳을 교차하여 참고할 수 있게 표시를 해주는 것 (참고 : 어떤 함수가 어디에서 또 쓰였는지를 찾기 쉽도록 표시를 해주며 Win32 API에 대해서는 심볼 함수 이름까지도 표현해준다. IDA의 가장 강력한 기능이라고도 할 수 있다) 지뢰찾기(winmine.exe)를 크로스레퍼런스 기능을 이용해 해킹해보도록 하겠다. 'C:\WINDOWS\system32\winmine.exe'를 IDA로 open한다. (참고 : 윈도우 기본 프로그램을 open할 경우 사용할 수 있는 디버거 정보가 담겨있는 심볼 파일을 IDA가 자동으로 연결하여 자세한 정보를 표현해준다. 설정법 : http://dakuo.tistory.com/entry/아이다IDA에-심볼-파일-연결하기) 함수 목록을 살펴본다.. 2009. 11. 6. 아이다(IDA)의 Debugging - IF문 분석 C언어로 if문을 컴파일한 것을 IDA로 분석해보자. #include void main() { int a = 3; int b = 5; if( a > b) { printf(" a 가 크다 "); } else { printf(" b 가 크다 "); } } IDA 그래프 기능으로 본 해당 소스의 흐름이다. 가운데 지점에서 빨간선과 초록선으로 분기하고 각각의 일을 실행한 후 하나로 합쳐지며 프로그램이 종료된다. .text:00411390 push ebp 에 breakpoint를 설정한다. 디버그 모드로 전환(F9)하여 분석을 해보겠다. 다음은 Main함수이다. .text:00411390 main proc near ; CODE XREF: j_mainj .text:00411390 .text:00411390 var_.. 2009. 11. 6. 아이다(IDA)의 Debugging - FOR문 분석 C언어로 for문을 컴파일한 것을 IDA로 분석해보자. #include int main(void) { int i = 0; int result = 0; for ( i ; i 2009. 11. 5. 아이다(IDA)의 Debugging - Stack 분석 IDA의 디버깅을 통한 스택의 Stack 분석 분석해볼 프로그램은 IDA의 사용법을 알아보기 위해 예제로 썻던 것을 계속 쓰겠다. 다시 한번 설명하면 func( ) 함수에 세 개의 값을 파라미터로 전달하고 그 값들의 합을 리턴하는 프로그램이다. #include func(int a, int b, int c) { return a+b+c; } int main(void) { int sum; sum = func(1, 2, 3); return sum; } 프로그램이 실행되기 전의 Stack이다. ESP, EBP의 위치를 살펴본다. .text:00401060 push ebp : EBP가 가리키는 곳이 SFP(Saved Frame Pointer)로 변하고, 그 윗부분이 RET로 바뀌며 스택에 EBP값 12FFC0h값을.. 2009. 11. 4. 아이다(IDA) 사용법 디스어셈블러 : 바이너리 파일을 역으로 어셈블리어로 재구성해주는 툴 IDA가 거의 독보적인 자리를 차지하고 있고, 기능도 다양하다. 아이다(IDA)의 장점 : 1. 거의 모든 CPU를 지원 2. FLIRT(Fast Library Identification and Recognition Technology)는 기계어의 코드로부터 컴파일러 특유의 Library 함수를 산출해낼 수 있는 강력한 기능 3. 각종 플러그인 지원 4. Obfuscation(난독화) 코드도 해석이 잘됨 IDA 설정 : IDA의 설정 파일은 ..\IDA\cfg 경로에 있으며 세부 설정을 할 수 있다. 단축키(idagui)를 재설정할 수 있고 disable된 설정을 enable시킬 수도 있다. 디스어셈블 상태와 디버깅 상태에서 특정 어셈블.. 2009. 11. 2. 이전 1 2 다음