문제풀이
[Reversing.kr] Easy_Crackme
[Reversing.kr] Easy_Crackme
2024.03.10문제 설명 파일 실행 시 사용자가 입력할 수 있는 창이 출력된다. 임의의 값을 입력 시, 부정확한 패스워드라는 문구가 출력된다. 출제자가 정해놓은 패스워드를 맞춰보자. 사용 툴 파일 정보 확인 ExeinfoPE 비밀 번호 분석 X64 dbg 분석 1. 파일정보 확인 확인되는 패킹은 없고, 언어는 C++로 제작되었으며, 32bit라는 정보를 알 수 있다. 2. 분석 내용 처음 attach를 시키면 상단바에 모듈이 ntdll.dll로 되어있는데, easy_crackme.exe로 변경한다. (보기-Modules) 찾는 방법에는 빠르게 문자열참조를 찾는 방법과 위에서부터 호출순서를 확인해 보는 방법이 있는데, 결과적으론 동일하므로 호출을 따라가 본다. 맨 위를 보면 DialogBoxParamA를 호출함을 알 수..
[C++ 백준] 1003 피보나치 함수
[C++ 백준] 1003 피보나치 함수
2021.12.18블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 다음 소스는 N번째 피보나치 수를 구하는 C++함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) 호출한다. fibonacci(2)는 fibonacci(1)과 fibonacci(0)을 호출한다. fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacc..
[C++ 백준] 15652 N과 M (4)
[C++ 백준] 15652 N과 M (4)
2021.12.12블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 (1
[C++ 백준] 1932 정수 삼각형
[C++ 백준] 1932 정수 삼각형
2021.11.22블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 삼각형의 맨 위층부터 시작해서 아래에 있는 수 중 하나를 선택하여 내려올때, 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하시오. (현재 층에서 선택 된 수의 왼/오른쪽 아래 대각선만 선택 할 수 있다.) 첫째 줄에 삼각형의 크기(1
[C++ 백준] 15650 N과 M (2)
[C++ 백준] 15650 N과 M (2)
2021.10.30블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 (1
[C++ 백준] 2108 통계학
[C++ 백준] 2108 통계학
2021.10.04블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 다음 4가지의 기본 통계 값을 구하는 프로그램을 작성하시오. 단, N(1 x; int sum = 0; int index = 0; int max = 0; vector list; for (int i = 0; i > num; sum += num; if (num max) max = arr[index]; list.push_back(num); } // 평균, 소수점 이하 첫째 자리 반올림 float avg = sum / (float)x; cout
[C++ 백준] 1181 단어 정렬
[C++ 백준] 1181 단어 정렬
2021.08.26블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 풀이 전략 algorithm의 sort와 vector를 이용해서 정렬한다. 정렬 기준은 사이즈가 같으면 두 값을 비교, 다르면 오름차순 정렬한다. 소스 코드 #include #include #include #include using namespace std; bool Compare( string a, string b ) { if (a.size() == b.size()) { int x = a.compare(b); return x < 0; } else return (a.size..
[C++ 백준] 18870 좌표 압축
[C++ 백준] 18870 좌표 압축
2021.08.18블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 수직선 위에 N개(1 x; vec.push_back(x); org.push_back(x); } sort(vec.begin(), vec.end()); vec.resize(unique(vec.begin(), vec.end()) - vec.begin()); for (int x : org) { int print = lower_bound(vec.begin(), vec.end(), x) - vec.begin(); cout
[C++ 백준] 11651 좌표 정렬하기2
[C++ 백준] 11651 좌표 정렬하기2
2021.06.14블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 2차원 평면 위의 점 N개(1 x >> y; vec.push_back(make_pair(x,y)); } sort(vec.begin(), vec.end(), Comp); for (int i = 0; i < n; ++i) { cout
[C++ 백준] 1929 소수 구하기
[C++ 백준] 1929 소수 구하기
2021.06.13블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. (단, M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. (1 n; for (int i = m; i
[C++ 백준] 1065 한수
[C++ 백준] 1065 한수
2021.06.12블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열: 연속된 두 개의 수의 차이가 일정한 수열 N이 주어졌을 때, 1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. (N (3-2) == (2-1): 한수 소스 코드 #include using namespace std; int GetNum( int x ) { int result = 0; if (x x; cout
[C++ 백준] 1002 터렛
[C++ 백준] 1002 터렛
2021.06.09블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 조규현의 좌표(X1, Y1)와 백승환의 좌표(X2, Y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 단, 위치의 개수가 무한대일 경우에는 -1을 출력한다. 첫째줄에 테스트 케이스의 개수 T가 주어지며, 각 테스트 케이스의 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. (단, -10,000 > x >> y >> r >> x2 >> y2 >> r2; double d = sqrt(((x - x2) * (x - x2)) + ((y - y2) *(y - y2))); double sub = r > ..