gorodOK - твой город в мире форумов

Объявление

Ваша реклама здесь очень недорого! Стучите в ICQ 128-879.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Кракерство

Сообщений 1 страница 3 из 3

1

Всё что нужно иметь кракеру!

Итак, начинаем цикл уроков, посвящённых посвящению ВАС в кракеры.Сегодня я расскажу вам с помощью которых и осуществляется взлом программ.Взлом:РаспаковщикиВсегда перед тем, как приступать к кракингу, в первую очередь проверяют наличие защит и запакован ли файл.Вот что я заметил, изучая различные программы: у недорогих программ ($5-$50), защита намного лучше, чем у дорогих программ знаменитых производителей. Почему так происходит? Я считаю так: программы за 5-50 баксов обычно делают программисты-одиночки или небольшая группа из 2-3 программеров. Как правило, они пакуют проги хотя бы просто так, примитивно. А некоторым (подчеркиваю - некоторым) большим компаниям по софту то ли не охота возиться, то ли нет времени (хотя это всё делается за 5 секунд) закомпрессовать программу. А потом (не часто, правда) идут разбирательства (судебные и др.), а виноваты они сами. Ну, разве я не прав?А каковы причины того, что краки к мощным программам, стоящим несколько сотен (если не тысяч) долларов, появляются аж через несколько часов, после выхода проги? Это случается не только потому, что прога популярна и за неё принимаются всеми усилиями, но и потому, что компания, выпустившая её, даже не позаботилась о её безопасности.Как это ни удивительно, но многие программисты даже не знают, что такое запаковщик и как сжать программу.Ну ладно. Что делать, когда программа упакована? Распаковать, но сначала надо знать, чем она была упакована. Есть программы, которые делают сразу всё - определяют, как была прога упакована, дают советы, и даже предлагают сами распаковать. Но обычно после выхода очередной версии какого-нибудь упаковщика, такие распаковщики меняют и добавляют дополнительные функции в свой состав и бедным кракерам (уфф, надоел этот Ворд, одни только красные подчёркивания) приходится ради этого качать все 5 Мегабайт этой проги.Так что обычно используют несколько маленьких программ: одна определяет, другая распаковывает и т. д.Вот несколько распаковщиков: UN PACK, ProcDump 32.А вот программы, которые могут определить, как упакована прога: File Analyzer, GetTyp. Насчёт Fale Analyzer'а: Я часто в форумах вижу (да и пару раз мне на e-mail писали) сообщения: "Я скачал FA, а после запуска он не работает. Пишет, что не найден FA.DAT." Возможно вы столкнётесь с такой же проблемой, которая по сути совсем не является проблемой. На самом деле всё в порядке, просто программа написана под DOS и когда вы в "Винде" перетаскиваете на программу какой-нибудь файл она выдаёт ошибку. Чтобы FA корректно работала надо передавать ей параметры в режиме DOS. Лично я работаю в режиме в FAR'е и вам советую. Просто пишете "fa " в командной строке.Такие проги, как FA могут многое определить. А есть и конкретные утилиты (вас может, например, интересовать лишь то, компилирована ли программа в VB или нет. К примеру это может быть прога Visual Basic Detector (можно скачать с этого сайта). Первая версия программы проверяет компиляцию VB 6.x аж на 16 параметров. То есть ошибок точно не будет. Причём в следующих версиях будет ещё более тщательная проверка, а возможно даже проверка будет осуществляться не только на VB 6-ой версии. Вобщем следите за новинками серии.Защита: Упаковщики, компрессоры
Ну а как упаковать свою прогу? Компрессором. Я использую ASPack. В описании говорится, что это 100% защита от декомпиляции, но это, смотря как понимать. Конечно декомпилировать (Ворд даже этого слова не понимает) запакованную программу нельзя, но если прогу распаковать, то всё пойдёт как по маслу.Но больше всего мне нравится UPX, несмотря на то, что общение с ним происходит на первобытном уровне - с помощью командной строки (опять же лучше использовать FAR) - он позволяет задавать многие параметры. Можно задавать уровень компрессии (а уровней 9 не включая "--best"), причём чем компрессия лучше, тем дольше файл будет сжиматься. Но кроме всего это у него есть параметр, который особенно пригодится для кракера - это декомпрессия, то есть можно декомпрессировать прогу, если знать, что она упакована в UPX. Вообще UPX - это целый клад. На изучение одного только хэлпа уйдёт пол дня. Есть также версия под пингвин, для поклонников Торвальдса.Взлом: Редакторы бинарных файловНу, куда ж без них-то? Наиболее популярны HexIt (HexIt- значит просмотр в Hex) и Hiew. Конечно, таких программ немало и каждая имеет свои достоинства и недостатки. С помощью таких прог, можно редактировать двоичные файлы. Советую вам скачать эти программы.В редакторах читают и находят необходимые и интересующие вас моменты, а потом сохраняют изменения. Затем надо сгенерировать исполняемый крак. Все мы уже привыкли к кракам в виде EXE (все мы ими пользовались и пользуемся). Это программы, которые сами изменят всё необходимое в проге-жертве. Конечно, я говорю про те краки, которые мы будем делать для людей, т. к. если мы просто ломаем для себя чью-то программу нам все эти прибамбасы ни к чему.Взлом: Генераторы краковПосле того, как вы изменили всё необходимое (о том, как вносить изменения мы ещё с вами поговорим) нужно создать сам крак. Конечно, и созданием самого крэка, теперь уже занимаются специальные программы. Вот 2 самые, на мой взгляд, лучшие: PGPE и Crack Comp. Все генераторы патчей хороши и нельзя сказать, какая самая лучшая.Думаю пока хватит. В следующем уроке мы расскажем о редакторах ресурсов и про то, как русифицировать прогу с помощью нихМожет быть, было бы разумнее поместить все описанные в этом уроке программы на сайт, чтобы вы могли всё это скачать, но напишите в любом поисковике название проги и вы получите 200 ссылок на последние версии кракерских программ.Как, оказывается, полезно писать статьи в Ворде - он уже научился половине моего жаргона, скоро сам будет предлагать варианты :).

0

2

Каму нужна информация по крэкингу прошу стучите мне пришлю архивик с книжечкой в которой подробненько расписывается как что где и когда!!!!!!!!!!!

0

3

Keygen для начинающих

#c4n crackme #3 - http://c4nprojects.cjb.net

Инструментарий

SoftIce v4.xx
IDA v4.xx
мозги :)
ВСТУПЛЕНИЕ
Этот крякмис является очередным из серии заданий для новичков проекта Cracking 4 Newbies - IRC (EFNet) at #cracking4newbies. Задание таково: объяснить, как генерируется серийный номер и написать кейген.

ИССЛЕДОВАНИЕ
Итак, рассмотрим этот простой кpякмис, сделанный специально для начинающих. Запустим его и посмотрим: программа просит ввести Имя/Name и Код/Registration. Введем что-либо, например cr0AKer и 99999999 и нажмем ОК. Wrong number - говорит нам она. То есть "неправильно набран номер" :) Жмем снова ОК, и мы снова в стартовой позиции. Ладно, запустим SoftIce (Ctrl-D) и поставим бpяк:

bpx getdlgitemtexta

Почему этот? Ну, просто потому, что getwindowtexta не срабатывает ;) Жмем 'Ok' снова и выпадаем в отладчик, F12 для выхода в вызывающую процедуру:
.......
.......
0040107B push 32h ; max длина имени 49 символов:
0040107D push edx ; 31h+1
0040107E push 3E8h
00401083 push ebx

Вот как pаз наша пpоцедypа:

>00401084 call ds:GetDlgItemTextA ; Считываем имя

А попадаем мы вот сюда:

>0040108A test eax, eax ; Проверяем, введено ли хоть что-то.
0040108C jnz short loc_4010AA ; Введено
0040108E push eax

Если бы мы не ввели имя, то перешли бы на нижеследующий код, где y нас спросили бы, а есть ли y нас, вообще, имя-то? ;))

0040108F push offset aNoName ; "No name!"
00401094 push offset aDonTYouHaveANa ; "Don't you have a name?!"
00401099 push ebx
0040109A call ds:MessageBoxA

Поскольку имя введено, то мы переходим на следующий участок кода:
004010AA loc_4010AA: ; CODE XREF: sub_401000+8Cj
Вот сюда:

>004010AA xor esi, esi ; esi=0
004010AC push edi
004010AD xor edx, edx ; edi=0

Здесь производится суммирование hex - значений символов имени и вычисляется его длина:

004010AF Name: ; CODE XREF: sub_401000+C6j

004010AF movsx eax, byte ptr [ebp+edx-40h] ; символ имени
004010B4 add esi, eax ; суммируем символы имени
004010B6 lea edi, [ebp+var_40] ; edi=offset 'cr0AKer'
004010B9 or ecx, 0FFFFFFFFh
004010BC xor eax, eax
004010BE inc edx ; N символов
004010BF repne scasb ; ищем конец строки 'cr0AKer'
004010C1 not ecx
004010C3 dec ecx ; N символов
004010C4 cmp edx, ecx ; Все ли символы?
004010C6 jbe short Name ; Не все
004010C8 mov [ebp+arg_0], esi ; Сохраним сумму

В нашем случае сумма равна esi=268h
Далее производится операция сдвига над посчитанной суммой:

004010CB shl [ebp+arg_0], 7 ;

В нашем случае получим shl 268h, 7h = 13400h
Теперь производится считывание введенного нами кода:

004010CF lea ecx, [ebp+var_C] ; подготовка к
004010D2 push 0Ah ; считыванию
004010D4 push ecx ; введенного
004010D5 push 3E9h ; кода (max= 0Ah - 1 символов)
004010DA push ebx
004010DB call ds:GetDlgItemTextA ; считываем
004010E1 test eax, eax ; Есть код?
004010E3 pop edi
004010E4 jnz short loc_401102 ; Есть

Если бы программа не обнаружила бы введенный код, то она бы перешла на следующий участок кода и сказала бы все, что она дyмает. ;)

004010E6 push eax
004010E7 push offset aNoSerial ; "No serial!"
004010EC push offset aNoSerialNumber ; "No serial number entered!"
004010F1 push ebx
004010F2 call ds:MessageBoxA

Но поскольку мы, не будь дураки, ввели код, то нас препроводят в другое место, а именно сюда:

00401102 loc_401102: ; CODE XREF: sub_401000+E4j

Что же мы здесь видим? А видим мы следующее: наш введенный код преобразовывается при помощи стандартной С'шной функции _atoi (ASCII-->int) в целое число, которое возвращается в eax:

00401102 lea edx, [ebp+var_C] ; edx=offset '99999999'
00401105 push edx
00401106 call _atoi ; 'Code' ASCII --> int

В eax сейчас преобразованный код, который в нашем случае равен 05F5E0FFh.
А далее мы подходим к финальной части - сравнению. Hо сначала еще надо подготовить одно из сравниваемых значений:
Берется значение, полученное после операции сдвига над суммой hex-значений символов нашего имени и складывается с самой суммой, которое y нас до сих пор хранится в esi. Во как. :)

0040110B mov ecx, [ebp+arg_0] ; преобразованное 'cr0AKer'
0040110E add esp, 4
00401111 add ecx, esi ; складываем

В нашем случае оно будет равно ecx = 13668h
Вот и все! Теперь сравниваем и видим, что, естественно, значения не совпадают ;)

00401113 cmp ecx, eax ; Сравнение
00401115 push 0
00401117 jnz short loc_401134 ; Если равно, то Ок!
00401119 push offset aGood ; "Good!"
0040111E push offset aCongratulation ; "Congratulations!!"
00401123 push ebx
00401124 call ds:MessageBoxA

В нашем слyчае 13668h, конечно, не равно 05F5E0FFh.

ПИШЕМ КЕЙГЕН
Итак, приступим к решению. Что мы знаем?
Что из символов введенного имени высчитывается определенное число, которое равно результату сдвига влево hex-сyммы каждого hex-значения символа нашего имени. Что это определенное число должно быть равно значению, полученному путем преобразования введенного кода из ASCII-стpоки в целое.
Вот и все! Все, что нам нужно - это взять наше имя, произвести над ним операцию, описанную в пункте 1) и преобразовать его из _целого_в_ASCII_. Таким образом мы и получим код, соответствующий нашему имени. В общем, на нормальном :) языке это называется pевеpснyть (от слова reverse) алгоритм.
Тепеpь мы можем написать кейген, как того от нас требует задание. Если вы хотите взглянуть на исходник моего, то можете посмотреть его в этом архиве, который заодно включает и сам туториал. Претензии по качеству кода не принимаются (может и кривовато, но работает ;)):

0