히공

reversing.kr - x64 Lotto 본문

reverse engineering/reversing.kr

reversing.kr - x64 Lotto

heegong 2020. 12. 5. 22:01
728x90

로또 문제를 풀어보겠습니다.

 

 

 

 

 

 

 

실행화면 입니다.

 

 

 

 

 

 

 

메인함수입니다.

64비트 문제여서 그런지 wprintf, wscanf_s 등 w붙은 함수를 사용하네요.

 

 

 

 

 

 

 

 

x64dbg의 주석기능을 이용해서 코드의 설명을 넣었습니다.

 

 

 

 

 

 

 

wscanf_s 부분에 bp를 걸고 f9를 입력해서 숫자를 입력해보겠습니다.

 

 

 

 

 

1 2 3 4 5 6을 입력했습니다.

 

 

 

 

 

 

그 후 system("cls")로 창을 이쁘게 정리해주고, sleep(0x1f4)를 해서 조금 쉬게 해줍니다.

 

 

 

 

 

 

 

여기서 랜덤으로 값을 가져오고, 그 값을 암호화 합니다.

그 후 [rsp+rbx*4+0x54] 부분에 순서대로 값을 저장합니다. 

 

이것을 총 6번 반복합니다.

 

 

 

 

그 후 생긴 배열입니다.

 

 

 

 

 

 

 

 

이런 루틴이 있습니다. 총 6번 for문을 돌립니다.

 

 

 

 

 

비교 루틴이 보입니다.

eax값은 1이고, [rsp+rcx+0x58]의 값은 0x10 입니다.

 

eax는 제가 wscanf_s로 입력한 것이 들어가고, [rsp+rcx+0x58]은 아까 총 6번 for문 돌리고 생긴 배열에서 값이 들어갑니다.

 

 

 

 

생각을 해보면 제가 진짜 로또를 당첨할 수 있는 운이 없다면 입력만 해서 문제를 풀 수는 없습니다.

제가 입력 후 로또 번호를 만들기 때문입니다. (랜덤으로)

 

그러면 저기 jne를 nop으로 바꿔주어 아무 역할도 하지 않게 한다면 문제를 풀 수 있습니다.

 

 

 

 

 

 

 

 

 

 

변경했습니다.  (이제 여기 bp는 제거해주세요.)

 

 

 

그리고

 

 

 

함수를 끝내는 부분으로 와서 bp를 걸어주세요.  (안걸고 f9로 실행하면 프로그램이 바로 꺼집니다.)

 

 

 

 

 

 

 

 

 

간단한 패치로 풀 수 있는 문제였습니다.

 

 

 

정답 : from_GHL2_-_!

'reverse engineering > reversing.kr' 카테고리의 다른 글

reversing.kr - Position  (0) 2020.12.22
reversing.kr - ImagePrc  (0) 2020.12.10
reversing.kr - Ransomeware  (6) 2020.11.22
reversing.kr - Easy ELF  (0) 2020.11.12
reversing.kr - Easy Keygen  (0) 2020.09.14
Comments