Error Code
Код ошибки (указан в скобках) |
Что значит | Как обойти |
---|---|---|
Data is updated 27.o8.2o24 | ||
1000 | Выньте резервную копию диска | Обмануть проверку геометрии диска секурома, запатчив 3 (три) раза код вида:
FLD QWORD PTR DS:[11EDC78] FSUB QWORD PTR DS:[11EDC80] FMUL QWORD PTR DS:[14AC050] FCOMP QWORD PTR DS:[1483098] FSTSW AX TEST AH,05 (0, 1, 1) |
2000 | Дебаггер палится через PEB(IsDebuggerPresent) | Всегда сбрасывать флаг BeingDebugged |
2001 | GetTickCount возвращает всегда ноль. | Суть схожа с кодом ошибки 8007. Некоторые плаги или нубы, скрывающие отладчик, хукают функцию GetTickCount, заставляя ее возвращать всегда ноль (например, типичной банальной припиской XOR EAX, EAX, в конце). Посему необходимо отключать данную фитчу и не трогать GetTickCount вообще, ибо сабж не использует антиотладочные приемы, основанные на подсчете времени исполнения кода(RDTSC, GetTickCount и тд). |
3000 | Дебаггер палится через аппаратные точки останова(Hardware Breakpoints). | Патчить код из SEH-обработчика на инструкциях UD2 или ставить аппаратки после проверки (модуль проверки аппараток идет 2 раза в начале и 2 раза после успешной проверки диска) |
5000 | Дебаггер/хакерская тузла(в 95% — Process Monitor) палится через FindWindow. | Патчить FindWindow и возвращать всегда минус адын или менять название в главном окне твоей хакерской тузлы, которую разрабы уже занесли в черный список. |
5001 | Дебаггер/хакерская тузла(в 95% — SoftIce) палится через CreateFile. | Патчить CreateFile и возвращать всегда минус адын или найти кулхакеское расширение для софтайса. |
5002 | Дебаггер/хакерская тузла(Process Monitor) палится через FindWindowEx | Патчить FindWindowEx и возвращать всегда минус адын или менять название в главном окне твоей хакерской тузлы, которую разрабы уже занесли в черный список. |
6000 | Программные точки останова в начале ВыньАПИ | Не надо ставить INT3 на первой/второй инструкции |
6005 | Аналогично 13001, с той лишь разницей, что для секции кода (после окончательной распаковки, перед прыжком на OEP) и другим алгоритмом(CRC32?). | Не надо ставить INT3 в проверяемых местах. Для остальных пряморуких-ставим аппаратную точку останова по чтению/записи на проверяемый участок, выскакиваем на алгоритме подсчета, и сразу после RET попадаем на условие срабатывания типа:
MOV ECX,DWORD PTR DS:[EDI+ECX+0x13A] CMP EAX,ECX |
8002 | Дебаггер виден через CheckRemoteDebuggerPresent (шо в NTDLL). | Патчить CheckRemoteDebuggerPresent, возвращая ноль (поправь меня анон, если минус адын). |
8011 | Дебаггер палится по ZwQueryInformationProcess (шо в NTDLL), аргумент ProcessInfoClass = 7 | Запатчить ZwQueryInformationProcess. Вернуть любую хуиту, кроме нуля. |
8019 | Дебаггер палится по ZwQueryInformationProcess (шо в NTDLL), аргумент ProcessInfoClass = (0x1F) | Запатчить ZwQueryInformationProcess. Вернуть любую хуиту, кроме нуля. |
9000 | Отсутствует файл dfe или dfa, которые используются для расшифровки данных в data файлах защищаемой игрушки. Во всем виноват SecuROM Data File Activation . | Достать файлы с интернета. |
10000 | Дебаггер палится по имени процесса-родителя. | Переименовать ollydbg.exe в cracklab.exe и т. д. Данным недоразумением, например, не страдает SND Olly. |
13000 | Нарушена целостность защищаемого .exe файла | SecuROM открывает сам себя(.exe файл) через WinAPI CreateFile, и методично считает контрольную сумму в секциях, считыавя байты ReadFile. Обломать это можно двумя способами: 1) Самый боянистый, который используют еще со времен StarForce 3.x, когда protect.dll надо было нафаршировать своим исполняемым кодом. Копируется оригинальный файл filename.exe и сразу переименовывается в какой нибудь filename_original.exe. В filename.exe вставляют перехватчик, который кидает хук на CreateFile(что в kernel32) и при попытке защиты открыть filename.exe , делает редирект на filename_original.exe 2) Чисто секуромовский. После CloseHandle открытого filename.exe , правится первая попавшайся инструкция: POPFD... CMP EAX, 1 (0 - файл цел, все ок; 1 - файл поврежден; 2 - проверка не пройдена) |
13001 | Нарушена целостность PE - заголовка файла. | В подавляеющем большинстве случаев, ошибка возникает при попытке добавить в таблицу импорта новые фукнции, например через LordPE™ или PeTools™. SecuROM имеет запасной оригинальный PE - хидер, который сравнивается через XOR с шагом, в 4 байта, с Вашим пропатченным:
XOR ECX,DWORD PTR DS:[EDX] NOT EAX XOR ECX,EDX CMP EAX,ECX MOV EAX,EDX |
Целая строка: Conflict with Emulation Software detected. |
Кривое эмулирование торможения диска этим Вашим даемон тулсом. Фейл при сравнении скорости кругляшка. | Такая нездоровая херь характерна для многоядерных процессоров. Если не помогло ручное назначение одного ядра target-процессу в таскманагере, лечится в отладчике:
Нужна найти DeviceIoControl с аргументом IoControlCode = IOCTRL_DISK_PERFOMANCE(0x70020). Обычно это отдельная функция находится цикле и заводится в новом потоке, при активной проверке геометрии. В конце цикла что-то типа: FILD QWORD PTR SS:[LOCAL.9] INC DWORD PTR SS:[ARG.1] FILD QWORD PTR DS:[12D1E80] FDIVP ST(1),ST FSTP QWORD PTR DS:[EDI-0xC]Короче, DeviceIoControl должна возвратить в EAX ноль. Секуром понимает, что проверить скорость нельзя и пропускает модуль. Epic win! |
Error Code (указан в скобках) |
Что значит | Как обойти |
---|---|---|
Data is updated 27.o8.2o24 | ||
1000 | Выньте резервную копию диска | Обмануть проверку геометрии диска секурома, запатчив 3 (три) раза код вида:
FLD QWORD PTR DS:[11EDC78] FSUB QWORD PTR DS:[11EDC80] FMUL QWORD PTR DS:[14AC050] FCOMP QWORD PTR DS:[1483098] FSTSW AX TEST AH,05 (0, 1, 1) |
2000 | Дебаггер палится через PEB(IsDebuggerPresent) | Всегда сбрасывать флаг BeingDebugged |
2001 | GetTickCount возвращает всегда ноль. | Суть схожа с кодом ошибки 8007. Некоторые плаги или нубы, скрывающие отладчик, хукают функцию GetTickCount, заставляя ее возвращать всегда ноль (например, типичной банальной припиской XOR EAX, EAX, в конце). Посему необходимо отключать данную фитчу и не трогать GetTickCount вообще, ибо сабж не использует антиотладочные приемы, основанные на подсчете времени исполнения кода(RDTSC, GetTickCount и тд). |
3000 | Дебаггер палится через аппаратные точки останова(Hardware Breakpoints). | Патчить код из SEH-обработчика на инструкциях UD2 или ставить аппаратки после проверки (модуль проверки аппараток идет 2 раза в начале и 2 раза после успешной проверки диска) |
5000 | Дебаггер/хакерская тузла(в 95% — Process Monitor) палится через FindWindow. | Патчить FindWindow и возвращать всегда минус адын или менять название в главном окне твоей хакерской тузлы, которую разрабы уже занесли в черный список. |
5001 | Дебаггер/хакерская тузла(в 95% — SoftIce) палится через CreateFile. | Патчить CreateFile и возвращать всегда минус адын или найти кулхакеское расширение для софтайса. |
5002 | Дебаггер/хакерская тузла(Process Monitor) палится через FindWindowEx | Патчить FindWindowEx и возвращать всегда минус адын или менять название в главном окне твоей хакерской тузлы, которую разрабы уже занесли в черный список. |
6000 | Программные точки останова в начале ВыньАПИ | Не надо ставить INT3 на первой/второй инструкции |
6005 | Аналогично 13001, с той лишь разницей, что для секции кода (после окончательной распаковки, перед прыжком на OEP) и другим алгоритмом(CRC32?). | Не надо ставить INT3 в проверяемых местах. Для остальных пряморуких-ставим аппаратную точку останова по чтению/записи на проверяемый участок, выскакиваем на алгоритме подсчета, и сразу после RET попадаем на условие срабатывания типа:
MOV ECX,DWORD PTR DS:[EDI+ECX+0x13A] CMP EAX,ECX |
8002 | Дебаггер виден через CheckRemoteDebuggerPresent (шо в NTDLL). | Патчить CheckRemoteDebuggerPresent, возвращая ноль (поправь меня анон, если минус адын). |
8011 | Дебаггер палится по ZwQueryInformationProcess (шо в NTDLL), аргумент ProcessInfoClass = 7 | Запатчить ZwQueryInformationProcess. Вернуть любую хуиту, кроме нуля. |
8019 | Дебаггер палится по ZwQueryInformationProcess (шо в NTDLL), аргумент ProcessInfoClass = (0x1F) | Запатчить ZwQueryInformationProcess. Вернуть любую хуиту, кроме нуля. |
9000 | Отсутствует файл dfe или dfa, которые используются для расшифровки данных в data файлах защищаемой игрушки. Во всем виноват SecuROM Data File Activation . | Достать файлы с интернета. |
10000 | Дебаггер палится по имени процесса-родителя. | Переименовать ollydbg.exe в cracklab.exe и т. д. Данным недоразумением, например, не страдает SND Olly. |
13000 | Нарушена целостность защищаемого .exe файла | SecuROM открывает сам себя(.exe файл) через WinAPI CreateFile, и методично считает контрольную сумму в секциях, считыавя байты ReadFile. Обломать это можно двумя способами: 1) Самый боянистый, который используют еще со времен StarForce 3.x, когда protect.dll надо было нафаршировать своим исполняемым кодом. Копируется оригинальный файл filename.exe и сразу переименовывается в какой нибудь filename_original.exe. В filename.exe вставляют перехватчик, который кидает хук на CreateFile(что в kernel32) и при попытке защиты открыть filename.exe , делает редирект на filename_original.exe 2) Чисто секуромовский. После CloseHandle открытого filename.exe , правится первая попавшайся инструкция: POPFD... CMP EAX, 1 (0 - файл цел, все ок; 1 - файл поврежден; 2 - проверка не пройдена) |
13001 | Нарушена целостность PE - заголовка файла. | В подавляеющем большинстве случаев, ошибка возникает при попытке добавить в таблицу импорта новые фукнции, например через LordPE™ или PeTools™. SecuROM имеет запасной оригинальный PE - хидер, который сравнивается через XOR с шагом, в 4 байта, с Вашим пропатченным:
XOR ECX,DWORD PTR DS:[EDX] NOT EAX XOR ECX,EDX CMP EAX,ECX MOV EAX,EDX |
Целая строка: Conflict with Emulation Software detected. |
Кривое эмулирование торможения диска этим Вашим даемон тулсом. Фейл при сравнении скорости кругляшка. | Такая нездоровая херь характерна для многоядерных процессоров. Если не помогло ручное назначение одного ядра target-процессу в таскманагере, лечится в отладчике:
Нужна найти DeviceIoControl с аргументом IoControlCode = IOCTRL_DISK_PERFOMANCE(0x70020). Обычно это отдельная функция находится цикле и заводится в новом потоке, при активной проверке геометрии. В конце цикла что-то типа: FILD QWORD PTR SS:[LOCAL.9] INC DWORD PTR SS:[ARG.1] FILD QWORD PTR DS:[12D1E80] FDIVP ST(1),ST FSTP QWORD PTR DS:[EDI-0xC]Короче, DeviceIoControl должна возвратить в EAX ноль. Секуром понимает, что проверить скорость нельзя и пропускает модуль. Epic win! |