반응형

Reversing 4

rev-basic-1 LEVEL 1

1. 문제 정보 1.1 문제 이름 rev-basic-1 (dreamhack) 1.2 문제 설명 문제를 실행하면 문자열을 받도록 되어있다. 문자열을 넣었을 때 프로그램 내부에서 검증을 거쳐 검증이 통과하면 Correct 통과하지 못하면 Worng을 출력한다. 1.3 문제 분야 ◼️ 리버싱 2. 풀이 2.1 정적 분석 Shift + f12를 눌러 문자열을 검색하였다. 'Input :', 'Correct', 'Wrong' 등 다양한 문자열이 존재를 한다. 검증부분이 통과할 때 Correct 부분이 출력될 것이므로 이 부분을 분석하겠다. 더블클릭으로 Correct 부분에 접근하고 x를 통해 문자열이 호출하는 함수로 접근을 하였다. 먼저 sub_1400013E0와 sub_140001440 함수를 먼저 분석해 보겠..

rev-basic-0 LEVEL 1

1. 문제 정보 1.1 문제 이름 rev-basic-0 (dreamhack) 1.2 문제 설명 문제를 실행하면 문자열을 받도록 되어있다. 문자열을 넣었을 때 프로그램 내부에서 검증을 거쳐 검증이 통과하면 Correct 통과하지 못하면 Worng을 출력한다. 1.3 문제 분야 ◼️ 리버싱 2. 풀이 2.1 정적 분석 Shift + f12를 눌러 문자열을 검색하였다. 'Input :', 'Correct', 'Wrong' 등 다양한 문자열이 존재를 한다. 검증부분이 통과할 때 Correct 부분이 출력될 것이므로 이 부분을 분석하겠다. 더블클릭으로 Correct 부분에 접근한다. x를 통해 문자열이 어떤 함수를 호출하는지 알 수 있다. 그림 3번을 보면 main+57번째에서 호출하는 것을 알 수 있다. mai..

HelloWorld 분석

HelloWorld 소스코드 /* File: hello-world.cpp Build opts: - /MT -> Library Static Linking - /DYNAMICBASE:NO -> Disable ASLR - /od -> Disable Optimization */ #include #include char* str; int main() { int delay = 1000; Sleep(delay); // 1000ms(1초)를 대기합니다. str = (char*)"Hello, world!\n"; printf(str); return 0; } 이 프로그램은 1초를 대기하고 printf로 hello,world!를 출력하는 프로그램이다. 먼저 신뢰할 수 없는 프로그램일 경우 악성코드 프로그램을 대비해 정적분석도..

[reversing.kr] Easy Crack

문제 설명 Easy Crack을 실행하면 문자열을 입력받을 수 있는 창이 뜨고 확인을 누르면 문자열이 키와 맞는지 검증하는 프로그램이다. Password가 틀렸을 경우 Incorrect Password라는 경고창을 띄운다. flag값은 올바른 Password값이다. 문제 풀이 x64디버거를 사용하여 리버싱해보도록 하겠다. 처음에 실행하면 이런 화면이 뜬다. f9번을 눌러 entry포인트로 진입하도록 하겠다. 라이센스 키를 검증하는 방법은 여러가지가 있지만 콜스택을 이용하여 검증부분을 찾는 방법을 선택하겠다. 첫 번째, f9번을 눌러 프로그램을 실행한 후 아무값이나 입력을 넣어서 경고창을 띄운다. 두 번째, 중지버튼을 누른다. 마지막 호출 스택에 들어간다. 호출 스택에 들어가면 최근에 불러온 easy_cr..

반응형