[Asm] Прочитать параметры - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем. При поддержке: Рейтинг серверов самых популярных online-игр

Ответ
Опции темы
Непрочитано 28.08.2016, 00:18   #11
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Akumu Посмотреть сообщение
Использовать функцию strcpy, вместо копирования первых 8 байт регистром rax.
https://github.com/Emeraude/MinilibC...ree/master/src к примеру

Добавлено через 42 секунды
Только буффер сразу сделайте достаточно большим
что не пойму как заюзать..
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 28.08.2016, 00:28   #12
Аватар для Akumu
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Sojang Посмотреть сообщение
что не пойму как заюзать..
Я на самом деле 64х ассемблером не увлекался никогда... В rsi указатель на исходную строку, в rdi буффер куда будет скопирована строка.

Код:
	global strcpy
	section .text

strcpy:
	push rbp
	mov rbp, rsp

	xor rcx, rcx
loop:
	cmp BYTE [rsi + rcx], 0
	je end
	mov al, [rsi + rcx]
	mov [rdi + rcx], al
	inc rcx
	jmp loop

end:
	mov BYTE [rdi + rcx], 0
	mov rax, rdi

	mov rsp, rbp
	pop rbp
	ret
Akumu вне форума Ответить с цитированием
Непрочитано 28.08.2016, 00:38   #13
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Akumu Посмотреть сообщение
Я на самом деле 64х ассемблером не увлекался никогда... В rsi указатель на исходную строку, в rdi буффер куда будет скопирована строка.

Код:
	global strcpy
	section .text

strcpy:
	push rbp
	mov rbp, rsp

	xor rcx, rcx
loop:
	cmp BYTE [rsi + rcx], 0
	je end
	mov al, [rsi + rcx]
	mov [rdi + rcx], al
	inc rcx
	jmp loop

end:
	mov BYTE [rdi + rcx], 0
	mov rax, rdi

	mov rsp, rbp
	pop rbp
	ret
спасибо, однако что то пошло не так
 
.const
Init dq 140019EA8h
Printf dq 140009148h
.data
msg db 32
.code
onLog proc
mov rsi, [rcx]
mov rdi, [offset msg]
call strcpy
xor     ecx, ecx
call Init
mov     rcx, rax
lea     rdx, msg
call Printf
ret
onLog endp
 
; test
strcpy proc
	push rbp
	mov rbp, rsp
 
	xor rcx, rcx
strcpy endp
loopfunc proc
	cmp BYTE ptr [rsi + rcx], 0
	je endfunc
	mov al, [rsi + rcx]
	mov [rdi + rcx], al
	inc rcx
	jmp loopfunc
loopfunc endp
endfunc proc
	mov BYTE ptr [rdi + rcx], 0
	mov rax, rdi
 
	mov rsp, rbp
	pop rbp
	ret
endfunc endp
 
end
 
Code: ASM
вот такой код не работает
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 28.08.2016, 11:32   #14
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

все еще актуально..
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 28.08.2016, 12:49   #15
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

может размер буффера ?
nn03 вне форума Ответить с цитированием
Непрочитано 28.08.2016, 12:59   #16
Аватар для Akumu
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

format PE64 console
entry start
 
include 'win64a.inc'
 
section '.text' code readable executable 
 
start: 
	lea rax,[testmsg]
	call onLog
	xor rax,rax 
	call [ExitProcess] 
	int3
 
onLog:
	; fix me
	mov rsi,rax 		; src str
	lea rdi,[msgbuf] 	; dst buff
	mov rdx, 511 		; max chars
	call strncpy		; copt string from [rax] to [msgbuf]
	retn
	int3
 
strncpy:
	push rbp
	mov rbp, rsp
 
	xor rcx, rcx
jloop:
	cmp BYTE [rsi + rcx], 0
	je jend
	cmp rcx, rdx
	je jend
	mov al, [rsi + rcx]
	mov [rdi + rcx], al
	inc rcx
	jmp jloop
 
jend:
	mov BYTE [rdi + rcx], 0
	mov rax, rdi
 
	mov rsp, rbp
	pop rbp
	ret
 
section '.data' data readable writeable
	testmsg db "This is a test message!",0
	msgbuf rb 512
 
section '.idata' import readable writeable
	library kernel32,'KERNEL32.DLL'
	include 'api/kernel32.inc'
Code: ASM
fasm
Akumu вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 28.08.2016, 13:00   #17
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

msg db 32 ; это буфер в один байт со значением 0x20
msg db 32 dup(0) ; надо так. это буфер в 32 байта, заполненный нулями

и если правильно понял, то
mov rsi, [rcx] ; это копирует в rsi байты по адресу
mov rsi, rcx ; а надо так, чтобы поместить в rsi сам адрес
Ugly вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 28.08.2016, 13:40   #18
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Ugly Посмотреть сообщение
msg db 32 ; это буфер в один байт со значением 0x20
msg db 32 dup(0) ; надо так. это буфер в 32 байта, заполненный нулями

и если правильно понял, то
mov rsi, [rcx] ; это копирует в rsi байты по адресу
mov rsi, rcx ; а надо так, чтобы поместить в rsi сам адрес
Первое копирует qword по адресу rcx в rsi
Второе копирует содержимое регистра rcx в rsi
f1redark вне форума Ответить с цитированием
Непрочитано 28.08.2016, 13:42   #19
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Akumu Посмотреть сообщение
format PE64 console
entry start
 
include 'win64a.inc'
 
section '.text' code readable executable 
 
start: 
	lea rax,[testmsg]
	call onLog
	xor rax,rax 
	call [ExitProcess] 
	int3
 
onLog:
	; fix me
	mov rsi,rax 		; src str
	lea rdi,[msgbuf] 	; dst buff
	mov rdx, 511 		; max chars
	call strncpy		; copt string from [rax] to [msgbuf]
	retn
	int3
 
strncpy:
	push rbp
	mov rbp, rsp
 
	xor rcx, rcx
jloop:
	cmp BYTE [rsi + rcx], 0
	je jend
	cmp rcx, rdx
	je jend
	mov al, [rsi + rcx]
	mov [rdi + rcx], al
	inc rcx
	jmp jloop
 
jend:
	mov BYTE [rdi + rcx], 0
	mov rax, rdi
 
	mov rsp, rbp
	pop rbp
	ret
 
section '.data' data readable writeable
	testmsg db "This is a test message!",0
	msgbuf rb 512
 
section '.idata' import readable writeable
	library kernel32,'KERNEL32.DLL'
	include 'api/kernel32.inc'
Code: ASM
fasm
Цитата:
Сообщение от Ugly Посмотреть сообщение
msg db 32 ; это буфер в один байт со значением 0x20
msg db 32 dup(0) ; надо так. это буфер в 32 байта, заполненный нулями

и если правильно понял, то
mov rsi, [rcx] ; это копирует в rsi байты по адресу
mov rsi, rcx ; а надо так, чтобы поместить в rsi сам адрес
Спасибо ребят) все работает.
Мне тут кое где сказали что выделять память так(msg db 32 dup(0)) не совсем правильно..мол есть лучше способы. Можете по этому поводу подсказать?
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 28.08.2016, 18:02   #20
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Sojang Посмотреть сообщение
Спасибо ребят) все работает.
Мне тут кое где сказали что выделять память так(msg db 32 dup(0)) не совсем правильно..мол есть лучше способы. Можете по этому поводу подсказать?
Нормально, можно еще msg rb 32, если речь про фасм
f1redark вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прочитать строку в Say2 mego4el Lineage II 8 29.08.2012 06:12
Параметры таблицы heroes slimline Lineage II 11 11.05.2012 19:37
Параметры базы. FilipMorris Архив 0 25.10.2011 16:24
Где поменять параметры ФА и КОЛ? operatorr Lineage II 7 11.04.2009 15:41
[help]Параметры запуска явы на Fedora 9 Stema Lineage II 0 19.03.2009 18:13


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 00:31. Часовой пояс GMT +3.

Вверх