codeengn advance 2번 문제다.

흠 문제만 봐선 모르겠다 파일부터 실행해보자.

실행시켜 보니 비밀번호를 맞추면 되는 것 같다. 

패킹은 따로 안되있어 그냥 열어봤다.

먼저 키입력하는 문자열을 찾아 주변 함수에 BP 걸고 F8로 하나씩 실행하면서 흐름을 파악해봤다.

그랬더니 별다른 분기점은 없고 CALL EDX라는 함수에서 프로그램이 종료된다.

함수 내부로 들어가봤다.

들어가보니 저 많은 JNZ 구문을 통해 프로그램이 종료되는 함수가 호출된다.

크랙하지 않았을때 흐름이 점프가 이루어져 프로그램 종료함수위치로 갔기 때문에 저 점프문들을 모두 통과하면 정상적으로 해결 될 것 같다. 그렇다면 CMP문에서 비교하는 ECX의 값이 중요한데 처음 비교 하는 ECX값을 보니 내가입력한 값의 첫번째 byte를 16진수로 반환한 값이었다.

그렇게 첫번째 점프문 안으로 들어오면 MOVSX ECX,BYTE PTR DS:[EAX+1]을 통해 한 바이트가 더 증가되 2번째, 3번째 ,4번째 바이트 순서로 비교하게 된다. 그렇다면 이제 해야할일은 간단하다. 비교값에 맞게 키 값을 구해봤다.

마지막 0 값은 문자열을 입력했을때 처리되는 null값으로 따로 처리해주지 않아도 될 것 같다.

한번 입력을 해봤다.

성공! 아직 초반이라 문제가 쉬운 것 같다. 


'Wargame > CodeEngn' 카테고리의 다른 글

code engn advance 4번  (0) 2018.02.08
code engn advance 3번  (0) 2018.02.08
code engn advance 1번  (0) 2018.02.04
code engn basic 20번  (0) 2018.02.04
code engn basic 19번  (0) 2018.02.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,