Русский / Russian English / Английский

Сейчас на форуме: ipfw (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Протекторы —› Анализ ASProtect
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >>
Посл.ответ Сообщение

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 28 марта 2008 15:30 · Поправил: vnekrilov New!
Цитата · Личное сообщение · #1

Я выложил свой первый туториал по анализу ASProtect v2.4 build 12.20 (Анализ подпрограммы эмуляции инструкций.rar http://dump.ru/files/o/o489862518/ ). В этом туториале я подробно описал процесс восстановления эмулированных инструкций типа:
Code:
  1. PUSH 0
  2. PUSH 0CC5850
  3. PUSH 0DB180C
  4. CALL 00CEB814


Полный цикл статей по распаковке ASProtect (Актуальная версия 25 декабря 2009):
ASProtect_Unpacking_Tutorial_2009-12-25.rar http://rapidshare.com/files/325720799/ASProtect_Unpacking_Tutorial_2009-12-25.rar 7,9 МБ
Программы, рассматриваемые в статьях:
ASProtect_Unpacking_Apps_2009-12-25.rar http://rapidshare.com/files/325718084/ASProtect_Unpacking_Apps_2009-12-25.rar 22,2 МБ

Буду благодарен за критику, замечания, пожелания и отзывы.

Скрипты:
Текущая рекомендуемая версия ODBGScript [1.78.3]:
{ Атач доступен только для участников форума } - ODbgScript.dll

Последний текущий комплект скриптов [от 19 февраля 2011]:
{ Атач доступен только для участников форума } - Скрипты для распаковки Asprotect от 19 февраля 2011.rar

Статьи по частям:
Актуальная версия статей [Последняя - 25.11.2010]:
Выпуск 2
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 1
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 2
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 3
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 4
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 5
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 5 (продолжение)
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 6
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 7
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 8
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 9
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 10
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 11
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 12
{ Атач доступен только для участников форума } - Распаковка ASProtect - Часть 13
{ Атач доступен только для участников форума } - Распаковка Asprotect - Часть 14
{ Атач доступен только для участников форума } - Распаковка Asprotect - Части 15 и 16

DriEm конвертировал мой цикл статей в формате PDF, который можно скачать по ссылке --> Link <--


Ранг: 109.3 (ветеран)
Статус: Участник
Yes! I_m noob!

Создано: 23 февраля 2011 09:45 New!
Цитата · Личное сообщение · #2

vnekrilov, мой недосмотр. Спасибо. В ЛС кинул слёзную просьбу одного ребёнка....

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 17 марта 2011 07:40 · Поправил: vnekrilov New!
Цитата · Личное сообщение · #3

Появился ли у кого-либо дистрибутив Asprotect 2.59 (не Демо-версия!)? Если у кого-либо он появился, поделитесь, пожалуйста.


Ранг: 109.3 (ветеран)
Статус: Участник
Yes! I_m noob!

Создано: 19 марта 2011 01:45 New!
Цитата · Личное сообщение · #4

vnekrilov, достали дистрибутив? Есть какие-нибудь новшества? И главное: скрипты годные для 2.59 (не надо ли допиливать)?
з.ы. Человек обещал кинуть фулл, но пропал

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 19 марта 2011 07:55 New!
Цитата · Личное сообщение · #5

[0utC4St] пишет:
vnekrilov, достали дистрибутив?


Жду!!! Возможно, что кто-то откликнется.

Ранг: 1.3 (гость)
Статус: Участник

Создано: 20 марта 2011 12:57 New!
Цитата · Личное сообщение · #6

"Домашняя бухгалтерия" (keepsoft_dot_ru) упакована 259 вроде.
Скрипт от VolX говорит что unknown Asprotect API на одну из функций при распаковке.

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 20 марта 2011 13:40 · Поправил: vnekrilov New!
Цитата · Личное сообщение · #7

stasionok пишет:
Скрипт от VolX говорит что unknown Asprotect API


VolX уже давно не корректировал свой скрипт. И в его скрипте имеется не совсем корректная обработка APIs Asprotect, которая и вызывает сообщение unknown Asprotect API. Когда я дорабатывал домашнюю бухгалтерию, она не была упакована Asprotect 2.59. Хотя, возможно, автор выложил новую версию этой программы, где и применил последнюю версию этого протектора. Надо будет посмотреть.

Желательно найти дистрибутив этой версии протектора, поэтому я и жду, что кто-либо откликнется, и поделится.

PS. Да, верно! Последняя версия программы защищена Asprotect 2.59 build 12.08.

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

Создано: 22 марта 2011 02:13 · Поправил: Konstantin New!
Цитата · Личное сообщение · #8

Нашел одну неприятную ошибку в скрипте - Восстановление эмулированных подпрограмм в коде программы.

Вот в этом месте лишняя команда STI
Code:
  1. mov eip,temp_2                                  // EIP на первой эмулированной инструкции
  2. STI                                         
  3. STI                                         
  4. STI                                         
  5. STI                                         
  6. RTR                                             // Выполняем до инструкции RETN
  7. STI                                          
  8. STI                                          
  9. STI                                          
  10. STI                                          
  11. STI                                             // Входим в VM


а нужно чтобы было так
Code:
  1. mov eip,temp_2                                  // EIP на первой эмулированной инструкции
  2. STI                                         
  3. STI                                         
  4. STI                                         
  5. STI                                         
  6. RTR                                             // Выполняем до инструкции RETN
  7. STI                                          
  8. STI                                          
  9. STI                                          
  10. STI                                          


Из за этого исполняется лишняя команда PUSHAD, и когда далее запускается виртуальная машина для восстановления эмулированных инструкций она получит не корректные данные через стек.

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

Создано: 22 марта 2011 03:47 New!
Цитата · Личное сообщение · #9

P.S. Разобрался, это не ошибка, работа команы RTR зависит от настройки отладчика

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 22 марта 2011 05:48 · Поправил: vnekrilov New!
Цитата · Личное сообщение · #10

При распаковке программы Advanced Find and Replace 6.1 я столкнулся с интересной ошибкой скрипта "Восстановление таблицы IAT и вызовов APIs.osc". Скрипт, при распаковке этой программы, показал следующее сообщение "Внимание! Новая версия Asprotect.dll! Откорректируйте код виртуальной машины для этой версии Asprotect.dll", и это не смотря на то, что программа упакована относительно старой версией протектора. Анализ работы скрипта показал, что в Asprotect.dll для этой программы заголовок массива данных для эмулированных инструкций, и сам массив данных не находятся вместе, а разнесены друг от друга на значительное расстояние - 17C90h байтов, хотя заголовок массива данных имеет размер - 1Ch байтов. С такой реализацией я встретился впервые, поэтому пришлось откорректировать скрипт, и ввести дополнительный поиск других вызовов эмулированных инструкций, в которых заголовок и массив данных находятся рядом. Если же во всех найденных вызовах эмулированных инструкций размер заголовка массива данных не будет равен 1Ch или 5Ch байтов, тогда скрипт покажет сообщение о новой версии Asprotect.dll

Поскольку я снова откорректировал скрипт "Восстановление таблицы IAT и вызовов APIs.osc", то аттач к этому топику я удалил, а откорректированный скрипт приложен в аттаче к следующему топику.

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 22 марта 2011 09:09 New!
Цитата · Личное сообщение · #11

Здесь я выкладываю откорректированный скрипт "Восстановление таблицы IAT и вызовов APIs.osc".

{ Атач доступен только для участников форума } - Восстановление таблицы IAT и вызовов APIs.osc

| Сообщение посчитали полезным: hlmadip, Gideon Vi, SReg, d0wn, [0utC4St], DimitarSerg



Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 1 апреля 2011 10:36 · Поправил: PE_Kill New!
Цитата · Личное сообщение · #12

Восстанавливаю исходники интерпретатора ASProtect VM, который работает только для ASProtect.DLL, и вот что то ступор у меня. Есть там примитив:
Code:
  1. procedure VmPrimitive_MoveValueToOperand(const ByteCode: TVmByteCode;
  2.             const Operand: TVmOperand; Value: DWord; var VmContext: TVmContext);
  3. begin
  4.   Value := Value and OperandMask[VmContext.OperSize];
  5.   if Operand.OpType = voReg then
  6.     begin
  7.       if (VmContext.OperSize = SIZE_BYTE) and (Operand.RegIndex >= vrEsp) then
  8.         VmContext.RegsSpec[Operand.RegIndex] :=
  9.           (VmContext.RegsSpec[Operand.RegIndex] and $FFFF00FF) or (Value shl 8)
  10.       else
  11.         VmContext.Regs[Operand.RegIndex] :=
  12.           (VmContext.Regs[Operand.RegIndex] and (not OperandMask[VmContext.OperSize])) or Value
  13.       ;
  14.     end
  15.   else
  16.     begin
  17.       VmUpdateCurrentSegment(ByteCode, VmContext);
  18.       VmWriteValueToMemory(ByteCode, Operand.Value, Value, VmContext.OperSize, VmContext, True);
  19.     end
  20.   ;
  21. end;


Разве есть у процессора инструкции, позволяющие напрямую читать/писать в младший байт регистров SP, BP, SI, DI? Или есть команды косвенно его меняющие? Мне кажется это просто бред не выспавшегося программиста, т.к. интепретироваться это не может хотя бы потому, что контекст ВМ выглядит так:
Code:
  1. 00000010 RegSp           dd ?
  2. 00000014 RegBp           dd ?
  3. 00000018 RegSi           dd ?
  4. 0000001C RegDi           dd ?
  5. 00000020 RegEax          dd ?
  6. 00000024 RegEcx          dd ?
  7. 00000028 RegEdx          dd ?
  8. 0000002C RegEbx          dd ?
  9. 00000030 RegEsp          dd ?
  10. 00000034 RegEbp          dd ?
  11. 00000038 RegEsi          dd ?
  12. 0000003C RegEdi          dd ?

А скомпилированный код работы со спец регистрами так:
Code:
  1. 00CF87FD    833E 04         CMP DWORD PTR DS:[ESI],4 ; if RegIndex < REG_ESP
  2. 00CF8800    72 0D           JB SHORT 00CF880F ; уходим
  3. 00CF8802    8B06            MOV EAX,DWORD PTR DS:[ESI] ; читаем индекс регистра
  4. 00CF8804    8B4483 10       MOV EAX,DWORD PTR DS:[EBX+EAX*4+10] ; получаем его значение в спец массиве
  5. 00CF8808    C1E8 08         SHR EAX,8
  6. 00CF880B    23C7            AND EAX,EDI

Т.е. массив со спец регистрами находится по смещению +10, а массив с нормальными регистрами по смещению +20,

Т.е. при условии, что регистр должен быть больше или равен 4, то алгоритм залезет в массив с нормальными регистрами. А ошибка кроется в неправильном объявлении массива. Там скорее всего объявлено так:
Code:
  1. {0x10} RegsSpec : packed array [0..3] of DWord;
  2. {0x20} Regs     : packed array [0..7] of DWord;

а должно быть либо так:
Code:
  1. {0x10} RegsSpec : packed array [4..7] of DWord;
  2. {0x20} Regs     : packed array [0..7] of DWord;

либо работать с массивом так:
Code:
  1. VmContext.RegsSpec[Operand.RegIndex - 4] :=...


Ну и собственно интересует ответ на вопрос, озвученный в начале.


Ранг: 2011.1 (!!!!)
Статус: Модератор
retired

Создано: 1 апреля 2011 12:44 New!
Цитата · Личное сообщение · #13

Возможно, аспр готовится к х64 на одних сорцах, ибо там есть spl,bpl,sil и dil регистры.

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 31 мая 2011 20:25 New!
Цитата · Личное сообщение · #14

На сайте разработчика появилась информация о выходе новых версий продуктов:

ASProtect 1.61
ASProtect 2.63 SKE


Может ли кто-либо поделиться дистрибутивами этих программ?


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 31 мая 2011 21:46 New!
Цитата · Личное сообщение · #15

Дистрибов нет, есть ченжлог:
ASPack 2.28
° Indonesian localization has been added
° Russian GUI messages have been corrected
° Compression algorithm of files with checksum has been fixed
ASProtect 1.61
° New option has been added. It prevents end-users from setting system time backwards and works for time-lim ited Registration Keys
° A crash that occurred after Hardware ID change has been fixed
ASProtect 2.63 SKE
° New option has been added. It prevents end-users from setting system time backwards and works for time-limited Registration Keys

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 8 июня 2011 14:13 · Поправил: VodoleY New!
Цитата · Личное сообщение · #16

Всем добрый день. Прошу совета где я че нитак понял.
1. имеем прогу накрытую аспротом.
2. имеем пошифрованный участок кода. ключа естественно нет.
пару дней копал АсПрот.длл а конкретно SetUserKey интересует пару моментов. из того что понял
1. из ключа считаеца хеш типа CRC32
2. Ключом инициируеца MD5 HASH res=16byte
3. Этим результатом инициализируеца RC4 ключ res=256
4. Идет дешифровка данны по RC4
Внимание вопросы.
1. верно ли все перечисленное?
2. где аспр хранит адреса пошифрованных участков? по всей видимости в этой аспр.длл
3. CRC пароля сверяеца ж вроде до начала дешифрования (перед началом дешифрации какойто мутный цикл анализирующий данные блоками по 5A9h байт где и сверяюца хеши)
З.Ы. если я прав, то на ключи длинной не более 4ех байт можно организовать атаку


Ранг: 675.4 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 8 июня 2011 14:27 New!
Цитата · Личное сообщение · #17

VodoleY
Какая версия аспра?

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 8 июня 2011 14:28 New!
Цитата · Личное сообщение · #18

ARCHANGEL а я х3... ктото вроде выкладывал статический анализатор версии аспра. но чет я его не скачал, а ща найти не могу


Ранг: 675.4 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 8 июня 2011 14:39 · Поправил: ARCHANGEL New!
Цитата · Личное сообщение · #19

--> Aspr_Info <-- попробуйте. Там статика и не нужна. Ну, только если PE_Kill очень хочет - мы ж не можем ему отказать (его анализатор)

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 8 июня 2011 14:42 · Поправил: VodoleY New!
Цитата · Личное сообщение · #20

2.58 build 11.11

http://exelab.ru/f/index.php?action=vthread&forum=13&topic=11916#30
прочитал. но вопросы поставленный всеже теже


Ранг: 675.4 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 8 июня 2011 14:52 New!
Цитата · Личное сообщение · #21

VodoleY
Билд относительно новый, хз. Может, кто и смотрел его - напишут что-то.


Ранг: 793.4 (! !)
Статус: Участник
Шаман

Создано: 9 июня 2011 08:13 · Поправил: PE_Kill New!
Цитата · Личное сообщение · #22

После статьи shooo алго изменили вот так:
Code:
  1. ZeroMemory(@HashModeTable);
  2. ReverseAndCopy(ReverseP5, ModeP5);
  3. HashP5 := CreateSha256Digest(ReverseP5, Length(ReverseP5));
  4. HashModeTable := XorBuffByTable(HashModeTable, HashP5, Length(HashP5));
  5. HashModeTable := CreateSha256Digest(HashModeTable, Length(HashModeTable));
  6.  
  7. EncKey := CreateMd5Digest(CalcSalt(ModeP5) + EncConst, 4);
  8. EncKey := XorBuffByTable(EncKey, HashModeTable, 16);
  9. EncKey := XorBuffByConst(EncKey, 16);
  10.  
  11. for i := 1 to 30000 do
  12. begin
  13.   EncKey := XorBuffByTable(EncKey, CreateSha256Digest(EncKey, 16), 16);
  14.   EncKey := CreateMd5Digest(EncKey, 16);
  15. end;
  16.  
  17. EncKey := CreateMd5Digest(EncKey, 16);
  18.  
  19. RC4Init(EncKey, 16);
  20. RC4Decrypt(EncTable, TableSize);


ModeP5 - константа P5 из проекта аспра, для текущего ModeID
EncConst - ключ дешифрования кусков кода
EncKey - ключ дешифрования таблиц с адресами пошифрованного кода
EncTable - те самые таблицы
CreateSha256Digest - почти оригинальный алгоритм
CalcSalt - кастомная функция вычисления соли из не перевернутого P5, всегда под VM
XorBuffByTable - цикл ксора таблиц друг на друга DWORD'ами, всегда под VM
XorBuffByConst - кастомная функция шифрования DWORD'ов таблиц, всегда под VM

| Сообщение посчитали полезным: VodoleY, mak


Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 9 июня 2011 08:34 · Поправил: VodoleY New!
Цитата · Личное сообщение · #23

Есть мнение что алго при использовании привязки по ключу ("%ProgramFiles%\ASProtect SKE 2.51 Beta\Examples\User Key\Delphi\.." ) все же другое, проще, старее... извиняюсь, что не уточнил это в первом посте

Code:
  1. EncKey="KEY";
  2. EncKey := CreateMd5Digest(EncKey, 16);
  3. RC4Init(EncKey, 16);
  4. RC4Decrypt(EncTable, TableSize);


Причем сам "KEY" при достаточно маленьком размере (а он в экзампле 3 байта а у меня 4) брутица фул менее чем за 12 минут. ибо есть его хеш... где я не прав?

З.Ы. про расшифровку таблицы адресов не догнал. спс
З.Ы.Ы. спасибо ПЕ_Килу.. за подсказки, все получилось все процедуры расшифрованы и восстановлены. Имеем дыру на ключах малого размера (или составленного из малого диапазона символов, например чисел) брут 0..FFFF FFFF вариаций менее 12 минут.

Ранг: 137.9 (ветеран)
Статус: Участник

Создано: 10 июня 2011 13:49 New!
Цитата · Личное сообщение · #24

При работе скрипта "Восстановление секции импорта (.idata) в распакованных программах.osc "получаю сообщение на ввод имени функции. Как это исправить или что туда нужно вводить?

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 10 июня 2011 15:44 New!
Цитата · Личное сообщение · #25

yanus0 попробуй на всякий случай CodeDoctor у мну он в автомате аспр распаковывает

Ранг: 137.9 (ветеран)
Статус: Участник

Создано: 10 июня 2011 16:14 New!
Цитата · Личное сообщение · #26

VodoleY
Спасибо, попробую.

Ранг: 14.4 (новичок)
Статус: Участник

Создано: 23 августа 2011 12:00 New!
Цитата · Личное сообщение · #27

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

Ранг: 4.1 (гость)
Статус: Участник

Создано: 27 октября 2011 22:27 New!
Цитата · Личное сообщение · #28

при запуске "Поиск OEP (SBOEP).osc" выдает "Ошибка!!! Программа не остановлена на подпрограмме записи таблицы IAT!" что делать?

а старый скрипт от 01 декабря 2008 ошибки не выдает..

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 28 октября 2011 07:55 New!
Цитата · Личное сообщение · #29

DAKnnn пишет:
при запуске "Поиск OEP (SBOEP).osc" выдает "Ошибка!!! Программа не остановлена на подпрограмме записи таблицы IAT!" что делать?


Сбрось ссылку на программу, я посмотрю, в чем причина ошибки.

| Сообщение посчитали полезным: DAKnnn


Ранг: 1.0 (гость)
Статус: Участник

Создано: 18 февраля 2012 02:45 · Поправил: Lauarvik New!
Цитата · Личное сообщение · #30

на версии ASProtect [1.56 build 03.17], [Alexey Savin] (по информации ASPrINF v1.6 Beta)
некорректно работает скрипт
"Очистка мусорного кода в областях со Stolen Code.osc"
// Дата - 19 февраля 2011
по причине, что первый байт последовательности, типа
#XXEB02CD20# может являться частью предыдущей команды, после замены которого на 0x90, разумеется, херится алгоритм и программа падает.
ЗЫ: если нужен конкретный дистрибутив защищенной программы, могу скинуть в личку ссылку на него.

Ранг: 310.0 (мудрец)
Статус: Модератор
CrackLab

Создано: 18 февраля 2012 03:09 New!
Цитата · Личное сообщение · #31

Lauarvik пишет:
некорректно работает скрипт

дык написано же
"Предупреждение!!! При работе этого скрипта возможно повреждение кода в некоторых инструкциях!" так же может быть полезен плагин CodeDoctor
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >>
 eXeL@B —› Протекторы —› Анализ ASProtect

Видеокурс ВЗЛОМ