Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Протекторы —› Статья по снятию ASProtect'а
Посл.ответ Сообщение

Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 12 сентября 2009 16:57
· Личное сообщение · #1

Не буду писать длинных вступлений, а сразу скажу - написал статью по сабжу. Лежит тут:
vptrlx.isgreat.org/ASProtect/
Вот



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 сентября 2009 19:37
· Личное сообщение · #2

vptrlx
Толку то от стотьи нет. Базовый принцип - существуют кольца защиты. Как не крути, а кернел от юзермода отделён и первый из второго не доступен. Если я юзаю к примеру NtCreateThread то хоть ты выебесь никак сервис не сокроешь. А если не сокроешь, то это не защита, а всеголишь мусор, наложенный на приложение. Ваши анпакеры никому не нужны, достаточно лоадера.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 12 сентября 2009 22:06
· Личное сообщение · #3

Клерк, не стоит сразу так песочить человека. Да, я знаю, что натив апи и напрямую вызовы рулят и тд, но всё же они абсолютно непригодны для нормальных проектов, которые делают по документации, чтоб не переделывать в каждой новой версии винды.
З.Ы. В твоих возможностях писать под ядро я не сомневаюсь, но вот восстановленного кода из-под вм как-то не видел, тем более, что многие проты склоняются именно в эту сторону вместо антиотладки, вызова сервисов и тд.



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 12 сентября 2009 22:20
· Личное сообщение · #4

Использование недокументированных возможностей винды в коммерческих протекторах - это слишком большой риск. Не думаю, что до этого дойдёт. Тем более, что и в документированных функциях периодически баги проскальзывают )
Кольцо - какая к чёрту разница, на каком кольце подобное происходит? Всё равно, юзермодную программу в ядро перенести невозможно(на практике, конечно - так и вообще на аппаратную виртуализацию теоретически вылезти можно - отчего б нет? :P).
//и ещё мне показалось, что волна теоретических исследований на уровне "как это работает?" слишком захлестнула реверсерский мир, так я и решил попробовать как-нибудь это слишком установившееся направление сбить.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 12 сентября 2009 22:30
· Личное сообщение · #5

Archer
У нас с вами абсолютно разные понятия про документацию, мсдн это не документация, это вобще хлам. Сервисы по большей части постоянны во всей линейке нт, лишь некоторые структуры не значительно отличаются. Виртуализация - верно, тут нужно восстанавливать, но вопрос то не про неё.
vptrlx
Всё не верно.



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 12 сентября 2009 22:46
· Личное сообщение · #6

Я уже неск. лет использую натив (ну нравится мне его гибкость), на разных версиях винды все работает.

-----
продавец резиновых утёнков




Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 12 сентября 2009 23:33
· Личное сообщение · #7

Clerk, а к кому это Вы говорите про "отвращение к нативу"? И, как не странен ой вопрос, при чём тут вообще натив? И к чему Ваша ссылка с каким-то набором констант, когда есть экспортируемый KiFastSystemCall? И вообще, чего Вы добиваетесь? Может, Вы хотите сказать, что любая защита без ринг0 - не защита? а с ринг0 - уже да? Разочарую Вас - и ринг0 тоже не есть абсолютная! )))

>>Всё не верно.
Следует чиать как "я возражаю против чего-нибудь"?




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 12 сентября 2009 23:35 · Поправил: Coderess
· Личное сообщение · #8

Чесно говоря я не в состоянии прочитать все сразу от начала и до конца, но глянул сейчас и гляну позже

Clerk
Снова лекции

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 12 сентября 2009 23:41 · Поправил: Coderess
· Личное сообщение · #9

Нафег нужно чтото дампить, фильтруем десяток сервисов и модуль в памяти распакованный

Возможно Вы напишите краткую статью, как такую операцию выполнить на примере того же аспра и представите народу и мы оценим ? Что-бы поняли, что Вы имеете в виду!

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 12 сентября 2009 23:50
· Личное сообщение · #10

Clerk, да-да-да, сразу распакованный, с поставленным на место чистым кодом без мусора, с испарившейся эмуляцией команд... ну и заодно серийный номер, выдаваемый мессаджбоксом)) ну или в крайнем случае деньги на покупку программы.
Удачи! )



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 13 сентября 2009 00:05 · Поправил: vptrlx
· Личное сообщение · #11

да я уж лучше поковыряюсь, вместо того чтобы искать недокументированные функции KeCrackProgramEx, LdrpLoadWithoutTrialRestrictions и RtlGetSerial

add:
кстати, я в правильную ветку запостил?



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 13 сентября 2009 04:03
· Личное сообщение · #12

Clerk пишет:
На статью тут не тянет.)

Ну ты видать других статей еще не видел Нормально пишет, лирики бы поменше . Качать не хотел , вчера видел эту тему думал очередной ****щас глянул нормально




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 13 сентября 2009 07:58
· Личное сообщение · #13

Я согласен, что мсдн говно. Но они хотя бы держат обязательства, это говно будет работать и в последующих версиях. А гарантий, что не отвалятся большинство натив функций, никто не даёт. И даже если это пока не произошло сейчас, это не значит, что не произойдёт завтра. Погляди в сторону х64, наверняка различия будут. Как минимум-для возвращения из сепшена в ринг0 используется уже не NtContinue, как было всегда до этого, а что-то типа RtlRestoreContext, не помню точное название. Удобную RtlImageDirectoryEntryToData, которая использовалась для получения директорий из файла поменяли на неэкспортируемую, но точно такую же функцию. И достаточно и других различий там. Так что я бы не стал говорить, что натив и прямой вызов сервисов наше всё, и он никогда не поменяется, берём и юзаем.
В любом случае каждый останется при своём мнение, не хочу развозить холивар, сам на эту тему больше писать не буду. И другим просьба ближе к теме.
З.Ы. В раздел тот запостил, нормально.



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 13 сентября 2009 11:15
· Личное сообщение · #14

о лирике - я старался минимизировать её количество без неё не могу, но обычно у меня её заметно больше

>>//чего-то с шибкой доки открываютЦо.
чем открываешь и какая ошибка?



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 13 сентября 2009 18:43
· Личное сообщение · #15

МО-2007... оба дока? я в нём писал... нормально вроде.
Каких картинок не хватает?




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 14 сентября 2009 09:10
· Личное сообщение · #16

Статья нормальная, но скрипты так не пишут имхо. По поводу спёртого кода- хук на virtualalloc надо ставить так, чтобы все
области со спертым кодом были в одной секции. Кстати на секуроме такой хук помогает собрать всю вм в одной секции



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 14 сентября 2009 18:34
· Личное сообщение · #17

>>скрипты так не пишут имхо
мм, а что не так?

>> хук на virtualalloc надо ставить так, чтобы все области со спертым кодом были в одной секции
Можно конечно... но зачем? обрабатываться они всё равно будут как разные куски эмулируемого кода.

А если ты про тот момент, когда спёртые байты в нормальное место записываем, то, разумеется, да. Но в примере была одна такая секция




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 14 сентября 2009 20:49
· Личное сообщение · #18

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



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 14 сентября 2009 21:06
· Личное сообщение · #19

универсальными - ну я вынес все константы в начало. Их немного, автораспаковщик писать бессмысленно, exec...ende не работает - пишу, как могу




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 15 сентября 2009 01:04
· Личное сообщение · #20

мне статья понра. её хотя бы можно читать на мобиле, например, без отладчика под рукой ;)
в убиении мусора мона фильтрануть add/sub/xor const, в коде после этих команд идёт использование регистра, например:

Code:
  1. sub eax,293516A6h
  2. lea eax,[edi+ecx+25]


очевидно, что вычитание (sub) бессмысленно, т.к. после этого следует lea eax без собсно eax в операндах

-----
EnJoy!




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 15 сентября 2009 04:16
· Личное сообщение · #21

vptrlx пишет:
exec...ende не работает

Делай вставки кода вместо них



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 15 сентября 2009 07:33
· Личное сообщение · #22

Jupiter, да, я сказал, что что-то пропустил.пропустил из-за того, что нажал один раз F8 и программа запустилась. Детально описывать мне не хотелось, а код получился достаточно читабельным.
Вообще вот так (из той программы, в которой я этим занялся чуть более обстоятельно) сразу вышло:
Code:
  1. 02510000   PUSH EDI
  2. 02510001   PUSHFD
  3. 02510002   SUB ESP,20
  4. 02510005   LEA EDI,DWORD PTR SS:[ESP+50]
  5. 02510009   LEA EDI,DWORD PTR DS:[EDI+ESI-50]
  6. 0251000D   SUB EDI,ESI
  7. 0251000F   MOV DWORD PTR DS:[EDI],EAX
  8. 02510012   PUSH EBP
  9. 02510013   POP DWORD PTR DS:[EDI+14]
  10. 02510016   MOV DWORD PTR DS:[EDI+18],ESI
  11. 02510019   PUSH EBX
  12. 0251001A   POP DWORD PTR DS:[EDI+C]
  13. 0251001D   MOV DWORD PTR DS:[EDI+4],ECX
  14. 02510020   PUSH EDX
  15. 02510021   POP DWORD PTR DS:[EDI+8]
  16. 02510024   LEA EAX,DWORD PTR SS:[ESP+EBP+30]
  17. 02510028   SUB EAX,EBP
  18. 0251002A   SUB EAX,30
  19. 0251002D   LEA EAX,DWORD PTR DS:[EAX+EBX+2C]
  20. 02510031   SUB EAX,EBX
  21. 02510033   PUSH EAX
  22. 02510034   PUSH EDI
  23. 02510035   LEA EAX,DWORD PTR DS:[EDI+8]
  24. 02510038   LEA EAX,DWORD PTR DS:[EAX-8]
  25. 0251003B   LEA EAX,DWORD PTR DS:[EAX+20]
  26. 0251003E   MOV EAX,DWORD PTR DS:[EAX]
  27. 02510040   PUSH EAX
  28. 02510041   LEA EAX,DWORD PTR DS:[EDI+54]
  29. 02510044   SUB EAX,54
  30. 02510047   ADD EAX,28
  31. 0251004A   PUSH DWORD PTR DS:[EAX]
  32. 0251004C   POP EAX
  33. 0251004D   LEA EAX,DWORD PTR DS:[EAX-5]
  34. 02510051   ADD EAX,15E8
  35. 02510057   PUSH EAX
  36. 02510058   LEA EAX,DWORD PTR SS:[EBP+1391600]
  37. 0251005F   SUB EAX,EBP
  38. 02510061   PUSH EAX
  39. 02510062   LEA EDI,DWORD PTR DS:[ECX+133576C]
  40. 02510069   SUB EDI,ECX
  41. 0251006B   CALL EDI
  42. 0251006D   PUSH EAX
  43. 0251006E   POP EDI
  44. 0251006F   ENTER 3F43,1
  45. 02510073   RETN
  46.  


pavka, придётся




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 15 сентября 2009 08:37 · Поправил: Gideon Vi
· Личное сообщение · #23

для тех, кто хочет как можно быстрее что-то сломать (то есть практически для всех). Далее Внекрылов и заграничные туторы.
в целом, порадовало - сохранена золотая середина между F2-F9 и интеловскими талмудами


 eXeL@B —› Протекторы —› Статья по снятию ASProtect'а
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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