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

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

•  TDictionary Custom Sort  3 381

•  Fast Watermark Sources  3 136

•  3D Designer  4 893

•  Sik Screen Capture  3 389

•  Patch Maker  3 592

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

•  ListBox Drag & Drop  3 059

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

•  Графические эффекты  3 991

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

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

•  Canvas Drawing  2 803

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

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

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

•  Paint on Shape  1 583

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

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

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

•  Пазл Numbrix  1 696

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

•  Игра HIP  1 293

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

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

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

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

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

•  HEX View  1 508

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

 
скрыть


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

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



Delphi Sources

Новая фишка для любителей Asprotect


Автор: Hex

Ковырял я когда-то PowerStrip. Распаковал, все ок, только одна мелочь - не вылазит popup menu на иконки в трэе. Я и так и эдак - не нашел в чем глюк. Но вот попалась мне в руки прога Advanced Administrative tools которая пролила свет на эту тайну...

Если распаковать Aatools(там новый аспр который кусок кода в себе зажал), прога будет работать, тока где не нажмешь "Start" будет вылетать то "Invalid Pointer", то еще какой-то другой мат. Сел я разбираться и нашел вот такое интересное место:


seg000:006FFF03 push ebp
seg000:006FFF04 push offset loc_0_6FFF25
seg000:006FFF09 push dword ptr fs:[eax]
seg000:006FFF0C mov fs:[eax], esp
seg000:006FFF0F push offset loc_0_4079F8 - Это адрес jmp GetStartupInfoA
seg000:006FFF14 mov eax, ds:dword_0_713048
seg000:006FFF19 call eax ; sub_0_70BD88
...............

seg001:0070BD88 pop ebx
seg001:0070BD89 pop eax - Это адрес jmp GetStartupInfoA
seg001:0070BD8A mov eax, [eax+2] - сдвигаемся на 2 байта чтоб пропустить опкод jmp
seg001:0070BD8D mov eax, [eax] - читаем адрес операнда jmp (т.е. адрес в таблице импорта)
seg001:0070BD8F push dword ptr [eax] - сохраняем в стэк 4 байта 
seg001:0070BD91 pop dword ptr [eax] - пишем эти байты туда откуда взяли
seg001:0070BD93 jmp ebx

И чо оно такое творит? Если аспротект есть то push dword ptr [eax] сохраняет в стэк первые 4 байта переходника к апи GetStartupInfoA. Дальше по команде pop dword ptr [eax] ничего страшного не произойдет, т.к. в область памяти где лежат переходники аспротекта можно писать. Но что произойдет если аспротекта нет? Команда push dword ptr [eax] сохранит в стэк первые 4 байта апи GetStartupInfoA. А потом при pop dword ptr [eax] попытается записать данные в kernel32.dll... ОС такое не прощает :) Вот так то. Как бороться? Занопить push dword ptr [eax] и pop dword ptr [eax]. Это еще не все! Для того чтобы, мы немножко еще мозги понапрягали таких мест несколько и они динамически раскриптовываются по хитрющему алгоритму "-x +x" :) Вот к примеру "раскриптовка":


seg000:00664245 mov eax, [ebp+var_C]
seg000:00664248 sub byte ptr ds:unk_0_711BAF[eax], 2 (побайтно -2)
seg000:0066424F inc [ebp+var_C]
seg000:00664252 cmp [ebp+var_C], 0Eh
seg000:00664256 jnz short loc_0_664245
seg000:00664258 xor eax, eax

Ну это понятно:


seg000:0066425A push ebp
seg000:0066425B push offset loc_0_66427C
seg000:00664260 push dword ptr fs:[eax]
seg000:00664263 mov fs:[eax], esp
seg000:00664266 push offset loc_0_407A60
seg000:0066426B mov eax, offset unk_0_711BB0
seg000:00664270 call eax ; unk_0_711BB0 - тут опять проверяет импорт

Закриптовка:


seg000:006642A3 mov eax, [ebp+var_C]
seg000:006642A6 add byte ptr ds:unk_0_711BAF[eax], 2 (побайтно +2)
seg000:006642AD inc [ebp+var_C]
seg000:006642B0 cmp [ebp+var_C], 0Eh
seg000:006642B4 jnz short loc_0_6642A3

Ну тут придется в закриптованном куске сделать не 90909090 а 92929292 :)

В PowerStrip 3.29 имеется вот такое


seg000:0050D1A7 mov eax, offset loc_0_53F1D4
seg000:0050D1AC 
seg000:0050D1AC loc_0_50D1AC: ; CODE XREF: seg000:0050D1B0j
seg000:0050D1AC dec byte ptr [eax]
seg000:0050D1AE inc eax
seg000:0050D1AF dec ebx
seg000:0050D1B0 jnz short loc_0_50D1AC

А тут - 91919191 :) Как только тут подправим - сразу и popup вылазит и "Полезные советы"...

Дыр-дыр-дыр, занавес и аплодисменты.





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

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

Кувшины для воды

 

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

ASProtect Crypt Shareware




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

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