블로그 이미지
ludwings

카테고리

분류 전체보기 (130)
WIN API (22)
워게임 (61)
만든것 (2)
메모 (37)
Total18,086
Today0
Yesterday3

다른분들 한거보니까 원본을 통째로 다른 섹션에 함호화해서 넣어 두고 실행할때 복호화하면서 꺼내는거 같다... 그럼일단 섹션 합치는거랑 섹션 추가 하는거를 한번 해보자~

 

1. 섹션 추가

섹션을 추가하기 위해서 먼저 NT HEADER 에서 Number of Sections 를 늘려줘야 겠고, Section Header 뒤에 추가하고자하는 Section Header를 정의해주고, Section의 내용을 추가해주면 되겠다.

 

hello_ludwings에 .ludwig 를 추가해 보겠다.

 

number of section을 5에서 6으로 수정했다.

 

 

섹션 헤더를 추가한 모습

1. name 8byte

2. virtual size 100으로 했다 메모리에서 section의 크기

3. RVA( Virtual Address ) 메모리에서의 시작 위치인데 OPTIONAL HEADER의 Section Alignment 가 0x1000이니 이전 섹션에서 0x1000만큼 더해준다 (물론 이전 섹션의 Size가 0x1000을 넘어가면 0x2000을 더해줘야한다)

4. size of raw data

5. pointer to raw data 위 2개와 같은데 파일에서다.

 

6. 그리고 그냥 뒤에 쓸데없는 내용을 0x200 byte를 추가 해준다 (size of raw data 를0x200으로 줫다)

 

그리고 파일을 peview로 확인ㅇ하면 섹션이 정상적으로 추가된걸 확인할수 있는데 이거 실행될줄 알고 실행해보니까 실ㄹ행이안되!!! 왜!!!! 왜안돼!!! 했는데 알고보니까

 

섹션이 추가되면서 파일이나 메모리에서의 크기가 변했으니 sizeof Image 값도 변경해 줘야겠다..  이 size of image 값은 마지막 섹션의 RVA 값 + Vitural Size 이다. 아까 Virtual Size를 0x100으로주고 RVA를 0x6000으로 줬으니까 Size of Image는 0x6100으로 수정하면 되겠ㅅ다.

 

 

이렇게 수정하고 실행하니까 실행이 잘된다!

 

추가끝

합치는거 해보는데 자꾸 블루스크린이 뜬다.... 해결하고 다시정리해서 올리겠다.

 

2. 이제 하나로 합치는 연습

 

 

이렇게 되어있는데 .text .rdata .data를 .text에 다 넣어 보겠다.

 

1. 마찬가지로 number of sections를 수정하고

 

2. section header 에서 섹션의 위치는 바꿀 필요없고 섹션의 크기를 변경해줘야한다. 그리고 .rdata와 .data의 내용을 .text 뒤에 모두 붙이고 헤더내용을 모두 지워준다. 그러면서 .text의 시작위치가 앞으로 당겨졌으니까 중간에 byte를 추가하여 section 시작위치가 file alignment에 맞게 수정해준다.

-->

( 중간의 섹션들이 없어지면서 뒤쪽의 섹션들 또한 앞으로 당겨졌기 때문에

중간에 있는 섹션들의 메모리상의 위치와, 파일에서의 위치를 수정해줘야한다. 수정할때는 File alignment와 memory alignment를 참조하면 된다. 이건 나중에)

 

 

 

 

이사진은 text 내용 뒤에 rdata와 data의 내용들을 붙여 넣은 것인데 앞에서 말햇듯이 text 바로뒤의 섹션 .rsrc가 file alignment에 맞게 있도록 해야한다.

여기서 보면 실제 rsrc 의 시작위치가 0x1400 로 변경되었는데 원본의 section header 에서의 pointer to raw data( 파일에서의 섹션 시작위치) 는 0x1600으로 보이니까 수정해주자 크기는 똑같다. ( 여기서 실수한게 .text의 크기도 0x0970가이 아닌 0x09b0 ,  16이아니라 14 / 18이 아니라 16 이다 ㅋㅋ 잘못저금 ) 

추가로 .text 섹션의 크기도 수정ㅎ ㅐ줘야겟지.. 시작 위치가 0x400 이고 끝나는위치가 0x db0  이니까  크기는 0x 9b0이다

 

 

저장하고 peview로 확인하면 저렇게 나오는데 차이점은 IMAGE_RESOURCE _DIRECTORY와 .rdata의 IAT 등이 표시되지 않는 건데 이 값은 또 수정해 줘야한다.

 

 

 

 실행은 역시 안된다.

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
thisislegal.com application 1,2,3  (0) 2013.10.31
B1ind3r Reversing 2, 3  (2) 2013.10.24
canyouhack.it crack 1, 2  (0) 2013.10.23
Posted by ludwings

댓글을 달아 주세요

  1. 2014.01.10 15:44 신고 QBeom  댓글주소  수정/삭제  댓글쓰기

    역시나잼ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

최근에 달린 댓글

최근에 받은 트랙백

글 보관함