Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 455

•  TDictionary Custom Sort  5 651

•  Fast Watermark Sources  5 416

•  3D Designer  7 875

•  Sik Screen Capture  5 712

•  Patch Maker  6 204

•  Айболит (remote control)  6 212

•  ListBox Drag & Drop  5 084

•  Доска для игры Реверси  94 133

•  Графические эффекты  6 380

•  Рисование по маске  5 437

•  Перетаскивание изображений  4 590

•  Canvas Drawing  4 978

•  Рисование Луны  4 708

•  Поворот изображения  4 254

•  Рисование стержней  2 997

•  Paint on Shape  2 226

•  Генератор кроссвордов  3 080

•  Головоломка Paletto  2 421

•  Теорема Монжа об окружностях  3 206

•  Пазл Numbrix  2 105

•  Заборы и коммивояжеры  2 746

•  Игра HIP  1 723

•  Игра Go (Го)  1 640

•  Симулятор лифта  1 965

•  Программа укладки плитки  1 692

•  Генератор лабиринта  2 128

•  Проверка числового ввода  1 815

•  HEX View  2 085

•  Физический маятник  1 814

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Новый ASProtect в EldoS TimelyWeb


Дождались... Радуйтесь! Вот оно :)

Новые фичи:

  • Изначально IAT загажена мусором, а помере создания импорта некоторые части этого мусора заменяются на нормальные адреса.
  • Переходники к апи теперь имеют вид похожий на Starforce.
  • Статические АПИ(ну типа у которых возвращаемое значение одинаковое) теперь имеют другой вид.
  • Часть кода первоначальной проги(от OEP до первого CALL) забирается в код аспротекта. Т.е. в дампе там 00 00 ...

Как вывод из 1) - "Iat autosearch" даст неправильные результаты; вывод из 2) и 3) - апи не определяются. Ну и фиг с ним :)

Чтоб не было мусора нужно просто забить нолями секцию импорта перед тем как аспротект начнет туда писать адреса апи. Чтобы не долбаться с восстановлением апи сделаем похитрому :) Если посидеть и подолбаться то можно поставив bpr на секцию импорта увидеть место, где аспротект подменяет адрес реальной апи на адрес своего переходника, а потом пишет адрес переходника в импорт. Вот расскрою военную тайну о том как найти такое место :) Все как обычно: bpx mapviewoffile и потом bpx getprocaddress. После первого срабатывания bpx getprocaddress жмем 3 раза F12. Видим вот такое дело:


Mov EAX, [EBP+C]
Push EAX
Call xxxxxx - мы выйдем отсюда, в EAX будет адрес реального апи
Call yyyyyy - Тут идет создание переходника и в EAX возвращается адрес переходника.
Mov EDX, [EDI]
Mov [EDX], EAX - записываем в IAT адрес переходника

Таким образом если занопить Call yyyyyy то Mov [EDX], EAX будет заполнять IAT адресами реальных апи :) Но если все вот так и бросить, то аспротект рухнет после создания импорта т.к. он блюдет целостность своего кода :) Поэтому после создания импорта надо все вернуть наместо(т.е. нопы вернуть на родину). Таким образом мы получим практически полный импорт. Будет не хватать 9 функций 2 повторяются итого 7. Эти функции можно легко определить вручную(также как Kola делал), А.С. не сильно их изменил.

Вот они:


1 0022D244 kernel32.dll 01A3 GetProcAddress *
1 0022D248 kernel32.dll 018D GetModuleHandleA
1 0022D258 kernel32.dll 0149 GetCommandLineA
1 0022D3B0 kernel32.dll 023E LockResource
1 0022D3F8 kernel32.dll 01DC GetVersion
1 0022D418 kernel32.dll 01A3 GetProcAddress *
1 0022D420 kernel32.dll 018D GetModuleHandleA
1 0022D44C kernel32.dll 015B GetCurrentProcessId
1 0022D45C kernel32.dll 0135 FreeResource

* - ну почти, тут как обычно есть добавка для получении имени юзера и дней триала. OEP находим как обычно через BPR, тока тут оно сработает не перед прыжком на oep, а на тех байтах которые аспр спер у проги :)

Типа так:


015F:00EA66A3 CALL 00EA66A8 - тут bpr сработает.
015F:00EA66A8 POP EBP
015F:00EA66A9 SUB EBP,00496FBD
015F:00EA66AF LEA ECX,[EBP+00496FD1]
015F:00EA66B5 ADD ECX,EBX
015F:00EA66B7 MOV [ECX+01],EAX
015F:00EA66BA JMP 00EA66BC
015F:00EA66BC PUSH EBP *
015F:00EA66BD MOV EBP,ESP *
015F:00EA66BF ADD ESP,-0C *
015F:00EA66C2 PUSH EBX *
015F:00EA66C3 PUSH ESI *
015F:00EA66C4 PUSH EDI *
015F:00EA66C5 MOV EAX,0062167C *
015F:00EA66CA PUSH 90909090 - это выход к OEP, пока что тут NOP
015F:00EA66CF RET

* - то что должно быть в начале проги.

Входим в CALL 00EA66A8 и у JMP 00EA66BC команда PUSH 90909090 превратится в PUSH 00621E22. Т.е. OEP почти 621E22 :) Нужно только дописать байты из аспра в дамп с адреса 621E14. Там как раз ноли идут и ждут когда их вернут на родину. Т.е. OEP = 621E14. Дамп брать нужно также как я говорил в предидущих статьях.

Вот в принципе и весь новый аспр.





Похожие по теме исходники

Новый Сапер

ASProtect Crypt Shareware




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте