목록리버싱/codeengn (2)
아메바시큐리티
문제 Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 풀이. 먼저 Windbg32를 이용해 해당 문제 파일을 열어보자. 파일을 열어보니, 엄청나게 많은 jne, jb, jae 등과 같은 jump 관련 명령어가 많은 것을 알 수 있다. 이와 같은 파일들은 주로 packing이 되어 있는 경우가 많다. unpacking을 진행해보자. upx unpacker를 이용해서 unpack한 결과, unpack이 되었다. unpack한 파일을 다시 windbg로 열어보자. 내용을 살펴보던중, Serial 번호를 확인하는 분기문의 위치를 확인할 수 있었다. 해당 분기분을 보면, ..
문제 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 답 5 풀이 위의 그림은 windbg를 이용해 해당 문제 파일을 열어본 결과이다. 코드를 분석해보면, GetDrvieTypeA를 호출한후, esi에 +3, eax에 -2를 해준 결과를 비교한다. 해당 결과의 값이 같다면, CD-ROM으로 인식하는 것을 알 수 있다. 기본적으로 함수의 Return값은 EAX 레지스터에 기록되므로, BreakPoint를 이용하여 해당 함수의 현재 return값을 확인해보자. 현재 GetDriveTypeA를 실행하면 return값이 3이 되는 것을 알 수 있다. 이제 해당 코드를 비교하는 cmp까지 진행한 후 다시 레지스터의 상태를 확인해보자. CD-ROM으로 인식하기 ..