하지만 이 난독화 페이지도 다른 난독화 방법과 마찬가지로 XOR 연산을 응용한 것입니다. 특히 저의 주의를 이끈 것은 XOR 연산시 사용하는 Key를 생성하는 방법입니다.
그 방법을 소개하기 위해 이 글을 씁니다.
![]() |
| [그림 1] XOR 키 생성 함수 |
[그림 1]은 Gong Da Exploit Pack에서 XOR 연산시 사용하는 Key를 생성하는 함수와 그 함수를 실행하는 코드입니다.
이 함수는 Exception을 이용하여 동작하며 XOR 연산시 사용하는 Key를 생성합니다.
이 동작 방식이 흥미로운데 좀 더 자세히 설명을 해보면, SkKrisv2 함수가 시작되면 제일 먼저 할당 안된 변수인 ATAGgl6을 사용하려고 하여 Exception이 발생합니다.
따라서 Exception을 처리하게 되며, 이 때 ATAGgI6 변수에는 상수 값 0을 할당합니다. 그리고 나서 SkKrisv2 함수가 한번 더 실행됩니다.
한번 더 실행된 함수에서는 상수 값 0이 할당된 ATAGgl6 변수를 사용하여 XOR 연산시 사용하는 Key를 생성합니다.
생성된 Key로 비트 연산을 한 다음에 한번 더 Key를 생성합니다. 이렇게 두 번 연산된 Key를 이용하여 Gong Da Exploit Pack에서는 난독화를 합니다.
따라서 Gong Da Exploit Pack에 의해 생성된 난독화 페이지를 해제할 때 XOR 연산시 사용하는 Key를 상수 값 0으로 할당한 후 연산한 다음 또 한번 연산을 하지 않는다면 올바른 XOR 연산 Key를 구할 수 없을 것입니다.
이것보다 좀 더 진보된 방법으로 XOR 연산시 사용하는 Key를 구하는 샘플 발견하시면 연락부탁드립니다. 이 글을 읽어주셔서 감사합니다.

댓글 없음:
댓글 쓰기