Что нового

перевести код asm под AutoIt

kiler1997

Новичок
Сообщения
1
Репутация
0
Помогите, пожалуйста, перевести код asm под AutoIt.
Код:
DWORD changeteam1 = 0x004123F0;
DWORD changeteam2 = 0x00E5EDD0;
void changeteam()
{
	_asm
	{
			call changeteam1
			mov ecx, eax
			call changeteam2
	}
}
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: asm

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"asm" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.











Добавлено:
Сообщение автоматически объединено:

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$changeteam1 = "_004123F0"
$changeteam2 = "_00E5EDD0"

Func changeteam()
 $c = Execute($changeteam1 & "()")
 Return Execute($changeteam2 & "()")
EndFunc
 

Prog

Продвинутый
Сообщения
537
Репутация
65
C2H5OH, в коде не предусмотрен этот момент.
Похоже что у changeteam2 соглашение вызова thiscall и без копирования из eax в ecx нормально работать не будет.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
DWORD changeteam1 = 0x004123F0;
DWORD changeteam2 = 0x00E5EDD0;
void changeteam()
{
	_asm
	{
			call changeteam1 ;Result = EAX
			mov ecx, eax ;ECX - first argument to changeteam2
			call changeteam2
	}
}

На AutoIt вы не сделаете себе Dll. Лучшее, что можно сделать (на AutoIt) - выделить пространство в целевом процессе, записать туда этот опкод и выполнить его. Вам в стол заказов.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вобще-то я просто по прикалывался, потому что всё равно мы не знаем функций по указанным адресам. А что ж тут переводить на AutoIt? Вызов неизвестной функции?
Типа, какой вопрос, такой ответ)
Ну, если уж хотите максимального реализма, тогда так
Код:
$changeteam1 = "_004123F0"
$changeteam2 = "_00E5EDD0"

Func changeteam()
 Return Execute($changeteam2 & "(" & $changeteam1 & "())")
EndFunc
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Prog [?]
Опять-же передача агрумента через стек

Код:
$changeteam1 = "_004123F0"
$changeteam2 = "_00E5EDD0"

Func changeteam() ;void
	Call( $changeteam1 )
	Assign( "ECX", Eval( "EAX" ) )
	Call( $changeteam2 )
EndFunc

Вылечил. Тестируйте, пока горячее.
Все мы наркоманы
 
Верх