Проблема в следующем, под NT+ протектор не стопорится на EP в OllyDbg, под win98 всё нормально. Поступило предложение что это связано с секцией tls, может кто-нибудь может пролить свет на эти хитрости?
Для TLS можешь ещё задействовать опцию [Break on debug string] Если включить игнорирование всех exception, кроме single-step, то можно выловить установки TF Через Set Condition и Trace\Animate into можно выловить RDTSC А ты что, собрался ломать? Там этих фич хватает, лучше отключи все exception и приатачся к уже запущеной проге, потом только откроешь main поток в CPU, один раз нажмешь F7, потом Ctrl+F8 и F12 (включается режим бога %) и можешь ставить бряки (иногда будет вылетать, но трейсить можно), у меня голого энтузиазма хватило ровно на два дня Ж) Я так понимаю там нужно разобратся с HFE? т.е. какие параметры ему и для чего надо, жаль по нему на русском я чет ничего не нашел
Спасибо. Нужно мне про tls где-то прочитать поподробнее Хотел как-то проверить запускаемость под Olly, а также антиотладочные трюки посмотреть, как я понимаю это был первый трюк %)
Про tls все есть в доках http://wasm.ru/docs/2/pe_docs.zip А вот как сделать, чтобы он не определял Олю, как только ее запустишь - это вопрос
Ольку надо пропатчить, чтобы регистрировала класс окна не OLLYDBG, тогда под ней нормально запускается
Отрывок из третьих упаковщиков: Есть еще один трюк, о котором нам хотелось бы рассказать. Во второй части упаковщиков упоминалось о tls-секции в PE-файле. Так вот, в [8] предложено создавать массив указателей на функции в tls-секции dll. Благодаря следующей цепочке в DLL-loader’e – ntdll.dll: Код (Text): LdrpInitializeProcess -> LdrpRunInitializeRoutines -> LdrpCallTlsInitializers -> LdrpCallInitRoutine возможен вызов этих функций ДО передачи управления отладчику. Т.е. появляется неконтролируемый код, который может делать все, что заблагорассудится. Например, проверять IsDebuggerPresent в самом наивном варианте. Пример такого файла лежит в директории codeflow\testers\tls\compileable. Оригинальный исходник можно найти в [8] (MASM). В нашем примере убраны макросы оптимизации импорта и поддержка dll.. Основные моменты просты: PUBLIC _tls_used ;это имя обязано присутствовать и должно быть объявлено как PUBLIC _tls_used TLS_DIRECTORY <_tls_start, _tls_end, _tls_index, __xl_a, 0, ?> ;__xl_a - это просто массив указателей на код, который и будет вызываться лоадером Поэтому отладчик должен учитывать эти моменты – т.е., как минимум, анализировать TLS-директорию и предупреждать пользователя, если обнаружены подозрительные элементы. Код (Text): // codeflow.сpp #ifdef TRACE_TLS_INITIALIZERS CatchTLSCallbacks(pmi); /* pmi объявлен как PMODULE_INFORMATION –> codeflow.h – служебная структура, хранящая информацию о загруженных модулях; CatchTLSCallbacks анализирует TLS-директорию на предмет callbacks */ #endif
Вот очень сокращенный лог из олли, это до EP Код (Text): New process with ID 0000031C created 0051089D Main thread with ID 000001A0 created 77FA14E3 Debug string: LDR: PID: 0x31c started - '"C:\temp\EXECryptorCrackMe.exe"' 77FA14E3 Debug string: LDR: NEW PROCESS 77FA14E3 Debug string: LDR: Snapping imports for EXECryptorCrackMe.exe from kernel32.dll 77FA14E3 Debug string: LDR: Snapping imports for EXECryptorCrackMe.exe from user32.dll 77FA14E3 Debug string: LDR: Tls Found in EXECryptorCrackMe.exe at 50fa3c 77FA14E3 Debug string: LDR: TlsVector 132660 Index 0 = 132660 copied from 50fa54 to 132670 77FA144B System startup breakpoint 77FA14E3 Debug string: LDR: Real INIT LIST 77FA14E3 Debug string: C:\WINNT\system32\kernel32.dll init routine 793ace51 77FA14E3 Debug string: C:\WINNT\system32\user32.dll init routine 77e311c5 77FA14E3 Debug string: LDR: Tls Callbacks Found. Imagebase 400000 Tls 50fa3c CallBacks 50fa68 77FA14E3 Debug string: LDR: Calling Tls Callback Imagebase 400000 Function 51049c 00510271 Exception C000001E (INVALID LOCK SEQUENCE) 0050FF75 Single step event at EXECrypt.0050FF75 00510B29 INT3 command at EXECrypt.00510B29 77FA14E3 Debug string: NAME - LoadLibraryA 77FA14E3 Debug string: NAME - GetProcAddress 77FA14E3 Debug string: LDR: Calling Tls Callback Imagebase 400000 Function 4762ef 00000026 Access violation when executing [00000026]
bogrus Вобще-то пропатчена, это у тебя просто крякмис устаревший, я запускал сам протектор, было это неделю назад тогда же он и был скачан, т.е. уже нового образца. А вот против OutputDebugString нужно код в плагин дописать, а то меня уже и арма этим эксплоитом достала. volodya Ой А у меня ведь этот кусок есть, ничего не помню %) Вобще-то действительно есть смысл отладчику предупреждать хотя бы о наличии секции tls, иначе можно так виря случайно запустить.
1) на русском ничего нет - можешь не искать 2) трактор, автомобиль и телега имеют много общего - например четыре колеса но там не hfe хотя и чем то похоже пошел посыпать голову пеплом ))