Sasisa4ka
1

Проход по PSP (префикс программного сегмента) в EXE-файле

30.09.2010, 00:28. Показов 4199. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, Друзья! Очень надеюсь на Вашу помощь!
У меня такое задание:
"Написать программу на Assembler (желательно, TASM, но не принципиально), с помощью которой можно открыть EXE любой другой программы. Но! Не выполнить эту программу, а выделить для себя её PSP (префикс программного сегмента) и расшифровать. Т.е. вывести табличку, сколько байт под что выделено в памяти. Табличка вида: http://www.frolov-lib.ru/books/bsp/v18/ch3_3.html (самая первая таблица - формат PSP). Вот такую же табличку она должна выводить для любой программы. Если 0 байт, то так и пишет. Если 2 байта, то 2 байта. И смещение тоже."

Прошу! Помогите! Ваш друг.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2010, 00:28
Ответы с готовыми решениями:

Добавить в программу команду, в которой используется префикс замены сегмента
.model small .stack 80h .data query db "Hello, World!$" numb dw 40 arr db...

Работа с префиксом программного сегмента
Нужно написать прогу по: Лабораторная работа Работа с префиксом программного сегмента - PSP Цель...

Разработать программу, производящую форматный вывод на печать своего Префикса Программного Сегмента. MS DOS
СРОЧНО!!! кто знает что делать,пишите ПЖ?!!

Префикс __imp__ попадает в exe-шный модуль из DLL
Помогите плз убрать префикс. Импортирую Переменные из Длл в екзешник, явным способом по книже...

3
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
30.09.2010, 16:45 2
да уж не тривиальная задачка. Вот набросал побыстрому - загружается psp в структуру my_psp - осталось тока сделать ввод с командной строки (это совсем не сложно) и выводить на экран содержимое структуры my_psp(это тоже не сложно - но долго, уж очень она большая))
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
.model small
.stack 100h
 
PSP struc
int20h  dw ?
mem_top dw ?
reserv1     db ?
call_dsp    db 5 dup(?)
term_adr    dd ?
cbrk_adr    dd ?
crit_err    dd ?
parn_psp    dw ?
file_tab    db 20 dup(?)
env_seg dw ?
ss_sp   dd ?
max_open     dw ?
file_tba    dd ?
reserv2 db 24 dup(?)
disp    db 3 dup(?)
reserv3 db 9 dup(?)
fcb1    db 16 dup(?)
fcb2    db 20 dup(?)
p_size  db ?
parm    db 127 dup(?)
PSP ends
 
.data
path    db  'cv.exe', 0
com_line    db  9, 'Param Str'
epb dw  0
cmd_off dw  ?
cmd_seg dw  ?
_fcb1   dd  ?
_fcb2   dd  ?
entry_p_ss dd   ?
entry_p_cs dd   ?
 
my_psp  PSP <>
 
.code
.startup
 
mov ah, 4ah
mov bx, 200h
int 21h
 
lea bx, com_line
mov cmd_off, bx
mov cmd_seg, ds
 
mov ax, ds
mov es, ax
 
lea bx, epb
lea dx, path
mov ax, 4b01h
int 21h
 
push    ds
mov ax, word ptr [entry_p_cs+2]
sub ax, 10h
mov ds, ax
;mov    si, word ptr [entry_p_cs]
mov si, 0h
lea di, my_psp
mov cx, 100h
rep movsb
pop ds
 
xor ah, ah
int 16h
mov ah, 4ch
int 21h
end
Добавлено через 19 минут
да забыл сказать выделять память тоже надо смотреть скока - по заголовку exeшника, а то не будет работать корректно. И завершаться нормально тоже не будет, сначала нужно выгрузить из памяти прогу.
0
9 / 8 / 1
Регистрация: 05.08.2011
Сообщений: 56
16.09.2012, 08:54 3
Вопрос с PSP решается просто. Нужно рассмотреть исследуемый EXE как текст, загрузить первые
130 байт в текстовый буфер и дальше разбить побайтно, это без проблем. Но вот требование выводить еще и все значения куда интереснее. Они ж 16-ти ричные, а в десятичку стандартного
перевода нет (особенно в TASM). Нужно ли делать соответствующую процедуру?
0
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
17.09.2012, 03:46 4
Цитата Сообщение от mac_alleb Посмотреть сообщение
Они ж 16-ти ричные, а в десятичку стандартного
перевода нет (особенно в TASM). Нужно ли делать соответствующую процедуру?
Закрепленная тема Ввод и вывод чисел в различных системах счисления
0
17.09.2012, 03:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2012, 03:46
Помогаю со студенческими работами здесь

Декодировать команды и данные в соответствии с приведенным дампом сегмента кода и содержимым сегмента данных
.8086 Декодировать команды и данные в соответствии с приведенным дампом сегмента кода и содержимым...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru