본문 바로가기

Wargame Write-Up/Reversing.kr16

[Reversing.kr] (Reversing) Direct3D FPS 풀이 문제파일 다운 후 압축해제하면 FPS.exe 가 나온다. 고구마같은놈들이있다. 잡아보면 뭐가 나올것같다. 참고로 닿으면 죽는다. 다잡았는데, 여기안에 나머지가 있을거같다. Game Clear 문자열을 사용하는것이다. 다 잡았을때 Game Clear 과 수상한 문자열를 출력해준다. 이것은 FLAG 라는걸 추측해볼수있고, 하드웨어 BP 를 걸어 이 값에 접근하는 함수를 찾아보자. 고구마들을 학살하다보면, 이 함수에서 고구마를 죽였을때 문자열을 참조한다. 0xEB3440 함수로 번호를 가져오고, 210을 곱한다. EB9184 에서 번호에 210을 곱한값을 참조해 문자열의 번호에 해당하는값과 XOR 연산을 한다. EB9184 배열값을 가져와 배열[i*4] ^ 문자열[i] 연산을하면 FLAG 가 복호화될것이다. .. 2020. 4. 25.
[Reversing.kr] (Reversing] Position 풀이 키젠문제이다. 시리얼이 76876-77776 일때의 name 을 찾으라한다. 총 4글자로, 마지막글자는 p 이고, 여러값이 나올수있단다 입력폼이있다. default 문자열을 확인해두자. MFC 32bit EXE 파일이다. 올리디버거로 분석해야겠다. 글자를 입력했을때 반응하는함수이다. 0x01191740 함수에서 리턴한값으로 Correct인지 Wrong 인지 텍스트를 설정한다. [ 0x01191740 ] 0119178E |. 50 PUSH EAX ; /Arg1 = 4 0119178F |. 81C1 30010000 ADD ECX,130 ; | 01191795 |. C645 FC 02 MOV BYTE PTR SS:[EBP-4],2 ; | 01191799 |. FF15 80321901 CALL DWORD PTR.. 2020. 3. 25.
[Reversing.kr] (Reversing] ImagePrc 풀이 프로그램을 실행하면 그림을 그리고 검사를 받는다. Wrong! 탈락한것같다. exe32 파일이니, 올리디버거로 열어보자 Wrong을 사용하는 주소로 가보자 일단 GetDIBits 로 비트맵이미지를 가져온다. 내가그린그림이 될것같다. 그리고 FindResourceA, LoadResource 로 비교할 파일을 가져온다. 비트하나씩 비교해서, 틀리면 바로 Wrong 을 출력하는것같다. 그렇다면, 다운받을때 딸려나온파일은 없는데 어떤파일을 가져오는걸까? PE Viewer 로 열어봤는데, rsrc 섹션에, 리소스데이터가있다. [ IMAGE_RESOURCE_DATA_ENTRY ] 요기에 사이즈와, 시작주소가있다. 비트맵이미지파일이다. 밑으로 쭉 내려보니까 중간에 00 도 있다는걸 확인했다. 정상적인 비트맵이미지파일.. 2020. 3. 25.
[Reversing.kr] (Reversing) Replace 풀이 압축파일을풀고 실행하면, 숫자만 입력할 수 있다. 근데 입력하면 종료된다. EXE32이니까 올리로 분석해보자 입력값 갖고와서 4084D0 에 넣는다. 그리고 0x40466F 호출후 0x404690 으로점프 [ 0x40466F ] 0x40467A 호출, 4084D0 += 0x601605C7 0x404689 호출, 4084D0 + 1 RETN, 408xD0 + 2 [ 0x40467A ] 4084D0 + 3, RETN 후 다시 4084D0 + 4 [ 0x404690 ] 4084D0 ( 0x601605C7 + 4 + 입력값 ) 을 eax 에 옮기고, 0x404689 호출 ( 4084D0 + 1 ) 그리고 0x40466F 함수에 C39000C6 덮어씀 ↓ 함수가 변했다. eax 값에 90 ( NOP ) 을 넣어버.. 2020. 3. 19.