Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 14:31   #21
djonatan98
Форумчанин
 
Регистрация: 15.04.2012
Сообщений: 103
По умолчанию

При запуске проассемблированной программы вылетает:

Код:
APPCRASH
  Имя приложения:	new.exe
  Версия приложения:	0.0.0.0
  Отметка времени приложения:	506cc8a5
  Имя модуля с ошибкой:	StackHash_7d41
  Версия модуля с ошибкой:	0.0.0.0
  Отметка времени модуля с ошибкой:	00000000
  Код исключения:	c0000005
  Смещение исключения:	00000000
  Версия ОС:	6.1.7600.2.0.0.256.1
  Код языка:	1049
djonatan98 вне форума Ответить с цитированием
Старый 07.10.2012, 11:08   #22
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Ошибка доступа к памяти.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 07.10.2012, 15:35   #23
djonatan98
Форумчанин
 
Регистрация: 15.04.2012
Сообщений: 103
По умолчанию

У меня имеется bat-файл:

Код:
 @echo off
cls
 
REM ну сюда впишите свои пути
SET PATH=C:\Masm32\bin
SET INCLUDE=C:\Masm32\INCLUDE
SET LIB=C:\Masm32\LIB
 

 
REM компилируем исходник


ML /nologo -c -coff %1.asm
if errorlevel 1 goto terminate
 

LINK /nologo %1.obj /SUBSYSTEM:WINDOWS /STUB:64stub.exe /FILEALIGN:512 /VERSION:4.0 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR /ignore:4078 /RELEASE /BASE:0x400000
 
REM ключей тут много, я описывать их не буду, вот самый примитивный вариант линкования:
rem LINK32 /nologo %1.obj  /SUBSYSTEM:WINDOWS
 
if errorLevel 1 goto terminate
 
echo OK
 
:terminate
им ассеблирую программу при сборке а линковщику также нужно указать, что в секцию кода можно писать:

Код:
C:\masm32\bin\ml /nologo /c /coff main.asm
C:\masm32\bin\link /nologo /subsystem:windows /out:bin\main.exe /SECTION:.text,rwe main.obj

Пробовал проассемблировать следующим bat-файлом, но компилятор выдал ошибку

Код:
@echo off
cls
 
REM ну сюда впишите свои пути
SET PATH=C:\Masm32\bin
SET INCLUDE=C:\Masm32\INCLUDE
SET LIB=C:\Masm32\LIB
  
REM компилируем исходник

C:\masm32\bin\ml /nologo /c /coff new.asm
C:\masm32\bin\link /nologo /subsystem:windows /out:include\new.exe /SECTION:.text,rwe new.obj

LINK /nologo %1.obj /SUBSYSTEM:WINDOWS /STUB:64stub.exe /FILEALIGN:512 /VERSION:4.0 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR /ignore:4078 /RELEASE /BASE:0x400000
 
REM ключей тут много, я описывать их не буду, вот самый примитивный вариант линкования:
rem LINK32 /nologo %1.obj  /SUBSYSTEM:WINDOWS
 
if errorLevel 1 goto terminate
 
echo OK
 
:terminate
как разрешить запись в секцию кода-?

Последний раз редактировалось djonatan98; 07.10.2012 в 17:57.
djonatan98 вне форума Ответить с цитированием
Старый 08.10.2012, 16:52   #24
djonatan98
Форумчанин
 
Регистрация: 15.04.2012
Сообщений: 103
По умолчанию

Так что никто не знает, как разрешить запись в секцию кода-?
djonatan98 вне форума Ответить с цитированием
Старый 09.10.2012, 18:00   #25
djonatan98
Форумчанин
 
Регистрация: 15.04.2012
Сообщений: 103
По умолчанию

Код:

Программа почти заработала, запустилась и вывела консольное окно, реагировала на клавиши ENTER и 7, но после запуска операционная система зависла на несколько секунд а потом окно консольной программы вылетело с ошибкой - [/I]https://[/B]http://s003.radikal.ru/i...693ee79dd4.jpg

выдает:

Код:

Код:
Имя события проблемы:	APPCRASH
  Имя приложения:	ntvdm.exe
  Версия приложения:	6.1.7600.16385
  Отметка времени приложения:	4a5bc158
  Имя модуля с ошибкой:	StackHash_2264
  Версия модуля с ошибкой:	0.0.0.0
  Отметка времени модуля с ошибкой:	00000000
  Код исключения:	c0000005
  Смещение исключения:	00000b15
  Версия ОС:	6.1.7600.2.0.0.256.1
  Код языка:	1049
  Дополнительные сведения 1:	2264
  Дополнительные сведения 2:	2264db07e74365624c50317d7b856ae9
  Дополнительные сведения 3:	875f
  Дополнительные сведения 4:	875fa2ef9d2bdca96466e8af55d

по идее должна выводить сообщения:
Код:
"заражение"
"вы действительно хотите запустить программу ?"
вот код выводящий сообщение
Код:

Код:
 Вызываем MessageBoxA
    push  24h
    pushz "Заражение"
    pushz "Вы действительно хотите запустить эту программу?"
    push  0
    call  eax
    mov   ebx, eax
    pop   eax
проассемблировал этим bat-файлом с атрибутом W

Привожу bat-файл:

Код:

Код:
@echo off
cls
 
REM ну сюда впишите свои пути
SET PATH=C:\Masm32\bin
SET INCLUDE=C:\Masm32\INCLUDE
SET LIB=C:\Masm32\LIB
 
REM компилируем исходник
ML /nologo -c -coff %1.asm
if errorlevel 1 goto terminate
 

LINK /nologo %1.obj /SUBSYSTEM:WINDOWS /STUB:64stub.exe /FILEALIGN:512 /VERSION:4.0 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,W
 /ignore:4078 /RELEASE /BASE:0x400000
 
REM ключей тут много, я описывать их не буду, вот самый примитивный вариант линкования:
rem LINK32 /nologo %1.obj  /SUBSYSTEM:WINDOWS
 
if errorLevel 1 goto terminate
 
echo OK:
terminate

Цитата:
пробовал проассемблировать с атрибутами ERW результат тот же, консольное окно запускается на несколько секунд, после чего выдается сообщение об ошибке

Последний раз редактировалось djonatan98; 09.10.2012 в 21:35.
djonatan98 вне форума Ответить с цитированием
Старый 09.10.2012, 21:23   #26
djonatan98
Форумчанин
 
Регистрация: 15.04.2012
Сообщений: 103
По умолчанию

Написал bat-файл с атрибутами RWE - чтоение, запись и выполнение секции кода:

Код:
@echo off

if exist "%1.obj" del "%1.obj"
if exist "%1.exe" del "%1.exe"

\masm32\bin\ml /c /coff "%1.asm"
if errorlevel 1 goto errasm

if not exist rsrc.obj goto nores

\masm32\bin\ml /c /coff "%1.asm"
\masm32\bin\link /SUBSYSTEM:WINDOWS /OUT:"%1.exe" /SECTION:.text,RWE "%1.obj" rsrc.obj
if errorlevel 1 goto errlink

dir "%1.*"
goto TheEnd

:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF "%1.obj"
if errorlevel 1 goto errlink
dir "%1.*"
goto TheEnd

:errlink
echo _
echo Link error
goto TheEnd

:errasm
echo _
echo Assembly Error
goto TheEnd

:TheEnd
прассемблировал:

http://s019.radikal.ru/i631/1210/45/5d6cf9d06a0d.jpg

программа собралась без ошибок в exe-файл, попробовал запустить слетает, хотя первый раз ассемблировал с атрибутом w программа запустилась и работала нормально несколько минут, как полноценное консольное приложение под win32, все последующие попытки были безуспешны видим связано с переменной программной средой или с измененими в реестре
djonatan98 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56