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

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

•  TDictionary Custom Sort  3 340

•  Fast Watermark Sources  3 093

•  3D Designer  4 849

•  Sik Screen Capture  3 348

•  Patch Maker  3 554

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

•  ListBox Drag & Drop  3 016

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

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

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

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

•  Canvas Drawing  2 754

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

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

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

•  Paint on Shape  1 569

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

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

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

•  Пазл Numbrix  1 685

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

•  Игра HIP  1 282

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

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

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

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

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

•  HEX View  1 497

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

 
скрыть


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

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