Сейчас на форуме: yashechka (+5 невидимых) |
![]() |
eXeL@B —› Крэки, обсуждения —› Кто умеет взламывать DOS программы? |
Посл.ответ | Сообщение |
|
Создано: 15 мая 2005 20:22 · Личное сообщение · #1 Задача: есть DOS программа, хранящая пароль на вход в файле на диске. При загрузке программы она читает его из файла, расшифровывает и сравнивает с введеным. Внимание, вопрос: как отловить расшифрованный пароль DOS программы SoftICE ом? Примечание. Решил заняться защитой&взломом. DOS прогу писал я сам, теперь хочу исследовать, как просто ее взломать, но инфы по взлому DOS программ не могу найти! Исходный текст процедуры логининга DOS приложения на Pascal, но без шифрации: procedure login; label 1; var pss: text; password,passwordff: string; trigger: integer; begin setscreen; gotoxy(17,10); write('Wellcome! Plase, enter password...'); trigger:=1; 1: assign(pss,'password.db'); reset(pss); textbackground(10); gotoxy(27,11); write(' '); gotoxy(27,11); If trigger=4 then begin close(pss); HALT; end; readln(password); readln(pss,passwordff); textbackground(blue); If password=passwordff then begin gotoxy(20,20); textcolor(10+blink); write('Password is correct. Press Enter key...'); read(password); close(pss); main_menu; end else begin gotoxy(20,20); textcolor(red+blink); Write('Password is not correct. Retry again.'); trigger:=trigger+1; textcolor(white); goto 1; end; end; ![]() |
|
Создано: 16 мая 2005 13:25 · Личное сообщение · #2 |
|
Создано: 16 мая 2005 17:17 · Личное сообщение · #3 |
|
Создано: 21 мая 2005 00:05 · Личное сообщение · #4 Можно воспользоваться и не софтайсом а тем же стареньким турбодебагером, входящим в комплект любого новенького тасма, кроме того софтайс позволяет загружать и 16-разрядные модули. Нужно просто посмотреть, что есть ещё в папках установки софтайса. Папка Util16 как раз для таких целей. А на счет перехвата дос прерывания это чушь, - заводится виртуальная машина и прервания для каждого процесса свои, и поставив точку останова, она будет срабатывать бесконечно, и не там где нужно. Не забывайте, что ввод осуществляется в буфер, который в дос прогах статичен, вбив несколько символов заведомо известных, находим местоположение буфера спомощью поиска, далее ставим точку останова на чтение или чтение-запись памяти... ну а там мы как раз окажемся возле процедуры расшифровки или зашифровки... И ещё одно примечание... Проверка паролей никогда не проводится расшифровкой - это снижает безопасность. Намного практичнее зашифровать введённый пароль и сравнить с его зашифрованым видом где либо записыным. ![]() |
|
Создано: 21 мая 2005 00:16 · Личное сообщение · #5 ULiX пишет: А на счет перехвата дос прерывания это чушь, - заводится виртуальная машина и прервания для каждого процесса свои Хмм, 21h - это системное досовское прерывание, в каком смысле - для каждого процесса прерывания будут свои? MoonShiner довольно четко объяснил ход действий. Доку по прерываниям ДОС и вперед. ![]() |
|
Создано: 21 мая 2005 01:53 · Личное сообщение · #6 ULiX пишет: Проверка паролей никогда не проводится расшифровкой - это снижает безопасность. Намного практичнее зашифровать введённый пароль и сравнить с его зашифрованым видом где либо записыным. Таким же макаром можно расшифровать закриптованные жестко прописанные серийники и всё будет пучком. Я даже скажу, что твой способ менее безопасен, чем расшифровка введённого серийника, т.к. в крайнем случае твои закриптованные жестко прописанные серийники можно легко поменять на свои. А вот код расшифровки/проверки можно обработать морфингом например и предётся попотеть чтобы его вкурить, конечно если нестандартное алго заюзано или хорошо модифицированное. ----- once you have tried it, you will never want anything else ![]() |
|
Создано: 21 мая 2005 18:27 · Поправил: ULiX · Личное сообщение · #7 gloom id128 пишет: Задача: есть DOS программа, хранящая пароль на вход в файле на диске. Так что мешает мне посмотреть пароль в файле на диске? Не знаю уж как лучше хранить пароль в этом случае ![]() readln(password); readln(pss,passwordff); --- после этого действия пароль уже у тебя в руках. If password=passwordff then begin ... ппп ![]() |
![]() |
eXeL@B —› Крэки, обсуждения —› Кто умеет взламывать DOS программы? |