| Сейчас на форуме: kris_sexy, ==DJ==[ZLO], Wenzel (+4 невидимых) | 
| eXeL@B —› Крэки, обсуждения —› Взлом Delphi компонентов | 
| . 1 . 2 . >> | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 20 марта 2006 17:53 · Поправил: Модератор  · Личное сообщение · #1 Всем Привет! народ, кто-нить ломал shareware компоненты для Delphi ?? Если да, то счего начинать? Или быть может кто бы глянул да посоветовал, был бы очень благодарен!! [url=http://delphi.icm.edu.pl/ftp/d60share/ASCryptoKit6.zip ]http://delphi.icm.edu.pl/ftp/d60share/ASCryptoKit6.zip [/url] Думаю многим может пригодится, готовые компоненты для криптования! ![]()  | 
| 
 | 
Создано: 20 марта 2006 18:16  · Личное сообщение · #2  | 
| 
 | 
Создано: 20 марта 2006 18:49  · Личное сообщение · #3  | 
| 
 | 
Создано: 20 марта 2006 19:23  · Личное сообщение · #4 Я так понял, что потом скомпиленный ехе не запускается без Дельфы? Тогда компилим проект, находим код типа 
и меняем условный переход на безусловный. Потом выделяем сигнатуру 8B 45 FC F6 40 1C 10 75 05 и ищем ее в ASCryptoComp.dcu, меняем 75 на ЕВ. Вроде все, на первый взгляд работает. А компонент неплохой, будем юзать.  
![]()  | 
| 
 | 
Создано: 20 марта 2006 19:35  · Личное сообщение · #5  | 
| 
 | 
Создано: 20 марта 2006 19:39  · Личное сообщение · #6  | 
| 
 | 
Создано: 20 марта 2006 19:57  · Личное сообщение · #7  | 
| 
 | 
Создано: 21 марта 2006 14:24  · Личное сообщение · #8  | 
| 
 | 
Создано: 22 марта 2006 08:48  · Личное сообщение · #9 Есть такой классный компонент для скинования прог как ipSkin Library for Delphi 4-2005. Ну и как обычно триал  
Решил посмотреть чего там за защита. Собрал тестовый проектик в дельфе, закрыл дельфу. Запустил мой тестовик. Тут меня ждала мелкая пакость от разрабтчиков, прога выбросила не мессагу, а окно. Открыл олю и начал смотреть какую функцию зовет функция при старте для создания окна. Оказалось CreateWinndowEx. Адрес я вычислил, но занопить его не удалось. Прога начала орать на access violation. Кто может подсказать дальнейший путь? ![]()  | 
| 
 | 
Создано: 22 марта 2006 09:26  · Личное сообщение · #10  | 
| 
 | 
Создано: 22 марта 2006 10:33  · Личное сообщение · #11 www.rhostyle.com/Files/ipSkinD.zip ~ 2,87 Мб - для дельфы, но на сайте есть еще для билдера. Ну а что особо описывать. при помощи dcu2pas нашел место проверки в файле ipSkinReg.dcu: asm @@0: sub dword ptr [_DOT_1],1 @@7: jnc @@23 @@9: call IsDelphiRunning @@14: test al,al @@16: jne @@23 @@18: call ShowAboutBox end; Открыл hview и нашел последовательность E9 00 00 00 00 EB F8 5D C3 (подсказала dcu2pas). Нашел эти 6 строк 730E E80000 0000 84С0 7505 E80000 Попытался забить нопами E80000 -> 90 90 90 Пересобрал пакет и скопмилил программу. В результате прога начала бросаться runtime error. ![]()  | 
| 
 | 
Создано: 22 марта 2006 12:37  · Личное сообщение · #12  | 
| 
 | 
Создано: 22 марта 2006 13:01  · Личное сообщение · #13 TeruS Да, есть: asm @@0: push ebx @@1: push offset @@0 @@6: push offset @@0 @@11: call FindWindow @@16: mov ebx,eax @@18: push +0 @@20: push offset @@0 @@25: call FindWindow @@30: test ebx,ebx @@32: je @@38 @@34: test eax,eax @@36: jne @@42 @@38: xor eax,eax @@40: pop ebx { 0: B0 01 5B C3 °.[Г } end; Можешь подробнее плиз, я еще только начинаю разбираться в крекинге. ![]()  | 
| 
 | 
Создано: 22 марта 2006 13:39  · Личное сообщение · #14 Объясняю: Когда вызывается процедура, у неё есть параметры. Параметры передаются в основном через стек. При этом при вызове процедур текущее положение тоже сохраняется в стек и при выходе из процедуры(ret) возвращает в исходную точку. Тыким образом если ты занопил вызов процедуры, а пуши оставил, то при выходе из текущей процедуры будет выход по последней записи в стеке, а ето - неиспользованный параметр процедуры. Так что надо нопить не только процедуру, но и предшествующие нопы.. Понял? ![]()  | 
| 
 | 
Создано: 22 марта 2006 14:33  · Личное сообщение · #15  | 
| 
 | 
Создано: 22 марта 2006 16:45  · Личное сообщение · #16 Не получается и вот почему. В самой процедуре IsDelphiRunning есть пуши, но их ИМХО забивать не зачем (хотя я попробовал, прога начяла вылелать с ошибкой). А в инициализации пушей нет. Приложил на всяк случай этот файлик.   51df_ipSkinReg.dcu.zip
![]()  | 
| 
 | 
Создано: 22 марта 2006 20:41  · Личное сообщение · #17  | 
| 
 | 
Создано: 22 марта 2006 20:57  · Личное сообщение · #18  | 
| 
 | 
Создано: 22 марта 2006 21:27 · Поправил: Hellspawn  · Личное сообщение · #19 эх... скачал посмотрел, значит: 
ну не запуская ничего, просто предположу... (посмотрим комманду test) 
скорее всего: 
пропатчить можно разными способами... но я бы сделал так: 
всё должно работать.... ----- [nice coder and reverser] ![]()  | 
| 
 | 
Создано: 23 марта 2006 08:37  · Личное сообщение · #20  | 
| 
 | 
Создано: 23 марта 2006 09:05  · Личное сообщение · #21  | 
| 
 | 
Создано: 23 марта 2006 09:56  · Личное сообщение · #22  | 
| 
 | 
Создано: 23 марта 2006 10:07  · Личное сообщение · #23  | 
| 
 | 
Создано: 23 марта 2006 13:07  · Личное сообщение · #24 Hellspawn пишет: попробовал? если не пашет, скажи, хотя всё должно пахать... Попробовал, начала ругаться при сборке компилятор. (внутренняя ошибка). И еще, у меня на месте 00000026 : 33 C0 есть только 32 00. Может в этом проблема? Hellspawn пишет: я в шоке всё людям распишешь, так они не хотят никакую умственную работу делать Ну как я могу прийти к решению не зная полностью основ крекинга? Что я могу, я уже попробовал, поэтому за советом я обратился сюда. И сообщение мое было не "есть супер компонент, хочу его взломать, скажите как сделать". Ведь так? Я хочу разобраться, только и всего, но учитывая уровень моих знаний я просто прошу некоторые места описывать подробнее. Сразу хочу сказать всем, кто хочет помочь или еще что. Я программист, дельфой занимаюсь уже более 3 лет, есть ряд успешных и продаваемых проектов, в которых я принимал самое непосредственное участие. Около года занимаюсь php, javascript и немного perl. И вот решил заняться крекингом, так как понадобились некоторые компоненты, но покупать их не хочется. AngelDance пишет: надо еще и за них сделать. Покажи мне пальцем сообщение где я прошу сделать что-то за меня? ![]()  | 
| 
 | 
Создано: 23 марта 2006 13:30  · Личное сообщение · #25 Storm пишет: 00000026 : 33 C0 есть только 32 00. Может в этом проблема? че за бред? я ломал 51df_ipSkinReg.dcu.zip - тот что ты приатачил.... хахаха... я понял в чём проблема....   эх ты...
00000026 <-- это смещение, не относительно начала файла, а относительно начала процедуры! а в файле, пропатч по адрессу 00000846: 33 С0 поменяй на B0 01 ----- [nice coder and reverser] ![]()  | 
| 
 | 
Создано: 23 марта 2006 13:40  · Личное сообщение · #26  | 
| 
 | 
Создано: 23 марта 2006 14:14  · Личное сообщение · #27 Hellspawn пишет: а в файле, пропатч по адрессу 00000846: 33 С0 поменяй на B0 01 Да, точно. Все заработало! AngelDance пишет: Я же в шутку! Ты что смайлика не видел? Видел, но все равно, не люблю, когда меня за полного ламера считают. Спасибо большой всем, кто помогал и наставлял в процессе взлома! Но особенно Hellspawn. Собственно он этот компонент и взломал! Спасибо большое! Только у меня пара чисто познавательских вопроса. 1) Какая утилита так обрабатывает код: function IsDelphiRunning: System.Boolean; ... begin 00000000 : // -- Line #62 -- 00000000 : 53 PUSH EBX 00000000 : // -- Line #70 -- 2) Почему именно 33 С0 на B0 01? Хотя нет, лучше поставлю вопрос по другому, где можно разжиться материалом по асму, но только не для чайников. И собственно вопрос к народу: "А как Вы познавали искусство крекинга?" Спасибо. ![]()  | 
| 
 | 
Создано: 23 марта 2006 14:20  · Личное сообщение · #28  | 
| 
 | 
Создано: 23 марта 2006 14:49 · Поправил: Hellspawn  · Личное сообщение · #29 PE_Kill пишет: По моему это Dede. да ты прав   просто под рукой ничё другого не было...  
щас тока скачал dcu2pas 1.3, не плохая штучка... Storm пишет: Почему именно 33 С0 на B0 01? я же чуть выше писал, лан щас разжую... 
теперь смотри... вызывается функция function IsDelphiRunning: System.Boolean; (Она вернёт 1=true или 0=false) и вернёт она значение в регистре AL это понятно по коду: 
значит нам надо сделать, чтобы ф-ия в любом случае возвращала не 0  
ну а тут, как фантазии хватит.. я решил пропатчить так: 00000026 : B0 01 MOV AL,1 <-- заносим 1 в регистр AL теперь надеюсь всё понятно? ----- [nice coder and reverser] ![]()  | 
| 
 | 
Создано: 23 марта 2006 17:17  · Личное сообщение · #30 Hellspawn пишет: 00000026 : B0 01 MOV AL,1 <-- заносим 1 в регистр AL теперь надеюсь всё понятно? Да, ход мыслей понятен, я вообщем-то и так понимал, хотя некоторые вещи после твоего объяснения я понял. Меня интересует конкретно почему именно B0 01. 01 - это как я понимаю значение, которое мы заносим. Но почему B0? ![]()  | 
| . 1 . 2 . >> | 
| eXeL@B —› Крэки, обсуждения —› Взлом Delphi компонентов | 




 delphi.icm.edu.pl/ftp/d70share/ASCryptoKit7.zip






 
 всё людям распишешь, так они не хотят никакую умственную работу делать 

надо еще и за них сделать.
 эх ты...
 Для печати