Without a Break

문자열 패치, Little Endian 실습 본문

Reversing/윈도우즈보안과악성코드기초

문자열 패치, Little Endian 실습

와븨 2024. 3. 23. 00:31

문자열 패치 실습

 

HelloWorld.cpp를 작성해주고, 디버거에서 실행 파일을 열어준다.

 

 

먼저메인 함수로 들어간다.

 

 

www.reversecore.com --> www.swu.com 로 수정해야하기 때문에, Title 위치에서 더블클릭하면 해당 hex dump 위치를 알 수 있다.

 

 

Hex dump에서 빈 공간에 www.swu.com를 입력해준다.

 

 

문자열은 004030B8부터 입력됐다.

 

 

Title의 주소를 해당 위치로 변경해주고 assemble을 누르면

 

 

www.swu.com으로 제대로 바뀐 것을 확인할 수 있다.

 

 

변경 후 코드를 종료까지 실행하면 위 사진과 같이 www.swu.com으로 잘 변경된 것을 확인할 수있다.

 


Little Endian 실습

실행 파일을 디버거로 열어 F8로 실행하다보면 위 사진과 같이 arg3, arg2, arg1이 주석으로 달린 것이 보인다.

메인함수로 들어가는 포인트임이 예상되므로, breakpoint를 걸어놓고 계속 f8로 실행해보니 종료 함수로 점프된다. 

즉, breakpoint를 걸어놓은 지점이 메인 함수로 이동하는 부분임을 알 수 있다.

 

 

메인함수로 이동하면 abcde를 출력하는 부분이 있다. F8 해당 부분을 실행하면

 

 

위와 같이 abcde가 들어간 것이 보인다.

 

Hex dump를 살펴보면12345678(abcd) 먼저 넣고 12를 나중에 넣은 것을 볼 수 있다.

이 때, 리틀엔디안이기 때문에 78 56 34 12로 거꾸로 저장된다.