CodeEngn Basic20 풀이
Wargame | CTF/Reversing

CodeEngn Basic20 풀이

crackme3.key 안의 파일의 데이터가 무엇인지 구하는 문제입니다.

코드는 매우 간단하고 직관적으로 되어있습니다. crackme3.key 파일을열고 그안의 12바이트데이터를 불러옵니다.

파일은 굳이 만들지않고 없을시에 다른곳으로 점프하는걸 막아서 파일이 있는척했습니다. ReadFile함수이후의 분기점에서도 그냥 넘어가게 해두었구요 알고리즘은 직접 한줄씩 트레이싱 해보면 간단하게 알수있습니다.

중요하게봐야할 부분은  주소 401079 부분 부터인데요 여기서 4020F9주소에 12345678과 xor 한값을 넣습니다. 이값은 나중에 eax와 비교해서 크랙성공메세지를 띄우게할 값입니다. 그밑의 40108B부분으로 들어가보겠습니다.

여기서 4020F9주소의 값과 비교할 eax값을 세팅해주는 중요한 부분입니다. 아까 ReadFile할때 값을읽어올 버퍼가 402008 주소로부터 12바이트 만큼이었습니다. 거기서 402016 바이트로부터 4바이트만큼을 eax 에 넣어주는군요!

일단 4020F9 주소의값은 12345591 입니다. 

여기서 eax랑 4020F9의값(12345591)이 같아야 al에 1이 세트되고 스택에 푸시하는데요.  그값이 나중에 밑에 쭉~~ 내려보면

eax값을 스택에서 빼고 비교를해서 al 이 1이면 성공메세지를 띄웁니다. 

 

성공!?? 이 아니라 저기서 40216A의 문자열이 CodeEngn이 되어야 성공입니다.

알고리즘은 직접 트레이싱하시면서보면 쉽습니다. 

어쨌든 안의 데이터 값은 02 2D 27 21 00 28 20 26 ?? ?? ?? ?? ?? 7B 55 34 12 이렇게되야 CodeEngn이 나옵니다

저기 사이의 물음표값은 어떤값이 들어가도 상관없어요 그래서 정답도 여러개가 되는거같네요.

풀이완료!



'Wargame | CTF > Reversing' 카테고리의 다른 글

CodeEngn Advance02 풀이  (0) 2018.03.25
CodeEngn Advance01 풀이  (0) 2018.03.25
CodeEngn Basic19 풀이  (0) 2018.03.22
CodeEngn Basic18 풀이  (0) 2018.03.20
CodeEngn Basic17 풀이  (0) 2018.03.19