Friday, August 2, 2013

Anti-reversing - PEB.Process Heap

 본 블로그는 지식 습득후 저장을 하는 공간입니다.
블로그 내의 게시글을 인터넷에서 악의적으로 사용할 경우 본인에게 책임이 있습니다.

 PEB 구조체 시작지점에서 0x18 만큼 떨어진 지점에는 Process Heap Member의 포인터가 있습니다.
아래에서 보면 0x150000 지점입니다.












여기로 이동해보면 아래와 같습니다.
PEB.Process_Heap 에서 0xC 만큼 떨어진 지점이 Flags, 0x10 만큼 떨어진 지점이 ForceFlags 입니다.
PEB.Process_Heap.Flags 는 평상시에 0x2 값을 가지고 있다가 디버깅당하면 0x50000062 로 변경됩니다.
PEB.Process_Heap.ForceFlags 는 평상시에 0x0 값을 가지고 있다 디버깅당하면 0x40000060 으로 변경됩니다.
PEB.Process_Heap.Flags 와 ForceFlags 를 각각 2와 0으로 setting 하면 우회할 수 있습니다.











추가로
PEB.NtGlobalFlag 가 있는데 PEB 시작주소로부터 0x68 만큼 떨어진 지점에 위치해 있습니다.
아래와 같이 디버깅중일때 보통 0x00000070 으로 set 되어 있습니다.
이값을 0x0 의 값으로 변경해주면 우회할 수 있습니다.
















나머지 Anti-reversing 기법들은 차후에 다루기로 하겠습니다.


No comments:

Post a Comment