· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Xtreme-protector.

<< . 1 . 2 . 3 . 4 . 5 . >>

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


Дата: Июн 15, 2004 18:23:48

Да никто тут его особо и не ковырял! Ты бросай сюда асмовский код по чуть-чуть и говори что именно не понял. Будет разбирать.


Дата: Июн 15, 2004 19:21:23 · Поправил: Безпощадный даос

да понять-то несложно.
сложно сделать.

вот пожалста код.
так патч выглядит,если прогу сдампить.
CODE____:0047C644                 mov     ebx, eax
CODE____:0047C646                 call    sub_71B01B - от ето вызывается xprot-kernel
CODE____:0047C64B                 push    cs - а это уже бред закриптованный
CODE____:0047C64B ; ---------------------------------------------------------------------- -----
CODE____:0047C64C                 dd 0, 0B1000000h, 6F000000h, 0B8E2338Bh, 2F41C40Bh, 6054FE7Bh


а вот что удается вытащить 
XPROT___:0071B01B sub_71B01B      proc XPROT___:0071B01B                 pusha
XPROT___:0071B01C                 call    ][5
XPROT___:0071B021                 pop     ebp
XPROT___:0071B022                 sub     ebp, 5AB94E9h
XPROT___:0071B028                 mov     esi, [ebp+59B156Dh]
XPROT___:0071B02E                 mov     eax, 2
XPROT___:0071B033
XPROT___:0071B033 loc_71B033:                             ; CODE XREF: sub_71B01B+28j
XPROT___:0071B033                 xchg    al, [esi]
XPROT___:0071B035                 or      eax, eax
XPROT___:0071B037                 jz      short loc_71B045
XPROT___:0071B039                 pusha
XPROT___:0071B03A                 push    1
XPROT___:0071B03C                 call    dword ptr [ebp+59B139Dh]
XPROT___:0071B042                 popa
XPROT___:0071B043                 jmp     short loc_71B033


идеи ?

если бы можно было как-нибудь впендюрить отладчик... но я не знаю способа.


Дата: Июн 15, 2004 20:29:37

Ну... Что я вижу? Вижу запись байта по положению на PIC-коде... Цикл вида while(... break; ... )
А куда отладчик-то впендюривать надо?


Дата: Июн 15, 2004 21:09:20

volodya, а проясните плиз как бы из этого получить нормальный код ?

к сожалению, незнаком с термином "pic-код" ;)


Дата: Июн 15, 2004 21:19:06

PIC - это Position Independent Code - Позиционно Независимый Код.

В твоем случае это
call $+5
pop ebp

Теперь ebp содержит текущий eip и адресоваться можно уже по ebp. Более подробно поиск по форуму и вторая часть упаковщиков - пример с aspack.

Т.е. твоя процедура падчит свой же сегмент (не могу сказать какой, т.к. я не знаю, куда приведет адрес по ebp+59B156Dh, что позовет ebp+59B139Dh и т.п.). Падч осуществляется xchg al, [esi]. Причем падч идет до тех пор, пока что-то по тому адресу (вероятнее всего, какой-нибудь опкод) не дойдет до нуля - or eax, eax/jz. Поэтому я бы брыкался в отладчике как раз на jz. Знаешь, что такое ZF? Вот и ставь брыку по условию -
bpx 0071B037 if (EFL & _тут_метка_для_ZF)


Дата: Июн 15, 2004 22:01:13

чертовы сокращения ;)знаю.

да, так вот мы и возвращаемся к нашим, так сказать, баранам.

нет там отладчика и бряк не поставишь.
и не узнать что там в процедуре.

идеи ?


Дата: Июн 15, 2004 23:27:50

А какие тут могут быть идеи? Работать! Читать доки, искать альтернативные варианты, писать программы! Выяснять, почему нет айса и что сделать, чтобы он был и т.п. Вот тебе и все идеи.


Дата: Июн 16, 2004 09:55:55

Что сложного-то тут, таких кусков полно. Просто по адресу [ebp+59B156Dh] записывается 2, раз в eax 0, а dword ptr [ebp+59B139Dh] это вызов функции Sleep, это и без отладчика определить можно.


Дата: Июн 16, 2004 17:18:55

точно не sleep....


Дата: Июн 16, 2004 18:13:08

Нет, это 100% Sleep, задержка на миллисекунду. Я таких фрагментов много видел.


Дата: Июн 16, 2004 18:23:30

dragon

Ну ты уж меня совсем за идиота держишь :( Я ж не говорю, что этот кусок что-то собой представляет. Такой кусок кода в любом пакере встретить можно, они все однотипны. Я ж о другом говорю. Я ж говорю, где поставить брыку. the_laser говорит, что отладчик прибивается. А я в ответ говорю, что надо узнать механизм и разработать альтернативный алгоритм. Вот и все.


Дата: Июн 16, 2004 19:14:50

Ещё раз:

XPROT___:0071B033 xchg al, [esi]
XPROT___:0071B035 or eax, eax
XPROT___:0071B037 jz short loc_71B045
XPROT___:0071B039 pusha
XPROT___:0071B03A push 1
XPROT___:0071B03C call dword ptr [ebp+59B139Dh]
XPROT___:0071B042 popa
XPROT___:0071B043 jmp short loc_71B033

В начале eax = 2, после xchg al, [esi] в al будет значение [esi], а в [esi] будет 2. Далее идёт вызов Sleep(1), потом повторение цикла. Если до начала цикла в [esi] будет не 0, то цикл будет бесконечным, но он не бесконечен. Значит есть параллельный тред, или в [esi] изначально 0. И какой тут алгоритм разрабатывать?


Дата: Июн 16, 2004 19:26:57

И какой тут алгоритм разрабатывать?

У меня ощущение, что мы говорим на разных языках :(
Я тебе говорю по поводу возвращения отладчика. Надо вернуть возможность пользоваться софт-айсом. Хотя бы путем написания еще одного драйвера.
А твой кусок ЭЛЕМЕНТАРНО проходится с использованием отладчика условной брякой на jz, как я уже объяснял выше.


Дата: Июн 16, 2004 22:03:10

А, так нельзя софтайсом пользоваться, там перехватываются прерывания int1 и int3, код протектора их вызывает, обработчики расшифровывают код(ключ - инвертированная контрольная сумма кода обработчика прерывания), который лежит дальше, а потом возврат по iretd. Отладчик можно врубать после того, как Xprotector вернёт старые обработчики на место.


Дата: Июн 16, 2004 22:13:03

ключ - инвертированная контрольная сумма кода обработчика прерывания

Ага. :) Ну и зачем тогда обработчики? :)

<< . 1 . 2 . 3 . 4 . 5 . >>


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