Защититься от дизассемблера элементарно. Для этого используются либо специфические приемы (про них подробно написано на сайте wasm.ru), либо банальное шифрование исполнимого кода. Для последнего надо скомпилировать программу, проверить, сколько байт она занимает, а потом подставить в заранее написанную программу с процедурой шифрования самой себя нужные числа для расшифровки и вручную зашифровать свою программу. Если бы мне не было так лень, я мог бы сопроводить примером. Однако здесь вступает в действие закон подлости - поскольку программа распаковывается (расшифровывается) при исполнении, ее может расаковать (расшифровать) и взломщик. В таком случае весьма полезным ходом будет расшифровывать файл по ходу исполнения (при этом можно зашифровывать уже расшифрованные участки), вставляя везде, где только можно, проверку на целостность программы. Если программа будет достаточно большая (в смысле кода), достаточно хорошо зашифрована, достаточно часто зашифрована, достаточно часто будет проверяться ее целостность (например, при каждой шифровке), то у взломщика, скорее всего, отпадет желание исследовать вашу программу. Однако, все эти способы не спасают от отладчика, который у большинства исследователей - главный инструмент. Для него могут пригодиться антиотладочные приемы (помню, в одной программе был поганый прикол - она отлавливала нажатие Ctrl и начинала исполнять совершенно левый код в цикле, засекая, одновременно с этим время, это основано на том, что SoftIce обычно вызывается по Ctrl-D), приемы крушения отладчика, тайм-контроль и другие хитрости.
> Единственная защита от взлома и диззасемблирования для начинающего, это
использование ASProtect. Купи его за 99$ и больше не парься с кракерами...
Глупости какие... ASProtect снимается до того просто, что я бы не дал его автору и одного доллара за него. Имхо, Armadillo, и того труднее снять. И вообще - ASProtect слишком популярная защита, чтобы ее было трудно сломать. Единственное твое утешение, если ты используешь его - русские крякеры могут тебя пожалеть, хотя использование сего продукта может навлечь на тебя их гнев
>
Попробуй сжать свою прогу UPX'ом, мне кажется что после неё дизасемблер не возьмёт.
Плюс и места будет меньше занимать
Глупости какие. Где-то тут я уже давал ссылку на то, что упаковщики - маст дай, однако это не главное. UPX сам распаковывает запакованный файл, если вызвать его с ключом -d. И не думайте, что крякр этого не сделает, у 98% крякеров первый инструмент - PeId или что-то в этом роде. Даже если использовать UPX Scrambler, которые меняют сигнатуры UPX так, чтобы он думал, что это не он паковал этот файл, существует масса программ для распаковки любого скрамблера. Упаковщик - это, по сути, вообще не защита, поскольку с ручным снятием упаковки знаком каждый более-менее приличный крякер.
> Перед компиляцией, возьми копию исходника и замени все названия (твоих) функций и переменных на какую-нибудь адбракадабру.
Что-то этот способ мне малость не понятен. Это как? При компиляции ведь никакие имена переменных и функций не сохраняются, а в секции импорта должны быть обязательно правильные названия импортируемых функций...
>а в секции импорта должны быть обязательно правильные названия импортируемых функций...
Откуда у VB секция link? Единственная ссылка на MSVBVM60.DLL и то в секции .text расположена.
VB-шные проги вообще начинающий хакер ломать не будет. Потому как почти весь код выполняется в рантайме и ему кроме муляжа экзешника прийдётся дизасемблировать ещё и MSVBVM60.DLL. Возможно ещё и OLEAUT32.DLL.
Если кто и будет ломать твою прогу, так только профи. Но что-бы его заинтересовать она должна быть действительно ценной.
===
Может кто нибудь знает нормальный отладчик для VB. А то мне попалась парочка. Но они как правило или кривые или глючные.
Ну, не знаю, ломал я проги и на VB и на Сях и на Делфях и особой разницы не заметил... Дизасмить легче всего Си, затем VB, Делфи труднее всего, так как там всякой гадости понавалено, что не разберешь. Достаточно прописать в настройках SI файл msvbvm60.dll чтобы он видел импортируемые функции и использовать в качестве дизасмера IDA, тогда все будет замечательно. Ни в коем случае не соглашусь, что программа, написанная на VB настолько сложна для взлома, что никто ее, если она хоть что-то из себя представляет, но не очень, никем не будет взломана. Это сложнее, чем ломать программы на асме, но так-то и сложно...
> Не соглашусь с вами. АSProtect ломался только до версии 1.1 и то 50 на 50, если разработчик не использовал опцию шифрования исполняемого кода.
> Последняя версию 1.23 с очень хорошей защитой, ее еще не взломали...
Не веришь мне, спроси на reversing.net...
2CyRax: эх, как меня ломает что-то ломать... И вообще, я крякер начинающий... Но только в этом файле используется шифрование кода, поэтому без одного правильного пароля сделать ничего нельзя и от языка это нисколько не зависит.
AsProtect - наверняка не знаю, а вот AsPack - ломается в две секунды. Проверено. Если AsPack ломается, то думаю, что и AsProtect тоже (исходя из того что автор один, и не стал бы оставлять на произвол судьбы один из своих продуктов - AsPack, имея совершенную систему защиты). Видимо не столь совершенная защита.
ИМХО, все это ерунда... Поначалу, когда выходит продукт, его сложно
сломать. Но нет ничего такого, чего рано или поздно не сломают...
Это же происходит и с данным новым продуктом, который потом уже
ломается "по шаблону".
Не знаю какое там шифрование. По моему его там вообще нет.
Я потерялся в переходах между MSVBVM60.DLL, OLE32.DLL и OLEAUT32.DLL. Последний отвечает за работу со строками.
Представляешь сколько мусора нужно перерыть. К тому же нужен кракер разбирающийся в ВБ. Думаю таких немного.
И это будет в любой ВБ-шной проге. Стоит ей дорваться до MSVBVM60.DLL и она застревает там намертво и уже не возвращается. Прямо заколдованное место какое то
Возьми любой экзешник и протести например в OllyDbg. Там одни джампы по адресам виртуальной машины. Т.е. тебе сначала нужно составить таблицу имен процедур на каждый адрес и по ней уже смотреть что реально происходит. С таблицей и знанием VB наверное можно ломать его проги. Только кто будет составлять эту таблицу и кто их кракеров знает ВБ?
Мне кажется может кто нибудь из нас этим заняться. Но профессионаьлные програмеры не заходят на этот форум. Я занят написанием PB IDE. Остаёшся только ты. Скорее всго ты этого делать не будешь.
> Не знаю какое там шифрование. По моему его там вообще нет.
Не могу сейчас привести листинг, но 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 так, как я его знаю сейчас и я был с ними незнаком Помня ту атмосферу тьмы, которая царила вокруг меня и как трудно было получать знания (в основном, только экспериментом), я хочу избавить от таковой начинающих программистов, если они, конечно, обладают соответствующими моральными и аналитическими навыками А вообще я подумываю над написанием своего компилятора, сейчас изучаю асм и теорию... Поэтому заниматься тоже, скорее всего, не буду ))