정보보안/Reversing.Kr

Replace[Reversing.Kr]

b1ackhand 2022. 8. 1. 12:47

프로그램을 실행하면 다음과 같다.

숫자를 입력하고 check 버튼을 눌렀을때

프로그램이 종료되어 디버거로 열어보았다.

 

string중 check나 wrong을 출력하는 부분을 검색하여서 해당장소로 간 후 bp를 걸었다.

 

숫자를 입력하면서 프로그램 돌아가는것을 조사 해 보았다.

 

숫자 입력된 것을 검색해보니 따로 나오지 않는것으로 보아

입력받은 숫자에 처리를 하는것 같다.

 

 

 

프로그램이 실행되다보면 해당 부분에서 오류를 내뱉는 것을 볼 수 있다.

해당 부분은 eax에 해당하는 메모리에 접근하는데

 

이 eax 해당 메모리는 입력받은 값에 따라 값이 달라지는걸 유추해 낼 수 있다.

 

이 eax값은 입력값에서 1을 더하고 후에 뭔가 처리를 해주는데 이를 알아보기위해

FFFFFF를 넣고(1을 더하면 0)

진행해보니

 

다음과같이 601605CA가 나온다는 사실을 알았다.

 

즉, 이 프로그램은

입력값 + 1 + 601605CA에 해당하는 주소에 0x90(NOP)을 처리하는것이다.

 

다시 프로그램을 보다보면 jmp를 두번하는데 그중 첫번째 jmp가

이 NOP을 생성하는 위치로 가져오고 두번째 jmp를 없애면 

correct분기점으로 도달하는것을 알 수 있다.

따라서 두번째 jmp의 위치인 0x00401071을 NOP으로 만들 수 있는 값을 조사하면

 

A02A0AA6값이 나오고 이를 10진수로 변환하면 값이 나온다.

'정보보안 > Reversing.Kr' 카테고리의 다른 글

EasyELF[Reversing.Kr]  (0) 2022.08.07
Position[Reversing.Kr]  (0) 2022.08.07
ImagePrc[Reversing.Kr]  (0) 2022.08.03
Music Player[Reversing.Kr]  (0) 2022.07.17
Easy Keygen[Reversing.Kr]  (0) 2022.07.05