Reverse Engineering18 아이다(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. 리버싱 수행단계 리버싱을 위해서 툴을 사용하는 기본적인 순서이다. 1. 바이너리 분석 2. 문자열 분석 및 Api와 Dll, Event 분석 3. 모니터링을 통한 파일 및 레지스트리, 네트워크 패킷 분석 4. 디스어셈블러나 디버거를 이용한 분석 1. 바이너리 분석, 컴파일러 확인, 패커 여부를 파악한 후에 어떤 언어로 코딩되어 있는지 확인한다. 사용되는 툴 : PEID, HEX Workshop 2. 어떠한 문자열들이 들어있는지 대략적으로 살펴보고, 어떤 Api를 사용했는지, 어떤 Dll을 로딩하는지 주요 이벤트 시점의 위치에 대해서 분석한다. 사용되는 툴 : Dependency Walker, Dumpbin, Strings 3. 모니터링을 해본다. 외부의 시스템과 어떤 패킷이 오가는지도 확인한다. 사용되는 툴 : Proc.. 2009. 10. 31. 올리디버거(OllyDBG)를 이용한 nag 제거와 윈도우 PE 구조 문제 풀이 레나(Lena)라는 제작자가 리버싱 플래시 강좌 40강 중에 3번 강좌에 있는 RegisterMe.exe와 RegisterMe.Oops.exe파일을 풀어보겠다. 강좌 파일을 다운로드 받으면 연습 문제와 강의 파일이 모두 들어 있다. 참고로 관심이 있으신 분들은 1강부터 40강까지 순서대로 모두 보는 것을 추천한다. 자료는 모두 영문이다. 조만간 풀이를 올리도록 하겠다. 문제의 설명을 보면 nag를 제거하고, 헤더 문제를 해결이라고 되있다. nag는 경고창 정도를 의미한다. #03.tutorial 폴더의 files 폴더에 RegisterMe.exe 문제를 올리디버거로 실행해보면 nag 창이 떴다. 확인을 누르면 메인 폼이 뜬다. 종료를 하면 또 nag 창이 뜬다. 처리해야 할 부분은 실행할 때 1번, 종료.. 2009. 10. 29. 올리디버거(OllyDBG)를 이용한 KeyFile 체크 문제 풀이와 바이너리 수정 KeyFile : 인증을 위해서 시리얼키를 원하는 것과 비슷하게 키값을 파일에 저장하거나 어떤 파일 이름이 같은 위치에 있는 것을 확인하는 인증을 할 때 사용되는 파일을 의미한다. 파일과 관련된 문제에서는 파일이나 레지스트리 사용하는 것을 확인하기 위해서 모니터링툴을 사용하는데, Filemon을 주로 사용할 것이다. (Filemon 사용법 참고 : http://dakuo.tistory.com/22) CrackMe 15 문제를 풀어보도록 하겠다. 다운로드 하여 Project1.exe을 실행해보면 올리디버거로 열어서 스트링에 참고할 만한 내용이 있는지 찾아본다. 스트링 추출을 하고 살펴보면 solved라는 문자열을 보인다. 이상한 점은 File Monitor라고 해서 Sysinternals 홈페이지 표시되어.. 2009. 10. 29. 이전 1 2 3 다음