Вопрос № 173956: Уважаемые эксперты, помогите пожалуйста кое-в-чем. Исследуя в отладчике учебную (crackme) программу, была найдена процедура сборки пароля из имени. Она выглядела так: -----------------------------------------------------------------------------...
Вопрос № 173960: Помогите переделать код программы, чтоб он был с процедурами...заранее спасибо!) Задание: Заданы одномерные массивы А, В из 10 чисел. Построить массив С, каждый элемент которого вычисляется: Сі = 1/(ai - bi ), когда ai <> bi...
Вопрос № 173972: Добрый вечер многоуважаемые эксперты! прошу у вас прмрщи в решении одной задачки по Паскалю! Правая треугольная матрица А порядка n задана в виду последовательности (n+1)n/2 чисел : сначала идет n элементов первой строки, затем n-1 элемент втор...
Вопрос № 173956:
Уважаемые эксперты, помогите пожалуйста кое-в-чем. Исследуя в отладчике учебную (crackme) программу, была найдена процедура сборки пароля из имени. Она выглядела так: ----------------------------------------------------------------------------------------------------------------- PUSH EBP MOV EBP,ESP PUSH ESI PUSH EDI LEA ESI,DWORD PTR DS:[403084] ; Смещение имени
LEA EDI,DWORD PTR DS:[403284] ; Смещение пароля XOR EAX,EAX XOR ECX,ECX MOV BL,1A Дальше идет собственно цикл создания пароля по имени: /CMP BYTE PTR DS:[ESI],0 ; Проверка на конец строки |JE SHORT CRACKME4.0040132A |MOV AL,BYTE PTR DS:[ESI] |ADD AL,CL
|XOR AL,CL |DIV BL |SHR AX,8 |ADD AL,41 |MOV BYTE PTR DS:[EDI],AL |INC EDI |INC ESI |INC ECX \JMP SHORT CRACKME4.00401310 Конец цикла MOV BYTE PTR DS:[EDI],0 XOR EAX,EAX CMP ECX,0 JE SHORT CRACKME4.0040134E PUSH
CRACKME4.00403284 ; /String2 = "" PUSH CRACKME4.00403184 ; |String1 = "" CALL <JMP.&KERNEL32.lstrcmpA> ; \lstrcmpA CMP EAX,0 JE SHORT CRACKME4.0040134C XOR EAX,EAX JMP SHORT CRACKME4.0040134E MOV EAX,ECX POP EDI POP ESI LEAVE RETN 4 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Мой вопрос заключается в том, что я реализовал этот алгоритм на Turbo Pascal 7.0( см. приложение). Но он работает неправильно, т.к. , например, для ника Amaranth вместо правильного пароля NHTOTOUA, выдает PFZKVKUQ. Объясните в чем ошибка и исправьте код пожалуйста.
В паскале первый симвлол строки имеет индекс 1. У Вас был 0, там записана длина самой строки. Удачи!
Приложение:
----- Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч
Ответ отправил: Зенченко Константин Николаевич, Модератор
Ответ отправлен: 04.11.2009, 10:31 Украина, Киев Тел.: +38-097-953-66-19 Адрес: Украина, Киев
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256169
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 173960:
Помогите переделать код программы, чтоб он был с процедурами...заранее спасибо!)
Задание: Заданы одномерные массивы А, В из 10 чисел. Построить массив С, каждый элемент которого вычисляется: Сі = 1/(ai - bi ), когда ai <> bi 1 , когда ai = bi. В массиве С поменять местами максимальный элемент и последний. Напечатать входной и выходной массивы
Вод код моей программы на паскале:
Код:
program N4;
var i,n,imax:integer; {variables for a work} max:real; {maximal array cell} A: array[1..10] of integer; B: array[1..10] of integer; C: array[1..10] of real; prom:real; {variable for transposition of elements}
procedure vvod; {hammering in arrays a and b and destroy these arrays on a
screen} begin randomize; for i:=1 to 10 do begin a:=random(200)-100; write(a,' '); end; writeln; for i:=1 to 10 do begin b:=random(200)-100; write(b,' '); end;
for i:=1 to 10 do {calculate array cells c} if a=b then c:=1 else c:=1/(a-b); writeln; for i:=1 to 10 do {destroy an array c on a screen} write(c:0:2,' '); readln; end;
begin vvod; {search of maximal element} max:=c[1]; imax:=1; for i:=2 to
10 do if c>max then begin max:=c; imax:=i; end;
prom:=c[10]; {transposition of array cells} c[10]:=max; c[imax]:=prom;
writeln('posle perestanovki elementov massiva'); for i:=1 to 10 do {conclusion of array c on a screen} write(c:0:2, ' '); writeln; readln; end.
Если есть какие-то некорректности - подправьте и помогите переделать код на код С ПРОЦЕДУРАМИ!!!
Смотрите приложение. Добавил процедуры. Используется передача параметров в процедуру и обратно. Обмен реализован в теле программы, хотя и это можно записать как процедуру. Вопросы задавайте в мини-форум. Удачи!
{#/template js_tmpl_auth_reg_button}
{#template js_tmpl_auth_reg_descr}
{#if $P.login_register_tab == 1}
Для оформления подписки на выбранную рассылку, работы с интересующей вас группой или доступа в нужный вам раздел, просим авторизоваться на Subscribe.ru
{#/if}
{#if $P.login_register_tab == 2}
Для регистрации укажите ваш e-mail адрес. Адрес должен быть действующим, на него сразу после регистрации будет отправлено письмо с инструкциями и кодом подтверждения.
{#/if}
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_soc_auth_reg_descr}
Или зарегистрируйтесь через социальную сеть.
{#/template js_tmpl_soc_auth_reg_descr}
{#template js_tmpl_auth_reg_soc}
Вам отправлено письмо для подтверждения вашего адреса {$P.register_confirm_mail}. Для подтверждения адреса перейдите по ссылке из этого письма.
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_auth_reg_action}