· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› как командную строку заставить понимать команды?

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Фев 24, 2004 15:24:27

Есть отличный bindshell написанный на masm'e.
как можно программно заставить понимать полученную командную строку определённые команды.

ну, тоесть чтоб выполнял какие-то действия при написании определённых команд.

заранее очень благодарен.


Дата: Фев 24, 2004 15:33:22

Если дос команды, то
парсишь то, что ввел и
выполныешь (через WinExec например) command.com /команда
Ясней ставь задачу...


Дата: Фев 24, 2004 15:46:06

bindshell биндит шель на 4444 порту.
через netcat конектишся к этому порту и получаешь командную строку.
как сделать, чтоб при написании там "/restart", она бы выполнила вот этот код
invoke GetCurrentProcess 
invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,ADDR hToken 
invoke LookupPrivilegeValue,NULL,ADDR szShut,addr tkp.Privileges[0].Luid 
mov tkp.PrivilegeCount,1 
mov tkp.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED 
invoke AdjustTokenPrivileges,hToken,FALSE, ADDR tkp, 0, NULL, 0 
invoke ExitWindowsEx,EWX_REBOOT,NULL 


Дата: Фев 24, 2004 16:49:20

KiNDeR
товарищ просит научить его парсить строку. Как я понял, он этого не умеет.


Дата: Фев 24, 2004 17:33:52

Ага, учите плизз, если не трудно.
Или какой-нить подобрый исходник выложите, я сам разберусь.


Дата: Фев 24, 2004 17:44:44

call GetCommandLine
mov esi,eax
mov al, byte ptr [esi]
и так далее...


Дата: Фев 24, 2004 18:06:37

А можно чуть по подробней?


Дата: Фев 24, 2004 20:46:28

Понятно. Старая песня...


Дата: Мар 8, 2004 05:24:44

Уважаемый Flasher, в верхней части этой страницы найдите строчку, в которой есть ссылка "Поиск". Жмёте туда и вводите что-нибудь типа "командная строка" или т.п. В форуме уже не раз поднимался этот вопрос. Читайте внимательно. Будут более глубокие вопросы, задавайте.


Дата: Мар 9, 2004 10:05:22

SolidCode, благодарю за уважительный подход, уважаю таких людей.

и в правду в поиске нашёл то что нужно было, но появилась ещё одни маленькая проблемка...
;clash.inc
	; function prototypes
	CL_ScanArgs  PROTO :DWORD
	CL_ScanArgsX PROTO :DWORD

	; data declarations
	externdef CL_argv:DWORD
	externdef CL_argc:DWORD
	externdef CL_switch:BYTE
;args.asm

.386
.model flat,stdcall

option casemap:none
; ---------------------------------------------------------------------- ---
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\gdi32.inc
include \masm32\include\shell32.inc
include \masm32\include\advapi32.inc
include \masm32\include\masm32.inc
include \masm32\include\winmm.inc

includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\winmm.lib
includelib \masm32\lib\masm32.lib

include clash.inc
includelib clash.lib
; ---------------------------------------------------------------------- ---
	console_init   PROTO
	console_print  PROTO :DWORD
.data?
	w_ConsoleHandle  dd ?
	cchWritten       dd ?
	CommandLine      LPSTR ?

.const
      Er               db "           ne pravilnaya komanda", 0
	HelpText         db "           -h  Help",13,10,0
.code

start:
	invoke console_init
	invoke GetCommandLine
	mov CommandLine,eax
      invoke CL_ScanArgsX, CommandLine

	.if CL_switch['h'] || CL_switch['?']

		invoke console_print, addr HelpText
          
	.else
            invoke console_print, addr Er                                                                          
	.endif

	invoke ExitProcess, 0

console_init proc

	invoke GetStdHandle, STD_OUTPUT_HANDLE
	mov [w_ConsoleHandle],eax

	ret

console_init endp

console_print proc mystr:DWORD
	invoke lstrlen, mystr
	.if eax
		invoke WriteFile, [w_ConsoleHandle],mystr,eax,addr cchWritten,0
	.endif
	ret
console_print endp

end start


вот, кода CL_switch['h'] - всё прекрасно работает, а кода CL_switch['help'] - не хотит.

Не подскажите в чём проблема ?


Дата: Мар 9, 2004 14:05:40

Flasher
Imho clash разработана для односимвольных ключей.
+ версия CL_ScanArgs понимает ситуацию, когда ключи слеплены, т.е. за признаком ключа ('-' или '/') следует несколько символов каждый из которых интерпретируется как отдельный ключ.


Дата: Мар 10, 2004 09:48:18

q_q, говоря по русски, не как нельзя сделать ? :)


Дата: Мар 10, 2004 10:14:54

Flasher
По-русски: в рамках clash ни как.


Дата: Мар 10, 2004 21:27:02

Ладно, больно смотреть, как человек мучается.. :)
Порылся я в закромах и обнаружил свой вариант парсера.
Прилагаю функцию и пример использования.
Функция понимает разделенные пробелами параметры, в том числе и строки в кавычках, а для отделения параметров от имени программы используется спец. символ, который задается в параметрах функции...
В общем, на мой взгляд, удобная функция и пользоваться ей довольно легко... :)))

_640294801__CmdLine.zip


Дата: Мар 11, 2004 09:06:09

dz 3BePIOra
больно смотреть, как человек мучается.. :)
Будет мучиться, пока не сформулирует требования к парсеру.

в закромах и обнаружил свой вариант парсера.
Пусть мучается с другим вариантом? ;-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.091