Import REC 프로그램을 이용하여 UPX Unpacking

안녕하세요 테라트입니다



오늘은 Import REC 프로그램을 이용하여 패킹된 프로그램을 패킹 해제된 프로그램으로 만드는 작업을 하는 방법을 배워보려고 합니다


실습 프로그램 : CodeEngn Basic RCE 06





※ 기본 개념 잡기 ※


MUP란?

Manual UnPacking의 약어로, 패킹된 파일을 OEP를 직접 찾아서 언패킹하는 작업을 의미한다



OEP란?

정상적인 파일이 시작되는 위치를 뜻한다


Import REC 란?

Import REConstructor으로, 현재 프로그램의 메모리 정보를 가져와서 IAT 재구성을 진행하는 프로그램이다


IAT란?

Import Address Table로, 프로그램이 사용하는 라이브러리와 함수들에 대한 정보를 가지고 있는 테이블을 뜻한다




OEP를 찾는 과정은 생략하고 진행합니다


OEP 찾는 과정이 필요하신 분은 아래 URL을 참고해주세요


URL : 테라트의 CodeEngn 06 풀이


OEP를 찾은 상태에서 'New origin here'을 선택해줍니다


'New origin here' 기능은 어셈블리의 진행을 이곳부터 하도록 변경하는 것을 의미합니다



해당 메뉴를 선택하게 되면 다음과 같이 경고창이 뜹니다!



기존의 주소 범위를 벗어나는데 계속해서 진행하길 원하는지 물어보는 겁니다!


저희는 OEP를 맞게 찾았으니 계속 진행하겠다고 하면 됩니다 ㅎㅎ



'Dump debugged process' 메뉴를 눌러줍니다


이곳에서 프로세스의 덤프를 뜨겠다는 것을 의미합니다



그럼 다음과 같이 표시될텐데


OEP로 추정되는 주소와 'Start Address' 값과 'Modify' 값을 더한 값이 일치해야 합니다


일치하는지 확인한 뒤 밑에 'Rebuild Import' 체크 해제 후 'Dump'를 실행합니다


'Rebuild Import' 는 덤프를 뜨면서 OllyDBg 프로그램에서 Import를 재구성해주는 것을 의미하는데 정확하지 않아서 체크를 해제합니다



새로운 이름으로 저장을 해줍니다!


그 후에 'Import REC' 프로그램을 실행시켜줍니다!


아쉽게도 이 프로그램은 공식 사이트 없이 그냥 떠돌아 다니는 프로그램이라서 ㅠㅠ


URL 대신 파일 다운로드를 걸겠습니다 ㅎ


ImportREC 1.7c.rar


현재 올리디버거에서 확인중인 프로그램을 선택해줘야 합니다


올리디버거를 종료하면 안됩니다 살려둬야 진행할 수 있습니다 ㅎㅎ


저희는 06.exe를 보고있었으니 찾아서 선택해줍니다



OEP 주소를 아까 알아놓은 주소로 변경해줍니다 후에


'AutoSearch'를 눌러줍니다 ㅎ



무언가 찾은거 같다고 'Get Import' 를 눌러보라고 하네요



'Get Imports' 를 누르기 전에 Size 값을 넉넉히 변경해주세요


00010000 입력해도 무방합니다 ㅎ


입력후 'Get Imports' 를 누른면

다음과 같이 파일을 선택하는 창이 표시됩니다



아까 새로 만들어두었던 파일을 고른 후에



'Fix Dump' 를 눌러줍니다 그러면 Output 파일이 자동으로 생기게 됩니다



실행시켜보면 똑같이 잘 됨을 볼 수 있습니다


하지만 원본 파일과 용량 차이가 나는 것이 보이시죠?


패킹이 풀렸다는 증거입니다



설명이 좀 모호한 부분이 있었나요?


댓글 남겨주시면 도와드리겠습니다!


댓글, 0

테라트

Since 2018.07.03 / IT 관련 정보, 일상의 공유를 위한 블로그