리버스 엔지니어링/치트엔진

치트엔진으로 안티디버깅 우회 해보기 IsDebuggerPrensent -2 (Code Cave)

뿔맨 2018. 9. 27. 05:09
반응형
전에 작성한 IsDebuggerPrenset를 치트엔진을 사용해서 Code Cave 기법으로 우회를 해 보겠습니다.
요새 어셈 스크립트 작성하는게 재미있네요 ..

위 opcode를 보면은 전에 작성한 opcode랑 다르다는 것을 알 수 있습니다.
전에 C코드 솔루션을 C#으로 했더라구요 ...

BP를 설정하면 IsDebuggerPrenset 함수가 탐지하여 " 디버깅 탐지 " 라는 문자열을 출력합니다.

해당 함수를 타깃으로 Code Cave를 해 볼 것입니다.

먼저 어떤 식으로 스크립트를 작성 할 것인지 생각해보자면
  1. 공간을 생성 한 후 IsdebuggerPresent 함수를 불러온다.
  2. eax 값을 초기화 하고
  3. eax 값이 00인지 비교하고 맞으면 원본 코드로 복귀 아니면 무한루프
이런 식으로 작성할 것입니다.

원래 조금 더 간단하게 짤 수 있습니다만, 익숙해지기 위해서 길게 작성 해 보았습니다.
이제 저장하고 체크박스를 클릭 해 주면은

원래 call IsdebuggerPresent 함수가 사라지고 공간을 생성한 곳으로 jmp 시킵니다.
해당 주소를 따라가보면은

아까 작성한 스크립트가 있습니다.

실행해보면은 " 정상 " 으로 출력이 됩니다.

감사합니다.



반응형