김씨임돠 2012. 5. 11. 21:52

안녕하세요. 이번 포스팅은 아는 것은 쥐뿔도 없지만 인터넷에 돌아다니는 리버싱 예제를 하나 골라서 풀어보도록 하겠습니다. 이 예제는 제가 어셈블리어를 포스팅한만큼만 공부하셔도 크게 무리없이 푸실 수가 있습니다.


 


Reverse_L01.exe




※ 주의하실 점 : exe 파일은 무슨 파일일지 장담을 못하므로 https://www.virustotal.com/ko/ 에서  의심이 되는 파일이라면 검사를 해보시는게 좋습니다.   


파일을 열어보시면 아래 사진처럼 나오는걸 보실 수 있습니다.










네  영어를 해석해보면  HD를 CD-Rom으로 만들라는군요.  


근데 사실 이 문제를 풀 때  영어 해석은 필요하지 않습니다.



그럼 본격적으로 리버싱을 하기 전에 필요한 프로그램이 있습니다.



바로 올리디버거(ollydbg)인데요. 없으신 분들을 위해 링크 달아드리겠습니다.


odbg110.zip




사용 하기 전 약간의 세팅이 필요한데 그건 올리디버거라 검색만 해도 많이 나오니 문제없이 수행하실수 있을거라 믿습니다.







이 화면은 올리버디거로 위 예제를 실행시킨 화면입니다.   File - Open 으로 열수 있습니다.



본격적으로 분석을 시작해볼까요?




상당히 복잡한것같지만 세 부분으로 나누어서 보시면 쉽게 알아채실 수 있을겁니다.





검은색 줄 친 부분이 나눠진 부분입니다.


각각 메세지 박스를 띄우는 명령어라 쉽게 추측이 가능할겁니다.



그럼 우리는 문제를 풀기 위하여  세번째 부분의 메세지 박스를 띄워야 한다는 목표를 설정할수 있습니다.






제가 회색 줄을 친 부분 보이십니까?  저 명령어는 제가 어셈블리어를 포스팅한 글들을 보신 분이시라면 쉽게 알아채실겁니다.


회색 줄 위의 명령어인 CMP EAX, ESI 를 통해 두 값을 비교하고 그 값이 같다면 0040103d로 점프한다는 내용입니다.


그런데 0040103d를 보니 우리가 원하는 메세지 박스로 점프하는군요?  하지만 EAX와 ESI의 값을 알아내기는 어려우니 JE 명령어를 JMP로 바꾸어 바로 넘어가게 만들어 봅시다.





바꾸고 싶은 부분을 더블 클릭하면 이렇게 화면이 뜨는데 원하는대로 바꿔주시면 됩니다. ^^


바꾸셧으면 F9를 눌러보세요. 바꾼 실행 결과가 나오게 됩니다.










끝났습니다.   리버싱한 결과를 저장하고 싶으면   오른쪽 클릭 -  Copy to executable - All modifications 를 누르고 창이 뜨면 우클릭 - Save file 을 클릭하면 됩니다.






보시면 덧글좀 남겨주세요  포스팅하는데 30분 덧글다는데 1분입니다.