· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.RESEARCH —› Защита от отладки

Посл.отвђт Сообщенiе


Дата: Июл 14, 2003 15:13:40

Насколько я понимаю - нижепреведенный кусок кода - пример антиотладочного приема. Что подскажете делать в этой ситуации?
00466080    LEA     EAX, DWORD PTR SS:[EBP+46]
00466083    PUSH    EAX
00466084    XOR     EAX, EAX
00466086    PUSH    DWORD PTR FS:[EAX]
00466089    MOV     DWORD PTR FS:[EAX], ESP
0046608C   INT3
0046608D   NOP
0046608E    MOV     EAX, EAX
00466090    STC
00466091    NOP
00466092    LEA     EAX, DWORD PTR DS:[EBX*2+1234]
00466099    CLC
0046609A   NOP
0046609B   SHR     EBX, 5
0046609E   CLD
0046609F   NOP
004660A0   ROL     EAX, 7
004660A3   NOP
004660A4   NOP
004660A5   XOR     EBX, EBX
004660A7   DIV     EBX
004660A9   POP     DWORD PTR FS:[0]


Дата: Июл 14, 2003 16:01:46 · Поправил: Four-F

Почитать про SEH, например тут Win32 Exception Handling for assembler programmers, и использовать команду айса xframe.


Дата: Июл 14, 2003 19:33:08

На счет XFRAME: в теле ф-ции CreateFileA, в начале, есть аналогичная конструкция:
PUSH DWORD PTR FS:[EAX]
MOV DWORD PTR FS:[EAX], ESP

Дак вот, XFRAME после них говорит "NO FRAMES" !!!

Может у меня баг ?


Дата: Июл 15, 2003 16:20:21

Очень странно, т.к по этой команде айс просто тупо берет адрес с fs:[0] и считает, что это указатель на SEH-фрейм.
Только если там 0 или -1 он скажет "There are no try/finally/except handlers installed", а если недопустимы адрес, то "exception information is inaccessible". Если же esp кажет на SEH-фрейм (или даже просто куда нибудь, где выделена память), а в eax 0, то xframe должна работать.

Попробуй руками посмотреть. Такая последовательность должна дизассемблировать верхний обработчик:

dd fs:0
d *ss:dataaddr
u *(dataaddr+4)


Дата: Июл 15, 2003 23:57:41

Какая классная тема, почему никто не продолжает?
Как вам такая идея:
многие пакеры, сволочи вонючие, наловчились играть на нашем поле и теперь секут S-Ice по имени (старый трюк MELTICE), RegMon (это делает Armadillo, скрывая clockback трюки), детект софт-айса через OpenServiceA (опять-таки армадилла) и т.п. Я вот думаю... Скажем, не секрет, что уже есть прямо-таки таблицы имен программ, которые попадают в список на прицел у авторов пакеров. Стоит ли попробовать дописать пару строк кода в PE Tools, чтобы программа динамически меняла свое имя в соответствии с генератором псевдослучайных чисел (взять из Кнута), так, чтобы уже нельзя было обнаружить ее никаким OpenService и т.п. Как звучит? Или я с головой не дружу?


Дата: Июл 16, 2003 00:29:09 · Поправил: Asterix

Ага, Volodya, вот тебе свежий пример ACProtect(не путать с ASProtect).
У него в коде зашита такая вот табличка имён ;-)

{EXESPY,WXR95,REGMON,FILE MONITOR,REGMONEX,WINDOW DETECTIVE,
DEBUGVIEW,RESSPY,ADVANCED REGISTRY TRACER,REGSNAP,MEMSPY,
MEMORY DOCTOR,PROCDUMP32,MEMORY EDITOR,FROGSICE,SMU
WINSPECTOR,MEMORY DUMPER,MEMORYMONITOR,NUMEGA SOFTICE
LOADER,URSOFT W32DASM,-=CHINA CRACKING GROUP=-,OllyDbg,
TRW2000}


"Наивные китайские мальчики" :-) (c) ???


Дата: Июл 16, 2003 00:37:25

Ну ты меня совсем за чайника, брат, держишь. Т.е. я, конечено, чайник и есть, но не настолько :) Так как тебе идея? Стоит этот код в PE Tools добавить?


...
Непонятного нет для меня под луной,
Мне известно, что мне ничего неизвестно,
Вот последняя тайна, раскрытая мной.

Омар Хайям,
Рубайят


Дата: Июл 16, 2003 00:45:28

[ volodya: Стоит ли попробовать дописать пару строк кода в PE Tools, чтобы программа динамически меняла свое имя в соответствии с генератором псевдослучайных чисел (взять из Кнута), так, чтобы уже нельзя было обнаружить ее никаким OpenService и т.п. Как звучит? Или я с головой не дружу?]

Ну это ты загнул :-) Достаточно заставить программу, в данном случае
PETools, читать имя из какого-нибудь файла ini в каталоге программы,
которое задаёт сам пользователь программы(вручную или с помощью
специальной фичи), и выводить его везде где это нужно, например
в заголовке окна программы.

P.S. Письмо прочитал, к выходным будет в самый раз.
Не пропадай надолго ;-)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067