|
|
| Посл.отвђт | Сообщен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 ключ - инвертированная контрольная сумма кода обработчика прерывания Ага. :) Ну и зачем тогда обработчики? :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.053 |