리버싱

codeengn.com (advance 2)풀이

He110 2019. 4. 1. 00:08

다음 프로그램을 키면 이런 화면이 뜹니다. 아무런 정보가 없네요..

이제 디버깅을 계속하다보면 걸리는 함수가 있습니다.

계속 스탭인투해줍니다.
계속
스탭인투를 해주다보면 저 루트가 보입니다. 저 루트 JNE(JUMP NOT EQUAL)문을 우회시켜야 됩니다.  저 부분을 NOP(NO OPERATION)코드를 INSERT시킵니다.

이제 SEARCH FOR 들어가서 ALL referenced string들어가서 저 문구를 찾습니다.

 이후 EDIT해서 FILE를 다른 이름으로 SAVE합니다.
SAVED FILE를 보면 이제 다음과 같은 문구들을 보실 수 있습니다.

이후 저렇게 브레이크 포인터를 걸어줍니다.

저는 hello를 입력해줬습니다. 계속 디버깅 작업을 합니다.
이후 멈추는 지점인 CALL EDX에다가 브레이크 포인터를 걸고 스탭인투(F7)를 진행합니다.
이제 CMP보시면 답이 나옵니다. ECX는 제가 입력한 hello를 하나씩 불러옵니다. 따라서 현재 ecx레지스터에 해당되는 16진수 값을 ascii에 대칭하면 h가 나옵니다. 따라서 43, 52 ......................이것들의 16진수 값들을 ascii에 대칭에서 연결해주면 password가 됩니다.