2023. 12. 4. 09:54ㆍ리버싱
이번문제를 통해 리버싱을 더 깊이있게 공부해야겠다는 생각이 들었습니다.
이 파일을 실행시키면 다음같은 화면이 나오는데 여기에다가 저는 HELLO라는 문자열을 그려봤습니다.
그리고 CHECK버튼을 누르면 WRONG라는 문자열이 나옵니다.
이제 OLLYDBG에 파일을 집어넣고 STRING문자열을 검색해봤습니다. 다음에서 WRONG문자열이 보이네요. . GOGO
여기서 WRONG문자열을 출력하는데 어떤 조건에 의해서 WRONG문자열이 출력될테니까 위에 주소로 가보면 4013AA라는 주소를 발견할 수 있습니다. 여기서 위에 CALL한 함수 이후 XOR EDI, EDI를 해주면서 EDI값을 0으로 초기화 시켰고 ECX레지스터의 주소값에 들어있는 하위 8비트 값 AL에 옮김니다. 여기서 EDI값이 0x15F90이 될때까지 비교해주는데 이 과정을 유추해보면 제가 그린 그림과 여기서 그려진 그림을 비교하는 것으로 유추됩니다.
여기서 보면 BITBIT가 있는데 여기 함수 인자값들을 보면 (높이=150)와 (가로=200)가 있습니다. 이부분을 잘 기억해주세요.
그리고 BITBIT함수를 보니 대략적으로 BITMAP형식인 것을 유추할 수 있습니다.
이제 PEVIEW툴을 이용해서 PE구조를 확인하도록 하겠습니다.
여기서 MANIFEST부분을 주목해주세요. 제가 아직 이쪽부분에 대해서 정확히 공부를 안해서 잘은 모르겠습니다. 하지만 이부분하고 제가 그린 STRING값하고 비교하는 것 같습니다.
여기서 첫 주소 - 마지막 주소 하면 0x15F80가 나옵니다. 근데 위에보면 0x15F90하고 비교하는데 왜 실제 값이 0x10차이가 나는지 모르겠네요.........
여하튼 이제 hxd툴을 이용해서 bmp파일을 만들어주도록 하겠습니다.
인터넷에서 bmpformat이라고 치면 header구성에 대해서 자세히 나옵니다. 여기서 가로=200=0xc8 세로=150=0x96이네요. 이제 FF로 시작하는 부분의 처음부터 끝까지 복사해서 HEADER뒤에 붙여넣기하고 BMP형식으로 저장합니다.
그러면 다음과 같은 문자열이 나오네요..
후기 : 여러가지 문제풀면서 감을 익히는 것도 좋지만 이제 조금 더 심도있는 공부가 필요한듯 합니다.
'리버싱' 카테고리의 다른 글
codeengn.com (advance 06) (1) | 2023.12.04 |
---|---|
CodeEngn basic 17(write up) (1) | 2023.11.19 |
Position(reversing.kr) write-up (1) | 2023.11.19 |
reversing.kr CSHOP풀이 (1) | 2023.11.13 |
Reversing.kr ransomeware (0) | 2023.11.13 |