Сейчас на форуме: kris_sexy, ==DJ==[ZLO], Wenzel (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› Взлом Delphi компонентов
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 5.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 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]
Думаю многим может пригодится, готовые компоненты для криптования!




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 20 марта 2006 18:16
· Личное сообщение · #2

А для Delphi7 нету чтоли компоненты? Предупреждать надо бы в принципе. Зря качал тока.



Ранг: 5.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2006 18:49
· Личное сообщение · #3

Ara
Есть delphi.icm.edu.pl/ftp/d70share/ASCryptoKit7.zip
Если вдруг, у кого Delphi 5 , то delphi.icm.edu.pl/ftp/d50share/ASCryptoKit5.zip , ну а для 6 я вначале написал!




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 20 марта 2006 19:23
· Личное сообщение · #4

Я так понял, что потом скомпиленный ехе не запускается без Дельфы?

Тогда компилим проект, находим код типа

00451B40 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00451B43 |. F640 1C 10 TEST BYTE PTR DS:[EAX+1C],10
00451B47 |. 75 05 JNZ SHORT Project1.00451B4E

и меняем условный переход на безусловный.
Потом выделяем сигнатуру 8B 45 FC F6 40 1C 10 75 05 и ищем ее в ASCryptoComp.dcu, меняем 75 на ЕВ. Вроде все, на первый взгляд работает.
А компонент неплохой, будем юзать.



Ранг: 5.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2006 19:35
· Личное сообщение · #5

ХМ, после перекомпилирования опять таже фигня!!
И ещё у тебя не вылезает (после некоторого промежутка времени ошибка при компиляции), что не хватает ASCrypto**.pas ??




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 20 марта 2006 19:39
· Личное сообщение · #6

Не, ничего не вылазиет. Откомпилированная прога нормально работает, сделал три проекта на пробу.



Ранг: 5.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2006 19:57
· Личное сообщение · #7

О, точно, малость не там правил!!
Всё ГУд
THANKS




Ранг: 85.7 (постоянный)
Активность: 0.110
Статус: Участник

Создано: 21 марта 2006 14:24
· Личное сообщение · #8

delphi.icm.edu.pl/

Хороший сайт с компонентами. Большое thx.

-----
Я фантомас, а ты гавно




Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 марта 2006 08:48
· Личное сообщение · #9

Есть такой классный компонент для скинования прог как ipSkin Library for Delphi 4-2005.
Ну и как обычно триал
Решил посмотреть чего там за защита. Собрал тестовый проектик в дельфе, закрыл дельфу. Запустил мой тестовик. Тут меня ждала мелкая пакость от разрабтчиков, прога выбросила не мессагу, а окно. Открыл олю и начал смотреть какую функцию зовет функция при старте для создания окна. Оказалось CreateWinndowEx.
Адрес я вычислил, но занопить его не удалось. Прога начала орать на access violation.

Кто может подсказать дальнейший путь?



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 22 марта 2006 09:26
· Личное сообщение · #10

Storm
Хорошо что не привёл километровые листинги, но за отсутствуием прямой ссылки было бы неплохо + умеренно подробное описание действий и проблемы.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 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.



Ранг: 8.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 марта 2006 12:37
· Личное сообщение · #12

Storm, Там наверняка перед этим куча пушей есть для IsDelphiRunning. И при занопе эти пуши остаются в стеке. а там и ret...



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 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;

Можешь подробнее плиз, я еще только начинаю разбираться в крекинге.



Ранг: 8.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 марта 2006 13:39
· Личное сообщение · #14

Объясняю:
Когда вызывается процедура, у неё есть параметры. Параметры передаются в основном через стек. При этом при вызове процедур текущее положение тоже сохраняется в стек и при выходе из процедуры(ret) возвращает в исходную точку.
Тыким образом если ты занопил вызов процедуры, а пуши оставил, то при выходе из текущей процедуры будет выход по последней записи в стеке, а ето - неиспользованный параметр процедуры. Так что надо нопить не только процедуру, но и предшествующие нопы..
Понял?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 22 марта 2006 14:33
· Личное сообщение · #15

А лечше джамп, а еще лучше результат прочедуры проверки.

-----
Yann Tiersen best and do not fuck




Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 марта 2006 16:45
· Личное сообщение · #16

Не получается и вот почему.
В самой процедуре IsDelphiRunning есть пуши, но их ИМХО забивать не зачем (хотя я попробовал, прога начяла вылелать с ошибкой). А в инициализации пушей нет.

Приложил на всяк случай этот файлик.

51df_ipSkinReg.dcu.zip



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 марта 2006 20:41
· Личное сообщение · #17

Мдя, на форуме столько крякеров...
Может создать отдельный топик?



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 22 марта 2006 20:57
· Личное сообщение · #18

Storm пишет:
я попробовал, прога начяла вылелать с ошибкой


Количество нопов соответствуют количеству байтов, что забиваешь нопами?

-----
Все говорят что мы вместе. Но не многие знают в каком.





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 22 марта 2006 21:27 · Поправил: Hellspawn
· Личное сообщение · #19

эх... скачал посмотрел, значит:

function IsDelphiRunning: System.Boolean;
...
begin
00000000 : // -- Line #62 --
00000000 : 53 PUSH EBX
00000000 : // -- Line #70 --
00000001 : 68(00 00 00 00 PUSH T1{0x5D}
00000006 : 68(00 00 00 00 PUSH A1{0x5B}
0000000B : E8(00 00 00 00 CALL FindWindow{0x49}
00000010 : 8B D8 MOV EBX,EAX
00000000 : // -- Line #71 --
00000012 : 6A 00 PUSH $00
00000014 : 68(00 00 00 00 PUSH A2{0x5C}
00000019 : E8(00 00 00 00 CALL FindWindow{0x49}
00000000 : // -- Line #73 --
0000001E : 85 DB TEST EBX{H1},EBX{H1}
00000020 : 74 04 JE +4; (0x26)
00000022 : 85 C0 TEST EAX{H2},EAX{H2}
00000024 : 75 04 JNE +4; (0x2A)
00000026 : 33 C0 XOR EAX{H2},EAX{H2}
00000028 : 5B POP EBX{H1}
00000029 : C3 RET NEAR
0000002A : B0 01 MOV AL{H2},$01
00000000 : // -- Line #75 --
0000002C : 5B POP EBX
0000002D : C3 RET NEAR
end;

ну не запуская ничего, просто предположу... (посмотрим комманду test)

test AX, AX
jz zero ;Переход, если AX=0
jnz notzero ;Переход, если AX не равно 0

скорее всего:

0000001E : 85 DB TEST EBX{H1},EBX{H1}
00000020 : 74 04 JE +4; (0x26) <-- прыжок не должен быть

пропатчить можно разными способами... но я бы сделал так:

это:
00000026 : 33 C0 XOR EAX{H2},EAX{H2} // - обнуление регистра еах
поменял на это:
00000026 : B0 01 MOV AL,1

всё должно работать....

-----
[nice coder and reverser]




Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 23 марта 2006 08:37
· Личное сообщение · #20

Hellspawn пишет:
поменял на это:
00000026 : B0 01 MOV AL,1

А как это будет в hex?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 марта 2006 09:05
· Личное сообщение · #21

Ты чё прикалываешься? Ты же сам написал:
B0 01 MOV AL,1

B0 01 и будет.

-----
Yann Tiersen best and do not fuck





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 23 марта 2006 09:56
· Личное сообщение · #22

Storm пишет:
А как это будет в hex?


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

Storm

попробовал? если не пашет, скажи, хотя всё должно пахать...

-----
[nice coder and reverser]




Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 23 марта 2006 10:07
· Личное сообщение · #23

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

надо еще и за них сделать.



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 23 марта 2006 13:07
· Личное сообщение · #24

Hellspawn пишет:
попробовал? если не пашет, скажи, хотя всё должно пахать...

Попробовал, начала ругаться при сборке компилятор. (внутренняя ошибка).
И еще, у меня на месте
00000026 : 33 C0 есть только 32 00. Может в этом проблема?

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

Ну как я могу прийти к решению не зная полностью основ крекинга? Что я могу, я уже попробовал, поэтому за советом я обратился сюда. И сообщение мое было не "есть супер компонент, хочу его взломать, скажите как сделать". Ведь так? Я хочу разобраться, только и всего, но учитывая уровень моих знаний я просто прошу некоторые места описывать подробнее. Сразу хочу сказать всем, кто хочет помочь или еще что.
Я программист, дельфой занимаюсь уже более 3 лет, есть ряд успешных и продаваемых проектов, в которых я принимал самое непосредственное участие. Около года занимаюсь php, javascript и немного perl.
И вот решил заняться крекингом, так как понадобились некоторые компоненты, но покупать их не хочется.

AngelDance пишет:
надо еще и за них сделать.

Покажи мне пальцем сообщение где я прошу сделать что-то за меня?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 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]




Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 23 марта 2006 13:40
· Личное сообщение · #26

Storm пишет:
Покажи мне пальцем сообщение где я прошу сделать что-то за меня?

Я же в шутку! Ты что смайлика не видел?



Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 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?
Хотя нет, лучше поставлю вопрос по другому, где можно разжиться материалом по асму, но только не для чайников. И собственно вопрос к народу: "А как Вы познавали искусство крекинга?"

Спасибо.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 марта 2006 14:20
· Личное сообщение · #28

Storm пишет:
Какая утилита так обрабатывает код

По моему это Dede.

-----
Yann Tiersen best and do not fuck





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 23 марта 2006 14:49 · Поправил: Hellspawn
· Личное сообщение · #29

PE_Kill пишет:
По моему это Dede.


да ты прав просто под рукой ничё другого не было...
щас тока скачал dcu2pas 1.3, не плохая штучка...

Storm пишет:
Почему именно 33 С0 на B0 01?


я же чуть выше писал, лан щас разжую...

0000001E : 85 DB TEST EBX{H1},EBX{H1} <-- Выполняется сравнение
00000020 : 74 04 JE +4; (0x26) <-- Прыжок выполнится, если EBX = 0
00000022 : 85 C0 TEST EAX{H2},EAX{H2} <-- Выполняется сравнение
00000024 : 75 04 JNE +4; (0x2A) <-- Прыжок выполнится, если EAX <> 0
00000026 : 33 C0 XOR EAX{H2},EAX{H2} <-- Обнуление регистра EAX

теперь смотри... вызывается функция
function IsDelphiRunning: System.Boolean; (Она вернёт 1=true или 0=false)
и вернёт она значение в регистре AL это понятно по коду:

...
call IsDelphiRunning
test al, al
...

значит нам надо сделать, чтобы ф-ия в любом случае возвращала не 0
ну а тут, как фантазии хватит.. я решил пропатчить так:
00000026 : B0 01 MOV AL,1 <-- заносим 1 в регистр AL
теперь надеюсь всё понятно?

-----
[nice coder and reverser]




Ранг: 12.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 23 марта 2006 17:17
· Личное сообщение · #30

Hellspawn пишет:
00000026 : B0 01 MOV AL,1 <-- заносим 1 в регистр AL
теперь надеюсь всё понятно?

Да, ход мыслей понятен, я вообщем-то и так понимал, хотя некоторые вещи после твоего объяснения я понял.
Меня интересует конкретно почему именно B0 01.
01 - это как я понимаю значение, которое мы заносим.
Но почему B0?


. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Взлом Delphi компонентов
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати