티스토리 뷰

Reversing

[Reversing] Inline Code Patch ②

정짱 정뚱띵 2019.07.19 16:18

[Reversing] Inline Code Patch


[Reversing] Inline Code Patch ①


이제 Code Cave를 먼저 거치고 OEP로 가게 될 것입니다. 우선 "리버싱 핵심 원리"를 보시면 총 3가지 방법을 알려줍니다.

①파일의 빈 영역 <= "리버싱 핵심 원리"

②마지막 섹션을 확장 

③새로운 섹션을 추가

위와 같이 3가지를 알려주었습니다. "리버싱 핵심 원리"에서는 첫번째 방법을 사용했습니다.


저는 세번째 새로운 섹션을 만들어 해당 섹션에 Patch Code를 작성하여 만들어 보겠습니다.


1. 새로운 섹션 추가

- 새로운 섹션을 추가하도록 하겠습니다.

- 우선 Nember of Section 기존 4에서 5로 늘려주겠습니다.

[Nember of Sections 수정]


- 새로운 섹션이 추가 되었습니다.


- 이전 게시물을 보시면서 값을 변경하시면 되시겠습니다.

Section Alignment : Virtual Size, RVA, Size of Image

File Alignment : Size of Raw Data, Pointer to Raw Data

- 저는 .ABC라 이름을 주었으며, 아래와 같이 제작했습니다.

[섹션 추가 완료]


2. Patch Code 제작

- "리버싱 핵심 원리"책을 참고하여 만들었습니다.

405000 MOV ECX, C

405005 MOV, ESI, UNPACKME#1.AC.40502D

- 40502D 주소에는 팝업창에 새롭게 작성할 문자를 추가했습니다.

- 저는 "JEONGZZANG!" 문자를 작성했습니다.


40500A MOV EDI, UNPACKME#1.AC.401123

- 401123 주소에는 "You must patch this NAG !!!" 라는 문자가 있습니다.

- 실행 했을때 나온 문자입니다.


40500F REP MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]

- 우선 REP는 ECX 레지스터 만큼 반복이라고만 알고 넘어가면 될꺼같습니다.

- 뒤 MOVS BYTE는 1byte씩 EDI에 ESI의 문자를 복사하라는 것입니다.

- 그렇게 되면 401123에 있는 "You must patch this NAG !!!" 내용에 "JEONGZZANG!"을 덮어씌우는 것입니다.


- 이와 같이 Code Cave에 있는 Patch Code를 실행했습니다.

[Patch Code 실행 완료]


3. 마무리 정리 및 실행


401083 JMP UNPACKME#1.AC_원본.40121E

- 원본 파일을 보게되면 이와 같이 OEP 주소로 바로 가게 되어있습니다.

- 하지만 Code Cave를 거쳐 Patch Code 실행 후 OEP 주소로 가야되기 때문에 해당 부분을 수정을 해주었습니다.

401083 JMP UNPACKME#1.AC.405000

- 해당 부분을 수정에 있어 디버깅을 해보시면 해당 부분은 XOR을 거쳐서 복호화가 된 상태라는 걸 알 수 있습니다.

[JMP 변경]


- XOR 연산 이전에는 EE 91 06 00 00 입니다.

- XOR 연산 이후에는 E9 96 01 00 00 입니다.

- 차이점을 보시게 되면 3byte만 변경이 된걸 알 수 있습니다. 즉, 3byte만 암호화 되었습니다.

- EE, E9는 JMP 명령어를 가르키는 걸 알 수 있습니다.

- 복호화 전 EE, 복호화 후 E9 인걸 확인했습니다.

[복호화 전, 후]


- 계산을 해보게 되면 XOR 7로 암호화가 되었다는걸 알 수 있습니다.

[XOR 연산 계산기]


- 복호화 후 E9 78 3F 00 00 JMP 405000 입니다.

- 해당 부분을 XOR 7을 통해 EE 7F 38 00 00 로 수정해 줍니다.

- EE 7F 38 XOR 7을 통해 복호화가 되면 E9 78 3F 00 00 JMP 405000 을 가르키는 명령어가 될 것입니다.


- 실행을 해보게 되면 아래와 같은 결과가 나옵니다.

[결과]


unpackme#1.aC_완성.exe





댓글
공지사항
«   2019/10   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Total
134,089
Today
13