![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.05.2013
Сообщений: 33
|
![]()
Пишу лабу. Задание, сделать программу паразит. Паразит находит exe-шник, записывает сначала себя, потом программу этого exe-шника.
Для начала решил хотя бы сделать, чтобы находила exe файл, и делала из него себя. Но вылетают ошибки. Подскажите в чем проблема? если поменять значение _virusLength на 100, то программа выполняется, exe-шники полностью не записываются (я так понял, при таком размере _virusLength, программа вся не считывается, а только её кусок), если поставить 1000, то после выполнения readln выдает stack overflow at 0x00408c42, если поставить 10000, 100000, 1000000 - то выдает I/O error 998. Код:
|
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 25.05.2013
Сообщений: 33
|
![]() Цитата:
_virusLength объявил как переменную longint. _virusLength := GetFileSize(FileOpen(ParamStr(0),fm OpenRead), nil); посмотрел, размер не записывается, в переменную идет -1. Попробовал так. Код:
Если убрать единички, то вылетает ошибка I/O error 998 |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Karateka А если система 64 бита, программа будет лепить 32 битный код к 64 битному? Забавная фиговина получится, и к тому же полностью недееспособная. Если windows/антивирус вовремя не остановят, крах системы гарантирован.
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 25.05.2013
Сообщений: 33
|
![]() |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 08.05.2009
Сообщений: 247
|
![]()
BlockRead(_file,_virusBuff[0],_virusLength); что это?
sizeof(_virusBuff[0]) = 1 вы перезаписываете весь файл каким-то одним символом.
Мой сайт
Цитата:
|
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 25.05.2013
Сообщений: 33
|
![]() Цитата:
Если пишу просто BlockRead(_file,_virusBuff,_virusLe ngth), то вылетает ошибка I/O error 998. Просто где-то прочитал что нужно указывать начальный элемент для динамического массива. |
|
![]() |
![]() |
![]() |
#9 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Может Length - 1? А ошибка ввиду выхода за пределы буфера?
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 08.05.2009
Сообщений: 247
|
![]()
не то процитировал, хотя BlockRead(_file,_virusBuff[0],_virusLength); пытается все впихнуть в один элемент массива??
_virusBuff : array of char; также это относится и к BlockWrite(_file2,_virusBuff[0],_virusLength); Код:
Мой сайт
Цитата:
Последний раз редактировалось DarkEvil; 15.05.2014 в 14:29. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. | миньен | Софт | 7 | 02.03.2014 00:28 |
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел | Yegorka | Lazarus, Free Pascal, CodeTyphon | 13 | 20.12.2012 18:02 |
Программа с применением записей и программа с применение множеств | smert99 | Помощь студентам | 0 | 16.06.2011 23:14 |
Программа открыается если есть другая программа. | bookkc | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 14.10.2009 20:09 |