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

•  DeLiKaTeS Tetris (Тетрис)  275

•  TDictionary Custom Sort  3 425

•  Fast Watermark Sources  3 175

•  3D Designer  4 935

•  Sik Screen Capture  3 429

•  Patch Maker  3 633

•  Айболит (remote control)  3 834

•  ListBox Drag & Drop  3 097

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

•  Графические эффекты  4 035

•  Рисование по маске  3 331

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

•  Canvas Drawing  2 844

•  Рисование Луны  2 658

•  Поворот изображения  2 270

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

•  Paint on Shape  1 607

•  Генератор кроссвордов  2 288

•  Головоломка Paletto  1 806

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

•  Пазл Numbrix  1 708

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

•  Игра HIP  1 304

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

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

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

•  Генератор лабиринта  1 574

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

•  HEX View  1 524

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

 
скрыть


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-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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