Сейчас на форуме: zds, -Sanchez- (+9 невидимых)

 [email protected] —› Протекторы —› Появился новый AsProtect 2.2
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение


Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 08 января 2006 11:03
· Личное сообщение · #1

Зайдите на www.aspack.com. Там появился новый аспр. Я слил закинул в отладчик. Вобщем мне некогда, но беглый осмотр таков:

Ю Все, Солодовников перестал использовать исключения.
Ю VM разбита на гораздо большее количество частей в оперативе
Ю Прыжки между VM осуществляются более извратно.
Ю Переходники на АПИ больше не патчатся, а выполнябтся сразу (хотя я такое уже встречал)

Все некогда, кто, что наковыряет - пишите думаю всем будет интересно.

-----
Yann Tiersen best and do not fuck





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 16 января 2006 14:22
· Личное сообщение · #2

ничё не понял ) каких переходов ? ты про VM ? дык в ней эмулируются не только jz/jnz(!ZF), а вообще все типы условных переходов jxx + безусловные jmp + call + cmp и ещё вроде (непомню уже =) ) иногда подряд идущие cmp + jxx. Так что без разницы дельфи или си ;)



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 16 января 2006 15:50
· Личное сообщение · #3

Mario555 пишет:
и ещё вроде (непомню уже =) ) иногда подряд идущие cmp + jxx

угу, а отдельно cmp без jcc не тырятся )



Ранг: 28.6 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 16 января 2006 17:22
· Личное сообщение · #4

угу, а еще не эмулируются cmp reg, var + jxx




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 17 января 2006 11:11
· Личное сообщение · #5

Mario555 будь другом запость хоть несколько видов jxx как они в VM выглядят, а то я больше на логгер полагаюсь, а это ни есть ГУД.
И вот еще, там есть инструкции
SUB ESI,EDI
CALL VM_call
так вот без разницы, какой флаг будет выставлен, VM сама проверяет эти регистры на равенство.

Инвертированые я называю переходы, где перед входом в VM_call выставляется !ZF=1, а в VM сбрасывается в 0 и проверяется на 0, и наоборот. А есть такие, что выставляешь разные флаги по разному - два перехода, трасируешь программу (как есть), вообще узел сравнения проскакивает.

Сегодня вроде отоспался и прогу добил, там такой прикол, что для эбаута почти копия VM (как для основного кода) используется. Я даже думал минут 20 эбаут восстанавливать или проще свой написать, решил восстанавливать. Теперь только закрытие проги осталось вылечить.

-----
Yann Tiersen best and do not fuck




Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 18 января 2006 02:13
· Личное сообщение · #6

Кто-нибуль может поделиться аспром последней(них) версии? Тоже хочется покопаться с VM




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 января 2006 05:37
· Личное сообщение · #7

arnix на WASM.ru зайди.

-----
Yann Tiersen best and do not fuck





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 18 января 2006 23:03
· Личное сообщение · #8

PE_Kill пишет:
Mario555 будь другом запость хоть несколько видов jxx как они в VM выглядят, а то я больше на логгер полагаюсь, а это ни есть ГУД.
И вот еще, там есть инструкции
SUB ESI,EDI
CALL VM_call
так вот без разницы, какой флаг будет выставлен, VM сама проверяет эти регистры на равенство.


я вообще непонимаю о чём ты говоришь %)) jxx в VM выглядят как функция их эмуляции (каждого типа) соответственно в коде это, как и остальные эмулируемые команды, просто call VM внутри которого всё и выполняется... а то что идёт непосредственно до call vm никак не влияет на тип эмулируемой инструкции.



Ранг: 28.6 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 18 января 2006 23:11
· Личное сообщение · #9

>а то что идёт непосредственно до call vm никак не влияет на тип эмулируемой инструкции
Угу, не влияет, но все же если перед call vm стоит несколько push'ей, то с большой долей вероятности эмулируется call, хотя это и не обязательно.



Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 18 января 2006 23:13
· Личное сообщение · #10

PE_Kill пишет:
на WASM.ru зайди


2.11 даавно есть, нужен 2.20. Я бы не стал спрашивать программу которая лежит в паблике



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 19 января 2006 08:10
· Личное сообщение · #11

2.2 был выложен на экзетулзе, правда без регнума, а без регнума его не распаковать и не сломать соответсно...

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 19 января 2006 08:35
· Личное сообщение · #12

2.20 у меня нет. Если так уж охота поковырять VM, то ковыряй сам АСПР 2.20 там как я глянул нехилая VM, вот только продираться сквозь нее придется в полной темноте.
Mario555 но ведь не все там динамическое. Есть же какие то места, по которым можно определить, что вот это 100% jb потому что вот здесь это, а вот здесь это (наподобие push XXXXXXXX -> call XXXXXXXX (70%)). Я понимаю что все эмулится в VM call.
В VM например после одного сравнения там есть прыжок наподобие
mov eax,ebx {eax=4}
00000001 jmp [eax*4+00000002]
00000002 мусор
00000003 push eax
00000004 mov ebx,esi {в ESI лежит EFL}
00000005 call XXXXXXXX

и таких блоков - 15.
а после каждого блока идет возврат в основной VM call где проверяется AL (test al,al). И уже в зависимости от флага Z формируется переход. Так вот эти 15 блоков команд и есть эмулируемые команды?
Если да то jmp [eax*4+XXXXXXXX] это переход на эмулируемую команду.
Поправь меня, если я ошибаюсь.

-----
Yann Tiersen best and do not fuck





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 19 января 2006 12:58
· Личное сообщение · #13

PE_Kill пишет:
Так вот эти 15 блоков команд и есть эмулируемые команды?

да, тоесть это эмулируемые jxx и соответственно код

00C08511 CMP EAX,0F
00C08514 JA 00C0870B
00C0851A JMP DWORD PTR [EAX*4+C08521]

это выбор типа jxx.

А выбор общего типа команды осуществляется кодом вида

00C088CC CALL EDX
00C088CE SUB AL,2
00C088D0 JB SHORT 00C088E4 ; вроде jmp/call (непомню, если что, то Санни поправит) =)
00C088D2 JE SHORT 00C08911 ; этот - на jxx
00C088D4 DEC AL
00C088D6 JE 00C0895E ; а этот cmp + jxx
00C088DC JMP 00C089BB

вот так ВМ и отламывается... определяем все типы, "собираем" их из аспра и автоматизируем восстановление оригиналов (скриптом либо прогой).




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 19 января 2006 13:07
· Личное сообщение · #14

Mario555 Спасибо, теперь я чувствую, что иду по правильному пути. Скажи еще вот что порядок jcc эмулируется статически, или динамически (т.е. jnz всегда 4й блок или нет).

-----
Yann Tiersen best and do not fuck





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 19 января 2006 13:36
· Личное сообщение · #15

да, статически. причём ещё и почти в порядке следования опкодов (тоесть 74h 04h - jnz и т.п.), а почти из-за того что пара переходов всё же поменяна местами (хз зачем).



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 19 января 2006 20:51
· Личное сообщение · #16

Mario555 пишет:
если что, то Санни поправит

не поправлю, всё у тя правильно ) если после call edx eax равен:
0, то это call
1, то это jmp
2, то это jcc
3, то это cmp+jcc

Mario555 пишет:
пара переходов всё же поменяна местами (хз зачем)

чтоб жизнь медом не казалась



Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 20 января 2006 00:35
· Личное сообщение · #17

Smon пишет:
2.2 был выложен на экзетулзе, правда без регнума, а без регнума его не распаковать и не сломать соответсно...


Угу, она у меня есть, без регнума... Лежит, ждёт лучших дней...

PE_Kill пишет:
2.20 у меня нет. Если так уж охота поковырять VM, то ковыряй сам АСПР 2.20 там как я глянул нехилая VM, вот только продираться сквозь нее придется в полной темноте.


В том и дело, намного легче и быстрее когда оригинал защищённой проги под рукой




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 января 2006 06:55 · Поправил: PE_Kill
· Личное сообщение · #18

Все jcc я нашел:
jpe <-> jbe
jpo <-> ja
теперь вот другая проблема. В VM эмулятся 5 видов CMP. Я нашел 3.


0...MOV EBP,DWORD PTR SS:[EBP] //////// Пример CMP DWORD PTR DS:[ESI],0

1...MOV EAX,DWORD PTR SS:[ESP+10] //
....MOV EAX,DWORD PTR DS:[EAX]....// ?? Что это ??
....MOV DWORD PTR SS:[ESP+10],EAX //

2...XOR EAX,EAX..............//
....MOV AL,BYTE PTR SS:[EBP] // пример CMP BYTE PTR DS:[ESI],0
....MOV EBP,EAX..............//

3...MOV EAX,DWORD PTR SS:[ESP+10] //
....MOVZX EAX,BYTE PTR DS:[EAX]...// ?? Что это ??
....MOV DWORD PTR SS:[ESP+10],EAX //

4...MOV EDX,DWORD PTR SS:[ESP+10] // Пример CMP ESI,ESI
....MOV EAX,EBP


Я понял как определяется по какому регистру проводится сравнение. Те блоки команд, где я привел примеры, я знаю что делают, просто мысль сформулировать не могу (опять бессонная ночь). Помогите плиз что за оставшиеся 2 блока, что там эмулится?

-----
Yann Tiersen best and do not fuck




Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 20 января 2006 15:30 · Поправил: sanniassin
· Личное сообщение · #19

1 это вроде cmp exx,dword ptr [exx], а 3 - cmp exx,byte ptr [exx]

ЗЫ: там ещё эмулятся команды типа cmp eax, 1234h, ковыряй ;)




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 21 января 2006 02:55
· Личное сообщение · #20

PE_Kill
Круто тебя застегнуло.Стоит оно того,так глючиться?

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 января 2006 06:38 · Поправил: PE_Kill
· Личное сообщение · #21

Bronco видишь ли последний раз, когда я ковырял АСПР было 1.5 года назад (или больше?), тогда у меня дома сдох комп, а на работе отключили инет и я перестал кракать. За такое большое время столько изменилось. Я был в шоке, когда узнал как АСПР теперь защищает импорт, а что было когда я узнал что есть еще какая то VM... Теперь пытаюсь нагнать все, что пропустил за эти полтора года и помоч таким же как я или новичкам (статью написать может быть).

-----
Yann Tiersen best and do not fuck




Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 21 января 2006 10:19
· Личное сообщение · #22

Обязательно напиши. Тем более на сколько я помню импорт в твоей проге не использует VirtualAlloc.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 января 2006 14:14
· Личное сообщение · #23

SergSh пишет:
на сколько я помню импорт в твоей проге не использует VirtualAlloc

это точно, но вообще я видел только 4 проги, в которых используется VirtualAlloc, а все остальные как и эта. Кстати, мой скрипт восстанавливает и такие и такие. Я даже извратился и определяю DLL а не только функции и вписываю в новую IAT группами (каждая DLL отделяется 00000000 а не каждая ф-ия). Экономия места

-----
Yann Tiersen best and do not fuck




Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 21 января 2006 15:44
· Личное сообщение · #24

PE_Kill пишет:
Я даже извратился и определяю DLL а не только функции и вписываю в новую IAT группами (каждая DLL отделяется 00000000 а не каждая ф-ия).

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



Ранг: 25.9 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 21 января 2006 16:08 · Поправил: stalker
· Личное сообщение · #25

PE_Kill пишет:
статью написать может быть


это ОЧЕНЬ хорошая идея, но на всякий случай (вдруг лень наступит незаметно ) пиши побольше инфы про VM в эту ветку форума -- многим поможешь!



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 21 января 2006 18:41
· Личное сообщение · #26

Давай пиши не линись. Необходимо, чтобы белых пятен в Аспре версий 2.1хххх не осталось. Мы с Smonом как раз закончим с новым ThemidaDemo (пока всё идёт нормально, но ещё не конец) в течении недели и потом можно будет подробнее посмотреть Аспр 2.2.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 22 января 2006 06:18
· Личное сообщение · #27

Ради интереса,потестируте у себя,а то ночь угробил:
_http://rapidshare.de/files/11543006/ArtIcons_Pro_5.0_Crack.rar.html
SergSh
Просьбочка,когда за Аспр 2.2. возьмётесь,то попробуйте на Resource Builder 2.4.0.7.
Давно руки чешуться заломать,но не доно аспр снять.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 22 января 2006 10:26 · Поправил: PE_Kill
· Личное сообщение · #28

sanniassin пишет:
1 это вроде cmp exx,dword ptr [exx]

Да ты прав.

sanniassin пишет:
а 3 - cmp exx,byte ptr [exx]

Чет я не понял, как можно сравнивать 32 битный регистр и байт?

sanniassin пишет:
там ещё эмулятся команды типа cmp eax, 1234h

это как раз и есть пятый блок. Аспру по барабану сравнивать регистр с числом или с регистром, он это еще до этих блоков определяет. Т.е.

0...MOV EBP,DWORD PTR SS:[EBP] // Пример CMP DWORD PTR DS:[ESI],0 или CMP DWORD PTR DS:[1234],0

1...MOV EAX,DWORD PTR SS:[ESP+10] //
....MOV EAX,DWORD PTR DS:[EAX]....// CMP ESI,DWORD PTR [ESI] или CMP ESI,DWORD PTR [1234]
....MOV DWORD PTR SS:[ESP+10],EAX //

2...XOR EAX,EAX..............//
....MOV AL,BYTE PTR SS:[EBP] // пример CMP BYTE PTR DS:[ESI],0 или CMP BYTE PTR DS:[1234],0
....MOV EBP,EAX..............//

3...MOV EAX,DWORD PTR SS:[ESP+10] //
....MOVZX EAX,BYTE PTR DS:[EAX]...// ?? Что это ??
....MOV DWORD PTR SS:[ESP+10],EAX //

4...MOV EDX,DWORD PTR SS:[ESP+10] // Пример CMP ESI,ESI или CMP ESI,1234
....MOV EAX,EBP

В общем я понял, что в третьем блоке эмулится CMP ??,BYTE PTR DS:[Exx], только вот что вместо ?? чтобы я не подставлял АСПР отказывается это эмулить. Все же я думаю, что это AL. Mario555 ты не помнишь?

-----
Yann Tiersen best and do not fuck





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 22 января 2006 14:58
· Личное сообщение · #29

Не, непомню, я ведь это копал полтора года назад ) но вроде там "??" это и есть "??" тоесть любой регистр, аспр их по номерам определяет, а значение из сохранённого контекста берёт.



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 22 января 2006 16:27
· Личное сообщение · #30

PE_Kill пишет:
Чет я не понял, как можно сравнивать 32 битный регистр и байт?

ну cmp al, byte ptr [eax] всмысле ) опечатался




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 января 2006 11:39
· Личное сообщение · #31

все дописываю скрипт и (если распакую программу) буду писать статью. Скрит уже восстанавливат jmp,call,jcc. Осталось cmp+jcc. Еще интересную особенность заметил. Аспр при распаковке время от времени пишт в секцию кода RETN и прыгет на него келлом. Надо полагать защита от оеп фаиндеров. Только причем здесь секция кода, если теперь оеп вообще в заалоченой памяти. Короче лол.

-----
Yann Tiersen best and do not fuck



<< . 1 . 2 . 3 . 4 . 5 . >>
 [email protected] —› Протекторы —› Появился новый AsProtect 2.2
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати