Вопрос № 54828: Здравствуйте господа эксерты!
Я неплохо изучив Ассемблер, написал свою программу с помощью компилятора MASM, где присутствуют exe. и dll. файлы. Но боюсь что ее (программу) может кто то исследовать (в отладчике), с последующим взломом.
Вопрос...Вопрос № 54844: Здравствуйте ! Подскажите пожалуйста самый простой способ вывести на экран содержимое регистра ax, без всяких там макросов....Вопрос № 54854: Здравствуйте уважаемые ассемблерщики.
Я сделал программу, но не уверен, что там все правильно нарисовано.
Правильно я нарисовал линию или нет.
Спасибо.
...
Вопрос № 54.828
Здравствуйте господа эксерты!
Я неплохо изучив Ассемблер, написал свою программу с помощью компилятора MASM, где присутствуют exe. и dll. файлы. Но боюсь что ее (программу) может кто то исследовать (в отладчике), с последующим взломом.
Вопрос:
- Чем я могу (на сегодняшний день) защитить свою неплохую программу?
Отвечает: Wild_one
Здравствуйте, Луковкин Николай Иванович!
Вы наверно видели, что практически ко всем платным программам можно найти кряки. Какой бы сильной не была защита, ее все равно взломают. Это не значит, что защиту не нужно ставить. Но не имея опыта по взлому защит и их созданию, нормальную защиту Вы все равно не сделаете. Самый простой способ: установить протектор типа ASProtect, Armadillo и др. (Инфу можно найти на сайтах для крякеров. )Этим вы оградите себя от начинающих взломщиков. Однако учтите, что большинство протекторов являются платными. Можно воспользоваться
услугами специалистов в данной области, но будет ли такая программа рентабельной? На Западе большинство пользователей все таки предпочитают покупать программы, нежели воровать.
Ответ отправил: Wild_one (статус: 4-ый класс)
Ответ отправлен: 09.09.2006, 17:11 Оценка за ответ: 3 Комментарий оценки: 1.Программу запакованную ASProtect-ом, я начинающий программист, распаковал QUnpack-ом за 1 минуту, не говоря уж о начинающем хакере. 2.Программу запакованную Armadillo, мне даже не пришлось и распаковывать, просто загрузил в НАСТРОЕННУЮ на мой вкус Олю и за 30 минут исследовал ассемблерный листинг с заходом в подпрограмму от и до конца. Кстате запакованная Armadillo программа
также без проблем загружается в интерактивный IDA Pro, для изучения дизассемблерного кода. Но все равно большое спосибо Вам за ответ!
Отвечает: mix_mix
Здравствуйте, Луковкин Николай Иванович!
Совершенно согласен с ответом Wild_one, все равно вашу защиту сломают.
Могу посоветовать походить по сайтам, посвященным написанию вирусов (или имеющих такую лит-ру), так как там все прекрасно описано: методы защиты (такие, как антидизассемблирование, антиотладочные приемы, вызов API по хешу и т.д.) Конечно, может быть, когда то вашу прогу все равно вскроют, но вскрываяя ее, вломщик долго будет припоминать вас "хорошими словами".
Ответ отправил: mix_mix (статус: 6-ой класс)
Ответ отправлен: 09.09.2006, 19:05 Оценка за ответ: 5 Комментарий оценки: Спосибо большое за ответ!!! Но мне на работе один знакомый прграммист посоветовал запаковать мою программу, на его взгляд, одним из самых сильных нижеперечисленных запаковщиков: - PE-SHiELD; - PELOCKnt; - PC Guard; - PE-Pack. Не знаю правда это или нет, если правда, то какой из них посоветуете выбрать?
Вопрос № 54.844
Здравствуйте ! Подскажите пожалуйста самый простой способ вывести на экран содержимое регистра ax, без всяких там макросов.
Отправлен: 09.09.2006, 19:42
Вопрос задал: Whiteman (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Олег Владимирович
Здравствуйте, Whiteman!
<PRE>
Предлагается следующий вариант:
PUSH CX
MOV CX,4
1: ROL AX,4
CALL OutDigit
LOOP @1
POP CX
;Ввиду частого использования этого кода обычно его выносят в макрос, а лучше - в процедуру
Используемая процедура:
OutDigit PROC NEAR
PUSH AX
AND AX,000Fh
CMP AL,9
JBE @2
ADD AL,7
2: ADD AL,30h
PUSH DX ;Теперь надо вывести символ, код которого в AL. Приведён вариант для DOS
MOV DL,AL
MOV AH,2
INT 21h
POP DX ;Этот кусок кода - единственное, требующее замены для перехода под Win
POP AX
RET
OutDigit ENDP
</PRE>
Good luck!
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 2-ой класс)
Ответ отправлен: 09.09.2006, 20:58 Оценка за ответ: 5
Отвечает: Sergijj
Здравствуйте, Whiteman!
Дополнение к последней части предыдущего ответа:
;Выводим символ с заданным цветом/фоном в текстовом режиме
push 0B800h
pop es; Адрес сегдента видеопамяти текстового режима (0-я страница)
xor di,di; Сюда заносим координаты на экране по формуле: <ширина_экрана_в_символах> * y + x. В данном случае - выводим по нулевым координатам (левый верхний угол).
mov ax,0721h; AH = 07 = цвет фона (= 0 = чёрный) и символа (= 7 = светло-серый); 21 = ASCII-код символа '!' (восклицательный знак).
stosw
;То же самое для графического режима с моделью памяти Packed Pixel (Индексированный цвет), т.е. 256 цветов
push 0A000h
pop es
xor di,di
mov ax,0721h; // Два последовательных пикселя, один цвета 07, другой цвета 21h
stosw
Если нужно ещё как-то выводить (вариантов, как по смыслу, так и по коду - много), - пишите...
Успехов!
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 5-ый класс)
Ответ отправлен: 11.09.2006, 09:38
Вопрос № 54.854
Здравствуйте уважаемые ассемблерщики.
Я сделал программу, но не уверен, что там все правильно нарисовано.
Правильно я нарисовал линию или нет.
Спасибо.
Приложение:
Отправлен: 09.09.2006, 20:43
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Волков Павел Юрьевич
Здравствуйте, ENS!
при выводе линии, в функцию SelectObject передается eax, в котором находится результат предыдущей функции. Сохраните результат после CreatePen и передайте его в SelectObject, перед DeleteObject.
При работе со шрифтом, в качестве hfont, сохраняете результат из SelectObject, который затем передаете SelectObject, перед EndPaint. Сохраните в hfont результат CreateFont.
Удачи.
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 7-ой класс)
Ответ отправлен: 11.09.2006, 16:31