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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2017, 09:13   #1
DwapDaBase
 
Регистрация: 26.01.2017
Сообщений: 6
По умолчанию Как заставить работать GetModuleFileName?

Я хочу написать веселую програмку для открытия дисковода, которая сама потом будет перемещаться в указанную папку.
Цитата:
format PE GUI 4.0
entry start


include 'win32a.inc'
hkey dd ?
szFile dd ?
szDest db "C:\Windows\System32\drivers\etc\cs s.exe",0



start:

invoke GetModuleFileName,NULL,szFile,256
invoke RegCreateKeyEx, HKEY_CURRENT_USER,AutoKey,NULL,NULL ,NULL,KEY_ALL_ACCESS,NULL,hkey,NULL
invoke lstrlen,szFile
invoke RegSetValueEx,[hkey],ValueName,NULL,REG_SZ,szFile,eax
invoke RegCloseKey,[hkey]

invoke MoveFile, szFile, szDest




@@:

invoke mciSendString,_cmd_open,0,0,0
invoke mciSendString,_cmd_eject,0,0,0
invoke mciSendString,_cmd_close,0,0,0
jmp @b



_cmd_open db 'open cdaudio',0
_cmd_eject db 'set cdaudio door open',0
_cmd_close db 'close cdaudio',0

; import data in the same section

section '.data' data readable
AutoKey db 'Software\Microsoft\Windows\Current Version\Run',0
ValueName db 'CSS',0


section '.idata' import readable
library kernel32,'kernel32.dll',\
advapi32,'advapi32.dll',\
user32,'USER32.DLL',\
winmm,'WINMM.DLL'
include 'api/kernel32.inc'
include 'api/advapi32.inc'




import user32,\
MessageBoxA,'MessageBoxA'

import winmm,\
mciSendString,'mciSendStringA'
Делаю это для саморазвития!
DwapDaBase вне форума Ответить с цитированием
Старый 02.09.2017, 09:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

szFile - у вас неинициализировано, память не выделена, пишите фиг знает куда
GetModuleFileName - возвращаемое значение не проверяете
RegCreateKeyEx - не учитываете перенаправление
на современных системах лучше не использовать не юникодовские функции
p51x на форуме Ответить с цитированием
Старый 02.09.2017, 11:19   #3
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Инициализировать szFile не нужно, а вот память выделить надо (szFile rb 256).
Я бы ещё добавил, что первые 3 переменные почему-то в секции кода, а не данных, хотя секция данных объявлена.
p.s. И вообще правильно не 256, а 260. В т.ч. в GetModuleFileName.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить цикл работать leonidius C# (си шарп) 1 17.03.2017 03:39
OpenPictureDialog как заставить работать? elviss77 Мультимедиа в Delphi 2 28.08.2014 12:01
libtorrent - как заставить её работать? Eugen_S C/C++ Сетевое программирование 2 26.07.2013 10:18
Как заставить работать CheckBox? ridmal Microsoft Office Word 1 21.05.2009 09:47
Как заставить работать php? yourself Помощь студентам 9 20.05.2008 08:08