PDA

Просмотр полной версии : fasm реестр


BastardFromHell
09.03.2010, 06:40
чот не получается в реестр ключ добавить, что не так:???
include 'win32a.inc'
format PE GUI 4.0
entry start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
section '.data' data readable
reestrsub db 'Software\Microsoft\Windows\CurrentVersion\Run',0
rname1 db 'netagent',0
rname2 db 'test',0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
section '.code' code readable executable
start:



push esp
push KEY_ALL_ACCESS
push 0
push reestrsub
push HKEY_LOCAL_MACHINE
call [RegOpenKeyEx]
push eax
pop esp

push 4
push rname2
push REG_SZ
push 0
push rname1
push eax
call [RegSetValueEx]

push 0
call [ExitProcess]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
section 'idata' import data readable

library kernel32,'kernel32.dll'
import kernel32,\
ExitProcess,'ExitProcess'

library advapi32,'advapi32,dll'
import advapi32,\
RegSetValueEx,'RegSetValueEx',\
RegOpenKeyEx,'RegOpenKeyEx'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Gar|k
09.03.2010, 09:45
сделай проверку на открытие ключа... если ты не администратор то запись в HKEY_LOCAL_MACHINE тебе по идее запрещена.

так ВРОДЕ все правильно...

BastardFromHell
09.03.2010, 10:03
да всё норм, черз invoke работает. А так - нет

becensed
09.03.2010, 15:16
для начала на импорт внимание обрати, потом почитай, зачем нужны регистры, в частности esp. Потом почитай, как надо добавлять значение в реестр.

BastardFromHell
09.03.2010, 16:43
для начала на импорт внимание обрати, потом почитай, зачем нужны регистры, в частности esp. Потом почитай, как надо добавлять значение в реестр.
тоесть ты тоже не знаешь?

ntldr
09.03.2010, 17:06
push esp
push KEY_ALL_ACCESS
push 0
push reestrsub
push HKEY_LOCAL_MACHINE
call [RegOpenKeyEx]
push eax - пихаем в стек хендл ключа
pop esp - из стека берем это значение, прописываем в esp, получаем говно


если не хочешь invoke, делай pushad/popad, либо вообще не делай push esp, состояние регистров в юзер-моде не особо критично ( если конечно в них нет важных данных)

BastardFromHell
09.03.2010, 17:16
push esp
push KEY_ALL_ACCESS
push 0
push reestrsub
push HKEY_LOCAL_MACHINE
call [RegOpenKeyEx]
push eax - пихаем в стек хендл ключа
pop esp - из стека берем это значение, прописываем в esp, получаем говно


если не хочешь invoke, делай pushad/popad, либо вообще не делай push esp, состояние регистров в юзер-моде не особо критично ( если конечно в них нет важных данных)
так тоже не работает

cheater_man
09.03.2010, 21:50
ты пихаешь в стек

push eax

а где pop???(что ты с ним натворил, не имеет смысла без pop)

becensed
09.03.2010, 22:32
Автор ищет готовое решения и не может подумать над сказанным. Нет смысла ему что-либо объяснять.

BastardFromHell
09.03.2010, 22:44
ну то есть вы сами ничего не знаете

ntldr
09.03.2010, 22:59
это просто лол...
1.
library advapi32,'advapi32,dll' - запятая вместо точки перед "dll"

2.
advapi32 не экспортирует такой функции, как RegOpenKeyEx
Есть RegOpenKeyExA - ansi, и RegOpenKeyExW - юникод
то же самое можно сказать и про RegSetValueEx

3.
push esp
push KEY_ALL_ACCESS
push 0
push reestrsub
push HKEY_LOCAL_MACHINE
call [RegOpenKeyEx]
pop eax

тут попробуй так

BastardFromHell
09.03.2010, 23:11
не работает!