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

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

전에 작성한 IsDebuggerPrenset를 치트엔진을 사용해서 Code Cave 기법으로 우회를 해 보겠습니다. 요새 어셈 스크립트 작성하는게 재미있네요 .. 위 opcode를 보면은 전에 작성한 opcode랑 다르다는 것을 알 수 있습니다. 전에 C코드 솔루션을 C#으로 했더라구요 ... BP를 설정하면 IsDebuggerPrenset 함수가 탐지하여 " 디버깅 탐지 " 라는 문자열을 출력합니다. 해당 함수를 타깃으로 Code Cave를 해 볼 것입니다. 먼저 어떤 식으로 스크립트를 작성 할 것인지 생각해보자면 공간을 생성 한 후 IsdebuggerPresent 함수를 불러온다. eax 값을 초기화 하고 eax 값이 00인지 비교하고 맞으면 원본 코드로 복귀 아니면 무한루프 이런 식으로 작성할 것입..

치트엔진으로 안티디버깅 우회 해보기 - PEB

PEB구조체를 이용해서 안티디버깅을 적용하고 치트엔진으로 우회 하는 실습을 해보겠습니다. PEB는 간단하게 BeingDebugged 값을 체크하는 안티디버깅 기법입니다. 자세한거는 나중에 Windbg를 공부하면서 알아보도록 하겠습니다. 위는 간단한 소스코드 입니다. 디버깅이 탐지 될 때 " 디버깅 탐지 " 를 띄우고, 그 반대로 " 정상 " 을 띄우는 소스코드 입니다. 치트엔진을 켜고 프로세스를 attach 합니다. 현재 디버깅을 안 해서 " 정상 " 이라고 출력 중 입니다. 이번에 추가적으로 툴을 하나 더 실행 시킵니다. " Process Explorer " 라는 좋을 툴입니다. 대표적으로 프로세스 리스트 (Suspend, Resume, Terminate, Dump) 해당 프로세스의 Thread, TC..

치트엔진으로 안티디버깅(IsDebuggerPresent) 우회 해보기

이번에는 치트엔진 툴을 사용하여 안티디버깅(Anti - Debugging) 기법 중 가장 기초적인 IsDebuggerPresent 를 우회 해보겠습니다. 먼저 아래 간단한 소스코드를 컴파일 하겠습니다. IsDebuggerPresent 함수를 무한루프를 돌리는 소스입니다. 디버깅이 탐지가 되면 " 디버깅 탐지 " 메시지를 출력하고 아닐시 " 정상 " 메시지가 출력됩니다. 해당 소스를 컴파일해서 실행시키면 아래와 같이 출력됩니다. 이제 치트엔진을 켜서 해당 프로그램을 attach 시켜줍니다. 왼쪽 상단에 모니터 그림을 클릭하고 Process List 에서 해당 프로그램을 Open 해줍니다. 그리고 Memory View 에서 아무 곳에 BP를 설정 해주면 아래와 같이 " 디버깅 탐지 " 메시지가 출력됩니다. ..

치트엔진으로 Crackme 분석해보기

치트엔진 이라는 툴을 사용하여 Crackme를 분석해보겠습니다. 우선 치트엔진은 주로 게임이나 상용 소프트웨어를 Crack 할 때 많이 쓰이는 것으로 알고있습니다. 허나 이번 포스팅에서는 게임이 아닌 Crackme 를 분석을 해보겠습니다. 아래 그림은 치트엔진 UI 입니다. 기능들이 엄청 많아보입니다. 기능들이 엄청 많아보이는데 저 기능들을 다 쓰는지는 모르겠습니다. 아래 그림은 이번에 분석 할 Crackme 입니다. 패커 여부는 알 수 없다 라고 나와있습니다. Crackme를 실행하면 위와 같이 CD-ROM 이 없다고 합니다. 이제 치트엔진으로 한 번 열어봐서 어떤 식으로 코드가 짜여있는지 보겠습니다. 왼쪽 위의 모니터 모양의 버튼을 클릭 한 후 Process List의 abex' 1st crackme..