목록전체 글 (18)
Study
5. CodeEngn Basic 05 실행압축된 파일에서 키값을 알아내는 문제이다. 5.1 문제 풀이 코드 영역이 압축되었기 때문에 디버깅을 시작하면 이러한 메시지가 뜬다. [예]를 눌러 디버깅을 시작한다. 처음 만나는 명령어는 PUSHAD이다. POPAD와 짝을 이루어 코드영역에 압축을 해제하여 원본 코드를 기록하고 무결성을 검사하는 등의 기능을 하는 코드이므로 OEP부터 디버깅 하고 싶다면 POPAD를 찾아가면 된다. OEP를 찾아가도 찾고자 하는 문자열은 바로 나타나지 않는다. 그 후에 또 어떤 반복과정이 많은데 나는 디버깅하다가 포기했다.. 그냥 첫 화면부터 F9를 눌러 프로그램을 실행시킨다. 실행시킨 후 문자열을 검색해보면 알 수 없는 문자들만 보인다. 이는 압축이 해제되고 문자열을 제대로 분석..
4. CodeEngn Basic 04 함수 이름을 찾는 문제이다. 4.1 문제 풀이 프로그램을 올려 F8을 이용해 한 줄씩 진행시키다 보면 어느 시점에서 디버깅을 탐지하는지 알 수 있다. 위 그림 속 함수를 실행시키자 디버깅이 시작되었다. 시작. 내부적으로 반복문이 계속 돌고 있다. 해당 함수 안으로 들어왔다. 조금 아래에 의심스러운 이름을 가진 함수가 보인다. 정답이기에 이름을 가렸다. 실행시키면 콘솔엔 아무 일도 일어나지 않는다. 단순히 탐지만 하는 함수인가 보다. 아래의 함수를 실행시키고 나서야 콘솔에 1회 출력된다. 프로그램 구성이 복잡하게 되어있지 않아 바로 찾았지만, 그냥 더 쉽게 찾으려면 CodeEngn 3번 문제처럼 Found intermodular calls를 이용하여 바로 찾아도 된다.
3. CodeEngn Basic 03 3.1 문제 풀이 뭐라는지 모르겠지만 확인 누르면 입력창이 나오는 걸로 봐선 키 입력해서 통과하는 프로그램인가 보다. 아무거나 입력했더니 에러가 뜬다. 직접 F7과 F8로 디버깅을 해서 찾으면 필요 이상으로 몹시 고생하니까 제공되는 기능으로 빠르게 함수를 찾 아간다. [Search for] -> [All intermodular calls] 문자열 비교 함수로 추측되는 함수가 보인다. 함수의 이름이 답이라 파란색으로 가렸다. (이후의 과정은 답과 상관없음) 더블클릭해서 위치를 찾아간다. 두 개의 인자를 이용한 함수임을 알 수 있다. 두 번째 인자는 하드코딩된 문자열의 주소를 참조한다. 그럼 첫 번째 인자는 아마 사용자가 입력한 값일 텐데 확인해보자. 해당 위치까지 디버..