![]() |
|
![]() ![]() ![]() |
|
_El_ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 25.9.2007 Репутация: нет Всего: нет |
Как лучше всего защитить программу от дизассемблирования и трассировки?
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
если кто-то действительно захочет дизассемблировать и протрассировать твою программу, то он это в любом случае сможет сделать
продизассемблировать уж точно насчет трассировки...в принципе с правами администратора чего-нибудь сделать можно ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Есть только один способ "защитить программу от дизассемблирования и трассировки" - административно-физический. Т.е. не допустить попадание копии туда, где ее могут трассировать или дизассемблировать.
Однако эти процессы можно сильно ЗАТРУДНИТЬ. Вплоть до того, что эти процессы станут нецелесообразными - стоимость или время работы превысят все допустимые пределы. Тогда программу просто никто не станет ломать - как того неуловимого Джо, которого никто не может поймать, ибо нахрен никому не надо. ![]() ![]() -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
дизассемблирование да можно сделать код очень трудным для понимания а с трассировкой... против DR3-DR0 + защиты по GD спасения, имхо, нет -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
при такой постановке вопроса, лучшее, что можно посоветовать - навесной протектор.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Угу... ты "бешеный код" трассировать пробовал? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
что есть "бешеный код"? я такую формулировку нигде не встречал? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Это код, который сам выполняется в режиме отладки, причем обработчик постоянно модифицирует как исполняемый код, так и точку возврата. Количество вызовов отладчика (и модификаций кода) составляет десятки и сотни тысяч. Это приводит к необходимости при трассировке на каждом шаге сохранять среду исполнения и восстанавливать либо эмулировать модификацию среды, что увеличивает время исполнения при трассировке на 4-5 порядков. Впрочем, это не защищает от трассировки методом контроля шин - однако таких станков промышленно не делают. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
обработчик чего? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
В самой программе (не трассировщике!) ставится обработчик пошагового исполнения. Т.е. фактически программа трассирует саму себя. Этот процесс трассировать архи-непросто. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
ну так можно поставить свой обработчик на #DB перед трассировкой в итоге до обработчика в самой программе дело не дойдет ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Ты не забывай, что этот обработчик модифицирует и код, и точку возврата программы... к тому же пользуя для этого как данные содержимое стека... как ты его собрался объезжать? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
Akina,
пошаговая трассировка включается либо через TF, либо через int3 после каждой инструкции при этом генерируется либо #DB, либо #BP пишем драйвер заменяем адреса обработчиков в соответствующих дескрипторах IDT на свои в них при возникновении исключения проверяем, в контексте какого процесса оно произошло если в контексте трассируемого, то просто выходим из обработчика (через iretd на следующую после int3 (или TF) инструкцию) иначе - передаем управление на оригинальный обработчик #DB или #BP в итоге обработчик в самой программе не будет вызываться, а значит и не будет самомодификации кода и пр. -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
И после отработки вместо окончательного, рабочего, кода, который должен получиться в результате модификаций, получаем черт знает что. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
MAKCim, не, ты не допонял - если ты отрубишь обработчик, то и программа работать не будет.
![]() вообще, это трассировать тяжеловато, а снимается довольно элементарно... ВМы тут же надо упомянуть... а вообще, все это - "суета сует и томление духа" (с) ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
dumb,
Akina, все, я понял что вы имеете в виду тогда будет сложновато ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
mb78 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.7.2008 Репутация: нет Всего: нет |
Чтобы код трудно было понять можно его зашифровать(часть кода),а затем программно расшифровать и перейти по нему,правда в
ассемблере это сделать не так просто,лучше использовать тот же самый отладчик.Чем больше раз вы его зашифруете,тем больше шансов,что тому,кто его будет расшифровывать это надоест. Освободиться от трассировки так: 1)CLI -ЗАПРЕЩАЕМ ВСЕ ПРЕРЫВАНИЯ,В ТОМ ЧИСЛЕ И ТРАССИРОВКУ 2)Делаем перехват прерывания трассировки(вписываем переход на адрес,который будет например зависать программу или выходить из нее). 3)STI -возобновляем нормальную работу компьютера. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
||||
|
||||
CrackMe |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.1.2009 Репутация: нет Всего: нет |
по сабжу, из актуального на сегодня, перевод x86 (ну или во что код компилируется) в p-code+выполнение на своём интерпретаторе. совместимо с мутациями как интерпретатора так и самого псевдокода. сложно реализуемо. всякая самотрассировка, самомодифицирующийся код, левые байты после безусловных переходов (jmp @F/db 68h/@@:) как концепт и прочее отпугнёт либо остановит только начинающего взломщика.
Это сообщение отредактировал(а) CrackMe - 12.1.2009, 04:30 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для Windows/DOS" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |