Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Шифрование кода программы от дизассемблеров Добавлено: 15.02.04 09:44  

Автор вопроса:  MACROS
Подскажите, как зашифровать код программы от дизассемблеров. Какие методы бывают, и как вообще это делается?

Ответить

  Ответы Всего ответов: 18  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 15.02.04 15:39

Защититься от дизассемблера элементарно. Для этого используются либо специфические приемы (про них подробно написано на сайте wasm.ru), либо банальное шифрование исполнимого кода. Для последнего надо скомпилировать программу, проверить, сколько байт она занимает, а потом подставить в заранее написанную программу с процедурой шифрования самой себя нужные числа для расшифровки и вручную зашифровать свою программу. Если бы мне не было так лень, я мог бы сопроводить примером. Однако здесь вступает в действие закон подлости - поскольку программа распаковывается (расшифровывается) при исполнении, ее может расаковать (расшифровать) и взломщик. В таком случае весьма полезным ходом будет расшифровывать файл по ходу исполнения (при этом можно зашифровывать уже расшифрованные участки), вставляя везде, где только можно, проверку на целостность программы. Если программа будет достаточно большая (в смысле кода), достаточно хорошо зашифрована, достаточно часто зашифрована, достаточно часто будет проверяться ее целостность (например, при каждой шифровке), то у взломщика, скорее всего, отпадет желание исследовать вашу программу. Однако, все эти способы не спасают от отладчика, который у большинства исследователей - главный инструмент. Для него могут пригодиться антиотладочные приемы (помню, в одной программе был поганый прикол - она отлавливала нажатие Ctrl и начинала исполнять совершенно левый код в цикле, засекая, одновременно с этим время, это основано на том, что SoftIce обычно вызывается по Ctrl-D), приемы крушения отладчика, тайм-контроль и другие хитрости.

Ответить

Номер ответа: 2
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #2 Добавлено: 17.02.04 12:28

Единственная защита от взлома и диззасемблирования для начинающего, это

использование ASProtect. Купи его за 99$ и больше не парься с кракерами...

:)

Ответить

Номер ответа: 3
Автор ответа:
 .::EclipsE::.



ICQ: 208952501 

Вопросов: 22
Ответов: 85
 Профиль | | #3 Добавлено: 17.02.04 14:31

Попробуй сжать свою прогу UPX'ом, мне кажется что после неё дизасемблер не возьмёт.

Плюс и места будет меньше занимать :)

Ответить

Номер ответа: 4
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #4 Добавлено: 17.02.04 14:46

Перед компиляцией, возьми копию исходника и замени все названия (твоих) функций и переменных на какую-нибудь адбракадабру.:)

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 17.02.04 19:19
> Единственная защита от взлома и диззасемблирования для начинающего, это

использование ASProtect. Купи его за 99$ и больше не парься с кракерами...

Глупости какие... ASProtect снимается до того просто, что я бы не дал его автору и одного доллара за него. Имхо, Armadillo, и того труднее снять. И вообще - ASProtect слишком популярная защита, чтобы ее было трудно сломать. Единственное твое утешение, если ты используешь его - русские крякеры могут тебя пожалеть, хотя использование сего продукта может навлечь на тебя их гнев :)

>

Попробуй сжать свою прогу UPX'ом, мне кажется что после неё дизасемблер не возьмёт.

Плюс и места будет меньше занимать :)

Глупости какие. Где-то тут я уже давал ссылку на то, что упаковщики - маст дай, однако это не главное. UPX сам распаковывает запакованный файл, если вызвать его с ключом -d. И не думайте, что крякр этого не сделает, у 98% крякеров первый инструмент - PeId или что-то в этом роде. Даже если использовать UPX Scrambler, которые меняют сигнатуры UPX так, чтобы он думал, что это не он паковал этот файл, существует масса программ для распаковки любого скрамблера. Упаковщик - это, по сути, вообще не защита, поскольку с ручным снятием упаковки знаком каждый более-менее приличный крякер.

> Перед компиляцией, возьми копию исходника и замени все названия (твоих) функций и переменных на какую-нибудь адбракадабру.:)

Что-то этот способ мне малость не понятен. Это как? При компиляции ведь никакие имена переменных и функций не сохраняются, а в секции импорта должны быть обязательно правильные названия импортируемых функций...

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 18.02.04 00:32

>а в секции импорта должны быть обязательно правильные названия импортируемых функций...

Откуда у VB секция link? Единственная ссылка на MSVBVM60.DLL и то в секции .text расположена.

VB-шные проги вообще начинающий хакер ломать не будет. Потому как почти весь код выполняется в рантайме и ему кроме муляжа экзешника прийдётся дизасемблировать ещё и MSVBVM60.DLL. Возможно ещё и OLEAUT32.DLL.

Если кто и будет ломать твою прогу, так только профи. Но что-бы его заинтересовать она должна быть действительно ценной.

===

Может кто нибудь знает нормальный отладчик для VB. А то мне попалась парочка. Но они как правило или кривые или глючные.

 

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 18.02.04 01:23

Ну, не знаю, ломал я проги и на VB и на Сях и на Делфях и особой разницы не заметил... Дизасмить легче всего Си, затем VB, Делфи труднее всего, так как там всякой гадости понавалено, что не разберешь. Достаточно прописать в настройках SI файл msvbvm60.dll чтобы он видел импортируемые функции и использовать в качестве дизасмера IDA, тогда все будет замечательно. Ни в коем случае не соглашусь, что программа, написанная на VB настолько сложна для взлома, что никто ее, если она хоть что-то из себя представляет, но не очень, никем не будет взломана. Это сложнее, чем ломать программы на асме, но так-то и сложно...

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 18.02.04 03:01

Попробуй ради интереса

http://softok.narod.ru/Govorushka.exe

Если взломаешь, то соглашусь что легко.

Ответить

Номер ответа: 9
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #9 Добавлено: 18.02.04 12:25

to Sharp:

>Глупости какие... ASProtect снимается до того просто, что я бы не дал его автору и одного доллара за него

Не соглашусь с вами. АSProtect ломался только до версии 1.1 и то 50 на 50, если разработчик не использовал опцию шифрования исполняемого кода.

Последняя версию 1.23 с очень хорошей защитой, ее еще не взломали...

Ответить

Номер ответа: 10
Автор ответа:
 mzx



ICQ: 259560026 

Вопросов: 21
Ответов: 143
 Профиль | | #10 Добавлено: 18.02.04 13:38

Согласен с CyRax.

А если прогу еще Fusion-ом обработать, наверное это усложнит дело крякеру.

 

Вообще-то я мало видел стоящих прог на VB которые имело бы смысл ломать.

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 18.02.04 15:29

> Не соглашусь с вами. АSProtect ломался только до версии 1.1 и то 50 на 50, если разработчик не использовал опцию шифрования исполняемого кода.

> Последняя версию 1.23 с очень хорошей защитой, ее еще не взломали...

Не веришь мне, спроси на reversing.net...

2CyRax: эх, как меня ломает что-то ломать... И вообще, я крякер начинающий... Но только в этом файле используется шифрование кода, поэтому без одного правильного пароля сделать ничего нельзя и от языка это нисколько не зависит.

Ответить

Номер ответа: 12
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #12 Добавлено: 19.02.04 00:34

AsProtect - наверняка не знаю, а вот AsPack - ломается в две секунды. Проверено. Если AsPack ломается, то думаю, что и AsProtect тоже (исходя из того что автор один, и не стал бы оставлять на произвол судьбы один из своих продуктов - AsPack, имея совершенную систему защиты). Видимо не столь совершенная защита.

Ответить

Номер ответа: 13
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #13 Добавлено: 19.02.04 16:58
ИМХО, все это ерунда... Поначалу, когда выходит продукт, его сложно
сломать. Но нет ничего такого, чего рано или поздно не сломают...
Это же происходит и с данным новым продуктом, который потом уже
ломается "по шаблону".

Ответить

Номер ответа: 14
Автор ответа:
 BP(CyRax)



ICQ: 204447456 

Вопросов: 1
Ответов: 6
 Web-сайт: basicproduction.nm.ru
 Профиль | | #14
Добавлено: 20.02.04 05:35

2 Sharp

Не знаю какое там шифрование. По моему его там вообще нет.

Я потерялся в переходах между MSVBVM60.DLL, OLE32.DLL и OLEAUT32.DLL. Последний отвечает за работу со строками.

Представляешь сколько мусора нужно перерыть. К тому же нужен кракер разбирающийся в ВБ. Думаю таких немного.

И это будет в любой ВБ-шной проге. Стоит ей дорваться до MSVBVM60.DLL и она застревает там намертво и уже не возвращается. Прямо заколдованное место какое то :)

Возьми любой экзешник и протести например в OllyDbg. Там одни джампы по адресам виртуальной машины. Т.е. тебе сначала нужно составить таблицу имен процедур на каждый адрес и по ней уже смотреть что реально происходит. С таблицей и знанием VB наверное можно ломать его проги. Только кто будет составлять эту таблицу и кто их кракеров знает ВБ?

Мне кажется может кто нибудь из нас этим заняться. Но профессионаьлные програмеры не заходят на этот форум. Я занят написанием PB IDE. Остаёшся только ты. Скорее всго ты этого делать не будешь. :)

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 20.02.04 17:33

> Не знаю какое там шифрование. По моему его там вообще нет.

Не могу сейчас привести листинг, но IDA нашла большой недизассемблерируемый фрагмент в сегменте кода, а в коде рядом со вводом есть фрагмент, активно работающий со строками, причем пару раз встречался адрес этого участка и то,что получается от введенного значения и случайного (вроде) первого кода. Поэтому я и забил.

> Я потерялся в переходах между MSVBVM60.DLL, OLE32.DLL и OLEAUT32.DLL. Последний отвечает за работу со строками.

Ты его в отладчике смотрел? Лучше в IDA - мелкомягкие что-то намутили с адресными пространствами msvbvm60.dll и самой программы - значительная (если не большая часть кода) выполняется в MSVBVM60!DllCanUnloadNow.

> Представляешь сколько мусора нужно перерыть. К тому же нужен кракер разбирающийся в ВБ. Думаю таких немного.

Сложно сказать, но здесь, видимо, положение дел действительно такое, почему-то большинство гуру крякерства не любят VB, так как мало в нем понимают :) Но по поводу мусора не могу согласиться, в программах на Delphi с VCL его гораздо (на 400 кило) больше. Хотя меня уже порадовала строка:

.text:004022A8 start:
.text:004022A8                 push    offset dword_408728
.text:004022AD                 call    ThunRTMain
Где по адресу dword_408728 лежали данные, не похожие ни на адрес входа, ни на что другое. Есть предположение, что это данные формы, но оно нуждается в проверке. Взлом VB-программы требует знаний VB - это да, хотя и просто при знании программирования о назначении тех или иных функций можно догадаться. После приведенного фрагмента лежали опять-таки данные :) Хотя некоторые процедуры просто вводят в ступор, например: __vbaI2I4 :)

> Возьми любой экзешник и протести например в OllyDbg. Там одни джампы по адресам виртуальной машины. Т.е. тебе сначала нужно составить таблицу имен процедур на каждый адрес и по ней уже смотреть что реально происходит.

Составлять таблицу адрес - название не нужно, если прописать SI EXP=c:\windows\system\msvbvm60.dll, он будет показывать названия функций из рантайма, а IDA это умеет и сама. Зато хотелось бы составить таблицу название-что делает-аргументы. Я предлагал такое когда-то, но получил резко негативную реакцию населения :)

> Мне кажется может кто нибудь из нас этим заняться. Но профессионаьлные програмеры не заходят на этот форум. Я занят написанием PB IDE. Остаёшся только ты. Скорее всго ты этого делать не будешь. :)

Я обитаю здесь чисто из филантропических побуждений :) Сам я начинал на "Поиске" и БК-0010 и в нашем городе едва ли было хотя бы 2-3 программиста, которые знали бы Basic так, как я его знаю сейчас и я был с ними незнаком :) Помня ту атмосферу тьмы, которая царила вокруг меня и как трудно было получать знания (в основном, только экспериментом), я хочу избавить от таковой начинающих программистов, если они, конечно, обладают соответствующими моральными и аналитическими навыками :) А вообще я подумываю над написанием своего компилятора, сейчас изучаю асм и теорию... Поэтому заниматься тоже, скорее всего, не буду :)))

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам