Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242

Изменение программы

01.04.2013, 13:14. Показов 2057. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть скомпонованная программа...16-битная. Нужно сделать из неё 32-битную. Преподаватель сказал, что нужно переписывать код в OllyDebug. Как это реализовать и что конкретно переписывать, я так и не понял. Объясните кто-нибудь, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2013, 13:14
Ответы с готовыми решениями:

изменение программы
есть программа,написанная на паскале,в exe расширении. мне нужно этот exe отредактировать.в интернете почитал,что такое возможно...

Изменение PE-заголовка в процессе выполнения программы
Доброго времени суток! Задался задачей изменить часть PE-заголовка в процессе выполнения программы (сразу хочу оговориться, что это не...

изменение программы
добрый вечер уважаемые...собственно есть программа написана на delphi. на главном окне приложения есть кнопка, пару чекбоксов и ссылка...

20
Akarin
01.04.2013, 13:33
Что за программа? Хоть бы сюда кинул. =\

Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
что конкретно переписывать, я так и не понял.
Ну, надо полагать, нужно менять разрядность операндов, адресов, регистров, и т.п. Смотря ещё что эта прога делает..
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
01.04.2013, 13:42
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
переписывать код в OllyDebug.
Этот отладчик как бы не предназначен для 16-битных программ.
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
01.04.2013, 13:58  [ТС]
Цитата Сообщение от Vadimych Посмотреть сообщение
Этот отладчик как бы не предназначен для 16-битных программ.
да, не предназначен...но он открывает их

Добавлено через 1 минуту
Цитата Сообщение от Akarin Посмотреть сообщение
Что за программа? Хоть бы сюда кинул. =\
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.286
TITLE  DIRECT (COM) Прямой табличный доступ
CODESG SEGMENT PARA 'Code'
       ASSUME   CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H       ;Начало в конце PSP
BEGIN:  JMP     SHORT MAIN ;Обход через данные
;-------------------------------------------------------
THREE   DB      3                  ;Элементы данных
MONIN   DB      '11'
ALFMON  DB      '???','$'
MONTAB  DB      'JAN','FEB','MAR','APR','MAY','JUN'
        DB      'JUL','AUG','SEP','OKT','NOV','DEC'
;--------------------------------------------------------
MAIN    PROC    NEAR               ;Основная процедура
        CALL    C10CONV            ;Получить дв. значение
        CALL    D10LOC             ;Выделить месяц
        CALL    F10DISP            ;Выдать месяц на экран
        RET
MAIN    ENDP
;               Перевод ASCII в двоичное
;               ------------------------
C10CONV PROC
        MOV     AH,MONIN           ;Загрузить номер месяца
        MOV     AL,MONIN+1
        XOR     AX,3030H           ;Удалить ASCII тройки
        CMP     AH,00              ;Месяц 01-09?
        JZ      C20                ;Да - обойти
        SUB     AH,AH              ;Нет - очистить АН
        ADD     AL,10              ;и перевести в дв.
C20:    RET
C10CONV ENDP
;               Выделение месяца из таблицы
;               ---------------------------
D10LOC  PROC
        LEA     SI,MONTAB
        DEC     AL                 ;Коррекция для таблицы
        MUL     THREE              ;Умножить AL на 3
        ADD     SI,AX
        MOV     CX,03              ;Трехсимв. пересылка
        CLD
        LEA     DI,ALFMON
        REP MOVSB                  ;Переслать 3 символа
        RET
D10LOC  ENDP
;               Вывод на экран симв. месяца
;               ---------------------------
F10DISP PROC
        LEA     DX, ALFMON
        MOV     AH, 09
        INT     21H
        RET
F10DISP ENDP
CODESG  ENDS
        END     BEGIN
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
01.04.2013, 14:12
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
но он открывает их
И Вы видите код своей программы в отладчике? Либо Ваш преподаватель профан, либо шутник.
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
01.04.2013, 14:34  [ТС]
Цитата Сообщение от Vadimych Посмотреть сообщение
И Вы видите код своей программы в отладчике? Либо Ваш преподаватель профан, либо шутник.
вот что получается
Миниатюры
Изменение программы  
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
01.04.2013, 15:35
Соловьёв_Егор,
судя по
Assembler
1
2
3
LEA     DX, ALFMON
        MOV     AH, 09
        INT     21H
программа предназначена для DOS, то же об
Assembler
1
2
3
4
5
.286
TITLE  DIRECT (COM) Прямой табличный доступ
CODESG SEGMENT PARA 'Code'
       ASSUME   CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H       ;Начало в конце PSP
программа типа СОМ, а для Оллидбг нужна программа типа ЕХЕ с моделью памяти флэт
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
01.04.2013, 15:44  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
Соловьёв_Егор,
судя по
Assembler
1
2
3
LEA     DX, ALFMON
        MOV     AH, 09
        INT     21H
программа предназначена для DOS, то же об
Assembler
1
2
3
4
5
.286
TITLE  DIRECT (COM) Прямой табличный доступ
CODESG SEGMENT PARA 'Code'
       ASSUME   CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H       ;Начало в конце PSP
программа типа СОМ, а для Оллидбг нужна программа типа ЕХЕ с моделью памяти флэт
да я знаю, что для DOS...это по методичке понятно...но как тогда лабораторную то делать, если ничего не сделать
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
01.04.2013, 15:53
Соловьёв_Егор,
  1. как изначально звучало задание на твою лабораторную?
  2. судя по твоим словам "Преподаватель сказал, что нужно переписывать код в OllyDebug. Как это реализовать и что конкретно переписывать, я так и не понял." Не на пустом месте рождаются такие задания. То что ты не понял это уже другая проблема. Что-то твоей группе преподаватель пытался объяснить, не факт, что вы это слушали, литературу препод наверняка давал, читать не пробовали?
  3. Там переделок минимум:
    • вместо вывода сообщений через 9 функцию int 21h использовать MessageBox
    • для окончания программы вызвать ExitProcess
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
01.04.2013, 16:06  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
Соловьёв_Егор,
  1. как изначально звучало задание на твою лабораторную?
  2. судя по твоим словам "Преподаватель сказал, что нужно переписывать код в OllyDebug. Как это реализовать и что конкретно переписывать, я так и не понял." Не на пустом месте рождаются такие задания. То что ты не понял это уже другая проблема. Что-то твоей группе преподаватель пытался объяснить, не факт, что вы это слушали, литературу препод наверняка давал, читать не пробовали?
  3. Там переделок минимум:
    • вместо вывода сообщений через 9 функцию int 21h использовать MessageBox
    • для окончания программы вызвать ExitProcess
по этому поводу он вообще ничего не объяснял...что касается литературы, то её я и так читаю...он же вообще ничего не давал

Добавлено через 10 минут
Цитата Сообщение от Mikl___ Посмотреть сообщение
как изначально звучало задание на твою лабораторную?
насчёт задания он сказал: "Вот текст программы (дан выше). Компонуешь её, в debug (который открывается через cmd) делаешь трассировку. Потом переписываешь программу в 32-битную." На вопрос: "Как и где это делать?" он ответил: "Да берёшь файл прямо в OllyDebug открываешь и там редактируешь."
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
01.04.2013, 16:06
Препода в студию! Пусть объяснит, причём тут вообще OllyDbg.
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
01.04.2013, 16:07
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
по этому поводу он вообще ничего не объяснял...что касается литературы, то её я и так читаю...он же вообще ничего не давал
  1. Не верю, это раз.
  2. Если это действительно так, то первое, что нужно сделать, это переспросить преподавателя, чтобы объяснил нормальными словами чего он от вас хочет, на худой конец сходит на кафедру и поговорить с его начальником.
  3. мое сообщение ты процитировал целиком, но на первый вопрос не ответил
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
01.04.2013, 16:31  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
мое сообщение ты процитировал целиком, но на первый вопрос не ответил
я потом дописал

Добавлено через 13 минут
Конечно, может быть он имел в виду то, что надо написать программу, которая будет делать то же самое, но только 32-битную...тогда это упрощает задачу.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
01.04.2013, 16:33
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
насчёт задания он сказал: "Вот текст программы (дан выше). Компонуешь её, в debug (который открывается через cmd) делаешь трассировку. Потом переписываешь программу в 32-битную." На вопрос: "Как и где это делать?" он ответил: "Да берёшь файл прямо в OllyDebug открываешь и там редактируешь."
А что должна делать программа, которая "выше" разобраться не попытался? Это не ответ на мой вопрос...
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
02.04.2013, 14:07  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
А что должна делать программа, которая "выше" разобраться не попытался?
в программе я разобрался...программа выводит на экран первые 3 буквы из названия месяца...номер месяца указан в переменной MONIN

Добавлено через 21 час 17 минут
Всё...решили наконец, что нужно сделать. Нужна программа, которая будет вводить запрос на ввод номера месяца и выводить на экран соответствующее название месяца (точнее первые 3 буквы)
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
02.04.2013, 14:32
Соловьёв_Егор,
решил, молодец, теперь следующий этап, для написания 32-разрядной программы потребуется компилятор и линкер, открою тебе секрет, что OllyDebug для этого не слишком подходит, утряси этот вопрос со своим преподавателем, спроси какую литературу для этого придется почитать, налаживай контакт и сотрудничество со своими преподавателями, это всегда пригодится...
1
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
02.04.2013, 14:37  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
Соловьёв_Егор,
решил, молодец, теперь следующий этап, для написания 32-разрядной программы потребуется компилятор и линкер, открою тебе секрет, что OllyDebug для этого не слишком подходит, утряси этот вопрос со своим преподавателем, спроси какую литературу для этого придется почитать, налаживай контакт и сотрудничество со своими преподавателями, это всегда пригодится...
знаю, что в OllyDebug этого не сделать...есть TASM и TLINK...литературу я читал и до этого, но вот попрактиковаться не доводилось...вот сейчас и начну)
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
02.04.2013, 14:44
Соловьёв_Егор,
если разговор пошел о ТАСМЕ, то тогда тебе нужен TASM32 и TLINK32, их можно найти в комплектах Delphi или Borland C++ и понадобится учебник Пирогова "Ассемблер и Windows"
1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
02.04.2013, 19:25
Слепил для текущей даты. Что-то я ржу.[MASM]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.486
    .model flat, stdcall
    option casemap :none
    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\msvcrt.inc
    include \masm32\macros\macros.asm
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\msvcrt.lib
.data
msg db  'Current month name abbrev: %s',0
fmt db  '%b',0
time_p  dd  ?
.data?
buf db  4 dup(?)
.code
start:  invoke  crt_time, 0
    mov time_p, eax
    invoke  crt_localtime, ADDR time_p
    invoke  crt_strftime, ADDR buf, 4, ADDR fmt, eax
    invoke  crt_printf, ADDR msg, addr buf
    invoke  crt_exit, 0
    end start
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
04.04.2013, 10:50
а это TASM, собирается bat-файлом следующего содержания
Bash
1
2
3
4
set filename=...
set tasm_path=...
%tasm_path%\bin\tasm32 /I%tasm_path%\include\TASM %filename%.asm /ml /m3 /q /z %filename%.obj 
%tasm_path%\bin\ilink32 -L%tasm_path%\lib /Tpe /ap /c /o /x %filename%.obj
а вот сам исходник
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
; tasm windows console #
.386
.model flat
includelib import32.lib
include windows32.inc;содержит описание типов данных Windows 
;ввод строки в консольном режиме и вывод ее же другим цветом
;для использования в ассемблерных программах
;объявление используемых функций Windows (внешние ссылки)
extern GetStdHandle:PROC;
extern WriteConsoleA:PROC;
extern SetConsoleCursorPosition:PROC;
extern SetConsoleTitleA:PROC;
extern FreeConsole:PROC;
extern AllocConsole:PROC;
extern SetConsoleTextAttribute:PROC;
extern ReadConsoleA:PROC;
extern SetConsoleScreenBufferSize:PROC;
extern ExitProcess:PROC;
COL1 = 2+8;цвет выводимого текста
COL2 = 1+2+8;цвет выводимого текста 2
.code
start:   xor ebx,ebx
         call FreeConsole;освободим существующую консоль
         call AllocConsole;образуем свою консоль
         push STD_INPUT_HANDLE
         call GetStdHandle;получаем HANDL1 для ввода
         mov HANDL1,eax
         push STD_OUTPUT_HANDLE
         call GetStdHandle;получаем HANDL для вывода
         mov HANDL,eax
         push 190064h;Y=25(19h)X=100(64h)
         push eax
         call SetConsoleScreenBufferSize;устанавливаем новый размер окна консоли
         push offset STR2
         call SetConsoleTitleA;определение заголовка окна
         push 0A0000h;Y=10(Ah)X=0
         push HANDL
         call SetConsoleCursorPosition;устанавливаем позицию курсора
         push COL1
         push HANDL
         call SetConsoleTextAttribute;задаем цветовые атрибуты выводимого текста
         push offset STR1
         push ebx;0
         push offset LENS
         push LEN1
         push offset STR1
         push HANDL
         call WriteConsoleA;выводим строку символов
         push ebx;0
         push offset LENS
         push 2
         push offset BUF
         push HANDL1
         call ReadConsoleA;ждем ввод строки символов
     mov ax,word ptr BUF
     xor ax,'00'
     xchg ah,al
     aad
     mov edi,eax
     push COL2
         push HANDL
         call SetConsoleTextAttribute;задаем цветовые атрибуты выводимого текста
         push ebx;0
         push offset LENS
         push table2[edi*4];длина выводимой строки
         push table1[edi*4]
         push HANDL
         call WriteConsoleA
         mov ecx,8FFFFFFh;небольшая задержка
l1:  loop l1
         call FreeConsole;закрываем консоль
         push ebx;0
         call ExitProcess
.data
HANDL  dd ?
HANDL1 dd ?
STR1 db 'Введите номер месяца двумя цифрами и нажмите Enter:',13,10,0
LEN1 = $ - STR1 - 1
STR2 db 'Простой пример консоли',0
LEN2 = $ - STR2 - 1
BUF db 0,0
LENS db 0;количество выведенных символов
table1 dd 0,jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dcm
table2 dd 0,6,7,4,6,3,4,4,6,8,7,6,7
jan db "январь"
feb db "февраль"
mar db "март"
apr db "апрель"
may db "май"
jun db "июнь"
jul db "июль"
aug db "август"
sep db "сентябрь"
oct db "октябрь"
nov db "ноябрь"
dcm db "декабрь"
end start
чтобы на экране не было кракозябр асм-файл должен быть в DOS-кодировке
только хотелось бы, чтобы Соловьёв_Егор выполнил свои обещания
Цитата Сообщение от Соловьёв_Егор
буду сидеть до последнего...пока не сделаю
и
Цитата Сообщение от Соловьёв_Егор
просто подумал и решил, что сам сделаю
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2013, 10:50
Помогаю со студенческими работами здесь

Изменение программы
Здравствуйте, я недавно просил помочь мне с программой (найти в ней ошибку), спасибо, вы помогли. Теперь мне нужно эту программу (а точнее...

Изменение программы.
У меня есть программа которая рисует гиперболы и вычисляет для них фокусы, эксцентриситет, директрисы. Так же рисует асимптоты, полуоси и...

Изменение программы
Помогите исправить программу. Требуется найти произведение элементов массива, не равных 0 и стоящих на четных местах (с помощью оператора...

Изменение программы
Доброе время суток. Я не программист, но однажды увидел элементарнейшую программку для создания эффекта бегущих огней. Изменяя...

Изменение программы
Доброго вечера! Пролог открыл в 1-й раз. Лабораторные работа готова, нужно её изменить под свой вариант! В компилятор загрузил прогу, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru