신기하고 재미있었던 문제인것 같다.
문제는 다음과 같이 그림을 그릴 수 있는 공간을 준다.
Check 을 눌러보니 특정 그림이 아니면 틀리는 것같다.
항상 처음 하던 일로 디버거로 열어 Wrong이 출력되는 부분을 확인해 보았다.
조금 위를 보면
FindResurceA function과
로딩 하는 function이 존재한다. 따라서 이를 기반으로 찾아보았다.
다음 과 같이
FindResource 함수는
hModule = 0
lpName = 65
lpType = 18
의 값을 가지고 입력한다.
여기서 막혀서 다른 블로그를 조금 참고 하게되었다.
lpName이 65인 것을 가지고 비교할만한 다른 파일을 받지도 않음에도
어떻게 찾을지를 알 수가 없었기 때문이다.
PEview를 통해서보면 rsrc부분에 뭔가가 추가되어있다. 그리고 아까 봤던 65라는 숫자도 보인다.
다음 PE가 그림을 의미하는 것이다.
아까의 분기점에서 위로 조금만 올려보면 GetDIBits 함수가 존재한다. 이를 이용하여 비트맵 형식으로 받아 들이는 것을 직감적으로 알 수 있다. 동일하게 위와 같이 받아들이는 인자들을 살펴보면
Width = 200
Height = 150
bitmap = 24
로 인자를 넘기고 있어서
다음과 같이 bmp파일을 만들어주고
HxD 프로그램의 블록 선택 기능을 이용하여 복사 붙여넣기를 해주면
다음과 같이 답이 뜬다.
여기서 답을 입력해 줬으면 됬는데 나는 이 그림이 프로그램에 적용 되어야 답이 나오는줄 알고 조금 헤맸지만 다시 정신을 차리게 되었다.
'정보보안 > Reversing.Kr' 카테고리의 다른 글
EasyELF[Reversing.Kr] (0) | 2022.08.07 |
---|---|
Position[Reversing.Kr] (0) | 2022.08.07 |
Replace[Reversing.Kr] (0) | 2022.08.01 |
Music Player[Reversing.Kr] (0) | 2022.07.17 |
Easy Keygen[Reversing.Kr] (0) | 2022.07.05 |