CodeEngn Reversing Advance_Level04

프로그램 실행 모습이다.

아무 문자열이나 쓰고 Test를 눌러보았다. 에러 메시지를 띄우고, 확인을 누르면 종료한다.

about을 누르면 뜨는 창이다. 코드를 패치하지 말고 키젠을 만들어보기를 요구한다.

PEiD 결과이다. 특별한 것은 없어보인다.

키를 비교하는 함수가 대놓고 드러나 있어(문자열을 비교하는 함수) CodeEngn을 쳤을 시 어떤 키를 가져야 하는지는 바로 알 수 있다. 문제의 목적은 시리얼 생성 로직의 분석이므로, 바로 로직을 분석해보자.

시리얼 생성 로직은 프로그램 성공, 실패 문장을 출력하는 코드의 위쪽에 있다. signed/unsigned에 신경써야 하나 고민했지만, 비트 수준에서 똑같이 연산 되기에 필요가 없을 것 같다.

프로그램 설명에서 말한 것처럼 매우 간단한 로직이다. LOD 문자열 뒤에 연산으로 얻은 숫자를 붙여 시리얼을 생성한다. 포맷(10진수와 16진수)에 주의하자.

%lu는 부호 없는 10진수, %lX는 부호 없는 16진수 형식 지정자이다.

키젠 프로그램을 만들었다.

입력하면 성공 메시지가 뜬다.


tags: writeup, reversing, pe file, windows, keygen, x86asm