сабж. http://kpnc.org/ftp/KedaH3.zip кто дизасмит это дело - тому пиво (виртуальное) так же есть пара анти-отладочных приемов и сопротивление дампу
Ну и что там реверсить. Ставим в опциях ольки 'System breakpoint', загружаем этот фалег. Открываем окно 'Memory map', видим модуль этот. Жмём выделяем секцию с именем .text и юзоем F2. Затем жмём F9. Поток останавливаетсо - мы его поймали. Сразу видим кодес: Код (Text): 00401030 mov esi,esp 00401032 lods dword ptr [esi] 00401033 lods dword ptr [esi] 00401034 mov al,10 00401036 mov ah,al 00401038 xchg eax,esi 00401039 lods byte ptr [esi] 0040103A dec eax 0040103B jpo short KedaH3.00401030 0040103D xor eax,eax 0040103F push eax 00401040 mov al,30 00401042 mov esi,dword ptr fs:[eax] 00401045 inc esi 00401046 dec byte ptr [esi+1] 00401049 jpo short KedaH3.00401012 0040104B xor eax,eax 0040104D mov eax,dword ptr [eax] Трассируем до адреса 0040103D. Тут мы видем детский кодес, который проверяет поле PEB.BeingDebugged, если оно не ноль, то вызываетсо исключение(0040104B/0040104D). Если ноль, то отладчик не активен, и выполняетсо переход(00401049) на кодес, который боксит мессагу: Код (Text): 00401012 push KedaH3.00403000 ; ASCII " .no pain -- no gain. " 00401017 push KedaH3.00403018 ; ASCII 0A,"condom-pri" 0040101C push 0 0040101E call dword ptr [<&USER32.MessageBoxA>] ; USER32.MessageBoxA Ппц.. для школьнегов такое только показывоть %%%)).
nobodyzzz > =))) porn detected это чтобы по F3 не смотрели JCronuz > О*ренеть виснет при трасировке так как буд-то в ring0 уходит не, в ring-0 оно не уходит. все на ring-3 PaCHER > А чего собственно нужно добится? Чтоб под отладкой дойти до месажбокса? гм, ну это просто демонстрация разных приемов против отладчика и дизассемблера что сделать? - понять как это работает и использовать в своих защитах
Clerk > Ну и что там реверсить. слона-то ты и не увидел загрузи в дизассемблер. ы? > Трассируем до адреса 0040103D. > Тут мы видем детский кодес, который проверяет поле PEB.BeingDebugged, и что он проверяет? внимание, ответ: пропускает второй и все последующие вызовы TLS Callback, чтобы мессага появлялась только один раз. > то вызываетсо исключение(0040104B/0040104D) в TLS Callback исключение эквивалетно RETN, т.е. мы спокойно выходим > Ппц.. для школьнегов такое только показывоть %%%)). ну ИДА вообще ничего не показывает
Clerk Ну я не ставил никаких хардвар бряков и никакой трасировки, просто на адрес обработки колбека ставится Int 3 и все пучком. Clerk Ну а гдеж описание кодеса который идет до 0040103D и при отладке в олли загоняет в вечный цыкл т.к. проверяется ште 3 на EP.
kaspersky О чём ты, я ведь скозал что системный бряк, он есчо до тлс срабатывает, а затем ставим останов на доступ к секции кода, так что ловитсо всё отлично.
kaspersky Ида видать изза неправильной обработки размеров секций идет лесом, но поправить не проблема.
Clerk борьба с отладчиками тут просто ради прикола. аппаратная точка на callback так же рулит. но вот если загрузить файл в дизассемблер, то он ни хвоста не покажет. то есть покажет, но только IDA 5.3 с ручной загрзкой, а по дефлоту - облом-с. тот же самый трюк, но без борьбы с отладчиками - http://kpnc.org/ftp/kdh-reverseme.zip
PaCHER править не проблема, если ты знаешь, что нужно править. а если нет? системный загрузчик грузит ALIGN_UP(SizeOfRawdata, FileAlignment), а ИДА только SizeOfRawdata. так что можно спрятать часть кода данных в хвосте секции и если ИДА не распознает перекрестных ссылок (нет прямых переходов на скрытый код), то ты скорее всего даже не заподозришь, что там вообще что-то есть.
Clerk возращаясь к оригинальному посту . # кто дизасмит это дело - тому пиво (виртуальное) . т.е. задача стояла именно дизасмить. потому как защита именно против дизассемблеров. главным образом - против ИДЫ. отладчики грузят файл с помощью системного загрузчика и потому под ними все работает. кстати, даже под отладчиком трюк с исключением ты пропустил
Поотрубал фиксы на PEB debug флаг в плугинах - так оказалась, что Shadow сборка не даёт менять его сама - всегда в 0 держит. Отрекомендуйте сборку или ну их все(?), плугинов достаточно. А так, в новинку было только jpo /или есть более осмысленное представление у jcc? влом тулзу свина искать/ - до этого надо было додуматься ещё. [upd]или я програл про Shadow. плавающий баг какой-то
asmfan > Поотрубал фиксы на PEB debug флаг в плугинах > так оказалась, что Shadow сборка не даёт менять > его сама - всегда в 0 держит. ага. ну это ни разу не антиотладка. я просто туда флаг повторной входимости в callback воткнул > А так, в новинку было только jpo /или есть более > осмысленное представление у jcc? влом тулзу свина искать/ > до этого надо было додуматься ещё. завуалированная проверка на CCh. простая хэш сумма скрывает факт, что именно мы проверяем