Защита от редактирования ресурсов и форм и вообще EXE

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 11.02.2006 (Сб) 19:37

Давно не заходил. Как я погляжу, на всяких кряклабах и васмах народ оказался весьма ленивый :)

Wild VB Code for Food писал(а):хм...отучить прогу от проверки мне удалось, правда частично....те он проверяет, градиент выдаёт, только мессага всёравно выскакивает :?

Так удалось или нет? Что значит в твоем понимании отучить, чтобы работала без файла или изменить название кнопки или ее размер и местороложение?

Twister писал(а):У меня пока результатов почти нет.
Вся фишка в вызове функции CallByName. С ее помощью вызывается процедура отрисовки синего фона и проверки (так мне кажется). И вся загвоздка в том, что отладчик (Olly, WDASM) у меня не хочет ставить бряки, точнее выдает непонятную ошибку. И я не могу отследить адрес вызываемой процедуры...

Насчет проблем в отладчике, хочу понять, это заслуга проги или самого VB?

AjaxVS писал(а):В общем, в данном случае защита оказалась не достаточно хорошей. В смысле, если бы автор зашифровал все строки, было бы еще труднее взломать... Но и сейчас - я остановился в пяти байтах от цели - зная адрес функции wertqwerkut, я бы эту защиту добил... Но пока что, увы, не могу =(

Ну дык первое что пришло в голову и вообще первая моя попытке на поприще защиты, скоро продукт выпускать, а навесную защиту покупать накладно, тем более что ее все равно сломают. Так хоть свою сделаю, интересно и бесплатно :)
Скажи, что значит если бы зашифровал все строки, что ты имеешь в виду?

Twister писал(а):Если глянуть в таблицу импорта проги, то видна функция Rgb из msvbvm. Она вызывается в проге всего один раз и как раз из процедуры wertqwerkut и используется для преобразования цвета (так как Pantalone рисует градиент ручками). Перейди туда, и ты окажешься прямо в "сердце" wertqwerkut...

Ну да, функция-то считай всего одна. Как думаешь, если бы их было сотня, легко было бы ее найти?

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 12.02.2006 (Вс) 1:37

>Скажи, что значит если бы зашифровал все строки, что ты имеешь в виду?
Я имел ввиду, что неплохо бы строки спрятать от отладчиков типа OllyDbg, SoftIce etc..
Приведу примитивный пример:
Было:
s="wertqwerkut"
Стало:
s=Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h74) & Chr$(&h71) & Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h6B) & Chr$(&h75) & Chr$(&h74)

Хотя бы так... Но лучше эти цифры еще нактрутить на несколько занавесок +_+

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 12.02.2006 (Вс) 19:17

Насчет проблем в отладчике, хочу понять, это заслуга проги или самого VB?

Если б я знал... :lol:
А я все практикую лечение травами...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.02.2006 (Пн) 16:01

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

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.02.2006 (Пн) 16:01

Кто-нить шарит в С, как это сделано и как обойти? :)

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 13.02.2006 (Пн) 20:55

Да уж... :shock: А я и не додумался с этой стороны подойти. Да, diamond шарит... :lol: А метод действительно изящный...
А я все практикую лечение травами...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.02.2006 (Пн) 21:08

Twister
Для тех кто в танке, что за метод-то собственно?

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 14.02.2006 (Вт) 1:28

Млин, ну какой это "изящный метод", епта... =( Это давно известный "гордиев узел".
А я уж было размечтался, что защиту действительно обошли...
Прочитал его "способ", даже прогу не стал качать - и так стало ясно...

Способ его схож со способом устранения ошибок в Windows Media Player - т.е. "лечение" - просто его выкинуть =(
Глупый и не надежный. Применим исключительно к крэкмису.

Для тех, кто в танке:
Допустим, ты проверял CRC по формуле:
(значение 1 байта) + (значение 2 байта) = 100.
Если результат не равен 100, то защита ругается.

Что предложил diamond:
Для обхода надо изменить значение 1 байта на "+1". Тогда для молчания защиты надо значение 2 байта изменить на "-1". Тупо, правда?

Для тех, кто не в танке:
Способ:
1. Считается по формуле определения CRC общее отклонение тех байтов, которые мы изменили.
2. На месте nop-ов (в пустых местах секторов) разница из п.1. восстанавливается.

Почему это плохой способ:
1. Далеко не каждый человек (читай - только 1 +_+) станет выкладывать txt с адресами рядом с exe.
2. Формула, по которой считается CRC может быть в свою очередь более защищена и более сложна. (и не надо пугать меня, что это - блоуфиш).
3. Сама система защиты так и не была взломана. Был взломан общий подход, который, по словам самого Pantalone, был изобретен в первый раз за его defence-карьеру. Говоря проще, защита сломана не была, ее просто обошли.

Ну а что делать дальше - по-моему ясно - совершенствовать защиту и не делать таких ошибок, как в этом crackme.
GL!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.02.2006 (Вт) 8:07

Млин, ну какой это "изящный метод", епта... =( Это давно известный "гордиев узел".

Когда я сажусь за взлом проги, моя цель - ее сломать. И чем проще я это сделаю - тем изящнее получиться решение. Мы (говорю мы, потому что и ты и я действовали по одному алгоритму) пытались убить защиту изнутри, а оказалось, что достигнуть цели можно намного проще. И будь у нас побольше опыта и сообразительности, мы бы сломали ее так же, а не разгребали тонны АСМовского кода.
1. Далеко не каждый человек (читай - только 1 +_+) станет выкладывать txt с адресами рядом с exe.

Ну к этому мы, кажись, давно пришли...
Говоря проще, защита сломана не была, ее просто обошли.
Ну чем не изящное решение?... :lol:
А я все практикую лечение травами...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.02.2006 (Вт) 10:57

AjaxVS писал(а):1. Далеко не каждый человек (читай - только 1 +_+) станет выкладывать txt с адресами рядом с exe.
2. Формула, по которой считается CRC может быть в свою очередь более защищена и более сложна. (и не надо пугать меня, что это - блоуфиш).

1) Насчет первого пункта, много было бы толку если бы я адреса выложил не в прямом виде - номерами байтов, а захешировал их значения?
2) Человек допер как именно и что у меня считается, будет сложно сделать так чтобы он не допер в другой раз.

Меня волнует такой вопрос, почему человек не отследил место где программа оперирует CRC, не отследил какое именно значение она там имеет и просто тупо не забил туда патчем это значение?

silently_fox
Новичок
Новичок
Аватара пользователя
 
Сообщения: 30
Зарегистрирован: 24.01.2006 (Вт) 10:22
Откуда: USSR

Сообщение silently_fox » 14.02.2006 (Вт) 19:21

Нашел на том-же васме если не читал посмотри, может поможет
писать защиту:

http://wasm.ru/article.php?article=vb60_reversing
Хочешь быть свободным? Пиши в машинных кодах.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.02.2006 (Вт) 20:01

Спасибо

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.02.2006 (Вт) 21:01

Меня волнует такой вопрос, почему человек не отследил место где программа оперирует CRC, не отследил какое именно значение она там имеет и просто тупо не забил туда патчем это значение?

Наверное потому, что не так-то это легко... :lol: Я уже вторую ночь бьюсь лбом о стенку, пытаясь понять как работает функция. Нашел там несколько блоков IF-THEN в цикле прорисовки градиента, но вот проверку CRC пока не нашел...
А я все практикую лечение травами...

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 14.02.2006 (Вт) 22:43

Вот навоял кряк:
Модифицированый алгоритм КС Флетчера + MD5 + String Reversing + Алгорит раскидования + много чего = 64 байтный ключ

ЗЫ. В изначальном варианте генерировался 1024 кб ключ :) - там была ещё 11х шифровка по blowfish но я её убрал, тк из-за юникода глюки были....кто сломает - дам сорцы
Вложения
crackme.rar
(10.9 Кб) Скачиваний: 46

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.02.2006 (Вт) 22:51

Гы... Еще один не доломали, а уже второй ... :lol: :roll:
А я все практикую лечение травами...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 14.02.2006 (Вт) 22:55

Wild VB Code for Food
Как твоя прога болезненно реагирует на переименование :lol:
Если всё делать своими ручками, они скоро отвалятся !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2006 (Ср) 6:42

Глючная прога... висит в памяти перманентно и не выгружается...

Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  Dim b As Byte, r() As Byte, file() As Byte, p As Long
 
  r = StrConv("Ну изменил, и чё?! ", vbFromUnicode)
 
  Open "C:\Documents and Settings\Sergey\Рабочий стол\crackme\crackme.exe" For Binary Access Read Write As #1
 
  ReDim file(1 To LOF(1))
  Get #1, , file
 
  p = InStrB(1, file, StrConv("Измени эту строчку!", vbFromUnicode), vbBinaryCompare)
 
  Put #1, p, r
 
 
 
  b = &H85
  Put #1, &H3C20& + 1 + 1, b
   
  Close #1
End Sub


Да?
Если да, давай исходники... причём всем :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 15.02.2006 (Ср) 7:40

:lol: GSerg
Респект... :lol:
Только не пойму, почему прога выдает сообщение "Учи Ассемблер, крякер"? Это она все-таки детектирует кряк или нет?
Метод, если я не ошибаюсь, отличен от решения с предыдущим кряком (в этот крякми я не смотрел)? Ты как раз-таки сломал "из нутри"...
А я все практикую лечение травами...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2006 (Ср) 8:08

У меня выдаёт другое...
Вложения
Untitled-1.gif
Screen
(10.71 Кб) Скачиваний: 39
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 15.02.2006 (Ср) 8:12

А ты саму процедуру не изучал?
Скорее всего не все проверки "обезврежены". Но почему на разных машинах разный результат? :roll:
А я все практикую лечение травами...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2006 (Ср) 8:22

Это я протупил :)
Там три подозрительных места, правильное одно, так что я выложил немного не тот код :)

Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  Dim b As Byte, r() As Byte, file() As Byte, p As Long
 
  r = StrConv("Ну изменил, и чё?! ", vbFromUnicode)
 
  Open "C:\Documents and Settings\Sergey\Рабочий стол\crackme\crackme.exe" For Binary Access Read Write As #1
 
  ReDim file(1 To LOF(1))
  Get #1, , file
 
  p = InStrB(1, file, StrConv("Измени эту строчку!", vbFromUnicode), vbBinaryCompare)
 
  Put #1, p, r
 
  b = &H84
  Put #1, &H3B66& + 1 + 1, b
 
  Close #1
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 15.02.2006 (Ср) 8:30

Вот теперь все пучком...
А я все практикую лечение травами...

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 15.02.2006 (Ср) 17:34

Попытка 3
1)Улучшена защита
2)Усилен алгоритм
3)Убран глюк с зависанием
4)теперь стоит app.exename

И ещё одна гадость!!!!!! Ухахахаха!

ЗЫ. GSerg, извини конечно, н твой кряк у меня не работает!
Вложения
crackme.rar
(152.53 Кб) Скачиваний: 42

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2006 (Ср) 17:38

Который, первый? Первый не работает, да...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.02.2006 (Ср) 17:39

Попытка 3: проверка занимает минуту. Гм.
Изображение

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 15.02.2006 (Ср) 17:39

GSerg
Второй.

ЗЫ. Я же говрою что гораздо усилен алгоритм проверки + кое-что ещё. Если догодаетесь что, сразу-же прекрашю "играть нечесно" и выложу нормальную версию.
Последний раз редактировалось Wild VB Code for Food 15.02.2006 (Ср) 17:57, всего редактировалось 2 раз(а).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2006 (Ср) 17:42

А второй работает...
Если, конечно, ты не применил его после первого...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 15.02.2006 (Ср) 17:58

нет, сразу второй....хотя навероне я понял почему....я испытывал на более новой версии кряка.

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 16.02.2006 (Чт) 1:14

2 Wild VB Code for Food
У меня после моих взломов выскакивает табличка "Признаю, ты крут..."... Твой кракми выполнен еще более бездарней, чем Pantalone =)
Причем именно как программа (я уже молчу про "супер-защиту", гыгы).
Желание исследовать последующие кракми by you после этого пропало...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 02.03.2006 (Чт) 22:26

AjaxVS писал(а):>Скажи, что значит если бы зашифровал все строки, что ты имеешь в виду?
Я имел ввиду, что неплохо бы строки спрятать от отладчиков типа OllyDbg, SoftIce etc..
Приведу примитивный пример:
Было:
s="wertqwerkut"
Стало:
s=Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h74) & Chr$(&h71) & Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h6B) & Chr$(&h75) & Chr$(&h74)

Хотя бы так... Но лучше эти цифры еще нактрутить на несколько занавесок +_+

Насчет
Код: Выделить всё
Было:
s="wertqwerkut"
Стало:
s=Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h74) & Chr$(&h71) & Chr$(&h77) & Chr$(&h65) & Chr$(&h72) & Chr$(&h6B) & Chr$(&h75) & Chr$(&h74)
Фигня в том, что в программе нет такой переменной s="wertqwerkut", функция wertqwerkut только объявлена в классе, не более того, больше она нигде не фигурирует.
А в хексредакторе видно как оказалось следующие вещи невооруженным взглядом:
1) Public функции и процедуры форм
2) То же самое для классов
Из модулей имена функций не светятся в HexEdit в своем первозданном виде. Не знаю облегчает это взлом или нет, но с этим че-то надо делать.
Продолжаю с защитой ковыряться, ух я тут намудрил :)

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList