$ 리버싱 $
-
CodeEngn Basic RCE 6$ 리버싱 $/CodeEngn Basic RCE 2019. 3. 27. 00:41
Serial값을 넣으면 틀렸다고 뜹니다. 06.exe파일은 upx 되어있어서 upx 명령어를 이용해서 Unpack을 했습니다. 올리디버거로 분석을 시작해 보겠습니다. 파일의 main 을 Search for 을 이용해서 찾아보겠습니다. 일단 1234를 입력해 보겠습니다. GetDlgItemTextA라는 함수를 지나가면 제가 입력한 아스키코드값인 1234가 입력이 됩니다.그리고 좀 내려가 보면 "1234" 와 "AD46DFS547" 과 비교 하는 부분이 나오기 때문에 Serial 값은 AD46DFS547이 됩니다.하지만 진짜 답은 OEP까지 구해야 하기 때문에 한번 구해 보겠습니다. OEP는 시작 주소 이므로 다음과 같습니다. OEP : 00401360입니다.
-
CodeEngn Basic RCE 5$ 리버싱 $/CodeEngn Basic RCE 2019. 3. 27. 00:41
이름과 시리얼값을 넣으면True일때의 값을 출력해주는 프로그램 입니다. PEID로 확인해 보겠습니다.UPX 되어있 파일이네요UPX을 풀어주겠습니다. 올리디비거에서 파일 열어 보겠습니다.F8을 이용해서 아래로 내려가 보면위의 박스인 Unregistered…은 입력한 값 그리고 아래 박스인 Registered User은 실제 값입니다. 틀렷으니 다시 실행해서 입력할때 위 빈칸에 Registered User을 작성해 줍니다. 위의 박스는 입력한값, 아래 박스는 정답입니다. 이제 실행해서 올바른값을 넣어 줍니다.
-
CodeEngn Basic RCE 4$ 리버싱 $/CodeEngn Basic RCE 2019. 3. 27. 00:40
해당 문제는 디버거 프로그램을 탐지하는 기능을 가지고 잇다고 합니다. 디버거가 아닌 일반적으로 프로그램을 실행하면 디버거로 실행 한게아니기 때문에정상이라고 출력됩니다.그렇다면 디버거에서 올리디버거 에서 실행해보겠습니다. 이렇게 디버깅 당함 이라고 출력이 됩니다. 디버거를 탐지하는 함수를 한번 찾아보겠습니다.Search for -> all intermodular calls를 통해서 확인해 보면 다음과 같습니다. IsDebuggerPresent 라는 함수가 있네요 40105E으로 가겠습니다. EAX를 보면 디버거로 EAX이 1이면 다음과 같이 출력이 되는 것 같습니다. 그렇다면 EAX를 0이 되도록 바꿔 보면다음과 같이 바꿀수 있습니다. 그리고 실행을 해보면정상이 나오게 됩니다. IsDebuggerPrese..
-
CodeEngn Basic RCE 3$ 리버싱 $/CodeEngn Basic RCE 2019. 3. 27. 00:39
파일을 열었을때 MSVBVM50.DLL이 없다고 하는 문구가 뜨면https://support.microsoft.com/ko-kr/help/180071/file-msvbvm50-exe-installs-visual-basic-5-0-run-time-files 에 들어가서 다운로드 받으시면 됩니다. 다시 파일을 열어보면,확인 누르기Serial 값을 넣고 Registrieren을 누르면 되는 프로그램 같습니다. 일단 문자열을 비교하는 함수를 찾아야 하기 때문에 올리디버거를 이용해서 사용된 함수를 찾아보겠습니다. vbaStrCmp함수를 따라가 보겠습니다. 다음 문자열이 Serial값 인것 같습니다.
-
CodeEngn Basic RCE 1$ 리버싱 $/CodeEngn Basic RCE 2019. 3. 27. 00:35
프로그램을 실행하면 다음과 같은 문구가 나옵니다. CD-ROM이 아니라고 나옵니다. 올리디버거를 이용해서 확인해 보겠습니다. 좀 내려가 보면 40100E에서 첫 메시지 박스가 뜨고 나서 401024에서 CMP명령을 이용해서 EAX와 ESI가 비교를 합니다. 그리고 401028에서 CMP의 반환값을 가지고 참인지 거짓인지 판별후 JMP를 할지 안할지를 결정하는 문장입니다. 이때 Error로 가기 때문에 YEAH!!로 갈수 있도록 해야 하는데 방법이 총 4가지가 있습니다. #1. EAX와 ESI의 값을 동일하게 만들어서 성공으로 보내는 방법#2. JE조건문을 바꿔서 성공으로 보내는 방법#3. 실패화면을 성공으로 보내는 방법(문자열 변경)#4. C드라이브를 진짜 CD-ROM으로 인식하게 하는 방법 저는 가장 ..