|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 17, 2004 15:08:23 Здравствуйте! Возник вопрос, связанный с ассемблером NASM. Каким образом можно реализовать структуру: startinfo STARTUPINFO <?> processinfo PROCESS_INFORMATION <?> Для вызова функции CreateProcessA? В документации я нашёл только разымытые описания реализации структур, но сформировать startinfo /processinfo самому у меня не получилось. Может быть вы приведёте примеры именно этих структур? PS: может быть, кто-нибудь подкинет ссылку на хороший русский мануала по NASM? Заранее спасибо! 1990. |
|
|
Дата: Мар 17, 2004 22:43:02 Буду более точным: как вызвать функцию CreateProcessA. Пожалуйста, расскажите как использовать структуры и как будет выглядить сам код. |
|
|
Дата: Мар 17, 2004 23:54:11 У меня чиста глупый вопрос: эта штука описана довольно таки подробно в MSDN. Тогда в чем вопрос? И вообще вызов этой PROC управляется неплохо и с нулевыми параметрами в STARTUPINFO и всё потом (разультат) пишется в PROCESS_INFORMATION, который по своей структуре довольно таки прост. Еше раз по-подробнее - "в чем вопрос" |
|
|
Дата: Мар 18, 2004 01:27:46 1990 Я вот не пойму, если у тебя такие проблемы возникают с nasm'ом то зачем он тебе нужен. Если ты споткнулся на банальном CreateProcess то как же ты будешь кодить дальше. ЗЫ: наверняка у nasm'а есть свой форум, попробуй сходить на оф. сайт. |
|
|
Дата: Мар 18, 2004 10:57:05 · Поправил: 1990 PavPS Ты думаешь я MSDN не читал или не видел, как вызывал CreateProcessA? Структуры processinfo\st. отличаются от структур в MASM или TASM. У меня нет никаких включаемых файлов для NASM (Win32с.inc). Поэтому приходится формировать структуры самому и примеров никаких я не было. Вопрос был в том, что возможно у кого были примеры хотя бы одной структуры и примеры вызова или толковые мануалы. Сейчас я это всё нашёл. Asterix Мне нравится синтаксис NASM. Без формальностей, как MASM. (Это не укор MASM). Без макросов и ... главное, чтобы было как можно более сложно! Я, как уже говорил, разобрался с проблемой. А как кодить? Я ведь и MASM не знал как быть вначале... ;) А ты на чём программируешь? На форуме побывал и сразу получил ответ. |
|
|
Дата: Мар 18, 2004 11:27:16 1990 хорошим тоном было бы изложение решения здесь: линки, пример. Если человек наткнётся в поиске на эту тему, будет ему шастье. имхо |
|
|
Дата: Мар 18, 2004 14:40:30 > А ты на чём программируешь? masm32&fasm ;-) > Без макросов и ... главное, чтобы было как можно более сложно! А тебя никто и не заставляет использовать макросы, можешь вместо .IF/.ENDIF использовать cmp ..., ... jnz ... и вместо invoke - call ;-) и т. д. |
|
|
Дата: Мар 18, 2004 15:44:20 · Поправил: Dr.Golova Как делать вложенные структуры я не знаю - не прихдилось, обходился таким методом: bits 32 struc CONTEXT .ContextFlags: resd 1 .iDr0: resd 1 .iDr1: resd 1 .iDr2: resd 1 .iDr3: resd 1 .iDr6: resd 1 .iDr7: resd 1 .FloatSave: resd 01Ch ;FLOATING_SAVE_AREA <> .regGs: resd 1 .regFs: resd 1 .regEs: resd 1 .regDs: resd 1 .regEdi: resd 1 .regEsi: resd 1 .regEbx: resd 1 .regEdx: resd 1 .regEcx: resd 1 .regEax: resd 1 .regEbp: resd 1 .regEip: resd 1 .regCs: resd 1 .regFlag: resd 1 .regEsp: resd 1 .regSs: resd 1 ; Other unneeded shit... endstruc ... mov edi, [esp + 0Ch + 8] ;; get context ptr add dword [edi + CONTEXT.regEip], 02 ;; skip ЗЫ: Nasm действительно приятнее остальных монструозных поделок. |
|
|
Дата: Мар 18, 2004 16:03:31 Asterix Это верно! Никто... К MASM я отношусь попрежнему неплохо. Dr.Golova Спасибо! На основе этонго буду тренироваться. ЗЫ: Nasm действительно приятнее остальных монструозных поделок. - здорово сказано! |
|
|
Дата: Мар 18, 2004 16:05:17 · Поправил: 1990 Dr.Golova А как вообще делается CreateProcess (как сделан у тебя) - я что-то сомневаюсь в своей правоте, по поводу одного пункта... xzazet Я постараюсь. Может быть даже мануал напишу (когда-нибудь). |
|
|
Дата: Мар 18, 2004 17:18:33 Здаётся мне что nasm изначально был заточен под nix'ы, какой там CreateProcess... ;-) |
|
|
Дата: Мар 18, 2004 20:03:56 Asterix Вполне возможно, но сейчас много пиплов пишут на NASM под Windows. Экзотично... А как будет CreateProcessA на FASM. |
|
|
Дата: Мар 18, 2004 20:25:17format PE GUI 4.0
entry start
include '%fasminc%\win32a.inc'
section '.data' data readable writeable
szFileName db "target.exe",0
StartupInfo STARTUPINFO
ProcessInfo PROCESSINFO
section '.code' code readable executable
start:
mov [StartupInfo.cb], STARTUPINFO
invoke CreateProcess, szFileName, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED,\
NULL, NULL, StartupInfo, ProcessInfo
test eax, eax
jz @error
invoke ResumeThread, [ProcessInfo.hThread]
invoke CloseHandle, [ProcessInfo.hThread]
invoke CloseHandle, [ProcessInfo.hProcess]
@error:
invoke ExitProcess, 0
section '.idata' import data readable writeable
library kernel, 'KERNEL32.DLL'
import kernel,\
CreateProcess, 'CreateProcessA',\
ResumeThread, 'ResumeThread',\
CloseHandle, 'CloseHandle',\
ExitProcess, 'ExitProcess' |
|
|
Дата: Мар 18, 2004 20:51:25 Asterix Спасибо! |
|
|
Дата: Мар 18, 2004 23:45:25 Asterix mov [StartupInfo.cb], STARTUPINFO ИМХО лучпе будет: mov [StartupInfo.cb], sizeof.STARTUPINFO В FASM-е только имя означает адрес а не размер. А с первого взгляда трудно определить что STARTUPINFO - структура. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061 |